[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    May 2009
    Beiträge
    29

    Fehlerbehandlung im RPGLE-FREE

    Guten Tag Forum,>>
    Ich hatte gestern wahrscheinlich etwas falsch gemacht, da ich meine Anfrage nicht sehen kann und auch keine Reaktion per mail erhalten habe. Hie noch einmal mein Problem.>>
    >>
    In einem interaktiven Programm wird eine log.File zunächst eingelesen zum Aktualiesieren in Abhängigkeit einer anderen Datei. Dann kann jeder einzelne Satz bearbeitet werden. Wird das Programm von mehreren Anwendern genutzt, gibt es das Problem der Sperren, wenn ein Satz gerade benutzt wird. Ich wollte dies mit einer Monitorgruppe abfangen. >>
    >>
    Aktualiesierung:>>
    monitor; >>
    read dateir;>>
    on-error 1218;>>
    #err = *on;>>
    Endmon; >>
    >>
    Dow not %eof(datei);>>
    If #err *off; >>
    >>
    Aktualisierung>>
    > >
    Endif;>>
    > >
    Nächsten Satz einlesen>>
    monitor; >>
    read dateir;>>
    on-error 1218;>>
    #err = *on;>>
    Endmon; >>
    >>
    Enddo;>>
    >>
    Jetzt folgt die Verarbeitung: -> Subfile füllen -> Satz auswählen und updaten>>
    >>
    Jetzt mein Problem: Es kommt zwar nicht zum Fehler aber das Programm liest nicht den nächsten Satz sondern immer wieder den gesperrten Satz. Wie kann ich die on-error Lösung besser gestalten? Ich möchte nicht mit read(n) einlesen.
    Vielen Dank für eure Hilfe
    kretzsch


  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Mit Read(e) benötigt man keinen Monitor. %error() liefert dann den Status.
    Leider kann man ohne Read(n) gesperrte Sätze nicht überlesen.
    Im Falle der Sperre musst du selber per Read(n) den gesperrten Satz dann überlesen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    May 2009
    Beiträge
    29
    Schade, schade ... aber trotzdem danke.

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Du musst deine Logik überarbeiten.
    Zum Anzeigen aller Sätze per READ(N) die Subfile füllen.
    Zum Bearbeiten eines Satzes dann per CHAIN genau diesen Satz dann sperren.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    May 2009
    Beiträge
    29
    Genau so hatte ich es auch immer gemacht, ich dachte man kann es mit dem Befehl Monitor eleganter lösen.

  6. #6
    Registriert seit
    Oct 2013
    Beiträge
    171
    Das wäre aber ein Drama, wenn sich der Lesebefehl je nach Fehlerüberwachung anders verhielte!
    Aber es passiert logischerweise das absolut Idente, der Lesebefehl kann nicht lesen. Ob man diesen Zustand nun per Bezugszahl, Built-In-Funktion oder MONITOR feststellt, darf für die Position des Dateizeigers keinen Unterschied machen.
    Außerdem sollte man DB-Sätze nur dann sperren, wenn die Updatewahrscheinlichkeit hoch ist.
    Zum Füllen eines Subfiles aber auf keinen Fall, wie Baldur schon völlig richtig angemerkt hat.
    Und selbst wenn es ginge; die Faulheit beim Codieren würde sich da sowieso zur Laufzeit rächen. Man muss nur genug User drauf los lassen.

  7. #7
    Registriert seit
    Jan 2007
    Beiträge
    905
    Zitat Zitat von AG1965_2 Beitrag anzeigen
    Außerdem sollte man DB-Sätze nur dann sperren, wenn die Updatewahrscheinlichkeit hoch ist.
    Und selbst wenn es ginge; die Faulheit beim Codieren würde sich da sowieso zur Laufzeit rächen. Man muss nur genug User drauf los lassen.
    Genau aus diesem Grund verwende ich zum lesen eine logische Inputdatei und eine Updatedatei.
    Und schon sind einige Probleme gelöst.
    kf

  8. #8
    Registriert seit
    Oct 2013
    Beiträge
    171
    Halte ich auch für übertrieben, nur deswegen 2 Datenpfade zu öffnen, wo es doch READ(N) usw. gibt, womit ich auch eine Datei, die für Update geöffnet wurde, ohne Sperre lesen kann.

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Die Satzwartezeit (Default 1 Minute) ist dann auch nicht zu verachten.
    Warum soll man den User erst 1 Minute warten lassen um dann unvollständige Daten anzuzeigen?
    Bei SQL und Transaktionen muss ja sowieso anders denken.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  10. #10
    Registriert seit
    May 2009
    Beiträge
    29
    Für mein Verständnis sehr hilfreich, danke

  11. #11
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Halte ich auch für übertrieben, nur deswegen 2 Datenpfade zu öffnen, wo es doch READ(N) usw. gibt, womit ich auch eine Datei, die für Update geöffnet wurde, ohne Sperre lesen kann.
    Das klappt aber nur wenn Du ohne Commitment Control arbeitest.
    Unter Commitment Control gibt weder die Erweiterung (N) noch der OpCode UNLOCK den Datensatz frei!

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  12. #12
    Registriert seit
    Oct 2013
    Beiträge
    171
    Danke Birgitta, wieder was (von dir) gelernt!

Similar Threads

  1. CTE in RPGLE verwndbar?
    By ExAzubi in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 02-07-14, 14:13
  2. RPGLE Parameter *NOPASS
    By XMan in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 20-12-13, 08:50
  3. DEBUG RPGLE
    By Liebhoff in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 01-03-02, 21:24
  4. F-Bestimmung RPGlE
    By HoScHiE in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 12-10-01, 10:46
  5. Programmgenerator RPG/RPGLE
    By Frank in forum NEWSboard Server Software
    Antworten: 0
    Letzter Beitrag: 02-09-01, 11:35

Tags for this Thread

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •