[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Feb 2015
    Beiträge
    6

    Datensatzfortschreibung in falscher Reihenfolge

    Horrido!

    Habe hier mal ein interessantes Problem und hoffe, dass jemand eine Idee hat ...

    Ich habe vier Dateien A, B, C und D, die laut Quelle in einer bestimmten Reihenfolge mit einem RPGLE-Programm fortgeschrieben werden:

    Datei A (96 Sätze)
    Datei B (2 Sätze)
    Datei C (3 Sätze)
    Datei D (1 Satz)

    Interessanterweise sieht danach die Fortschreibung im Journal folgendermaßen aus:

    90 Datensätze in Datei A wurden unverzüglich fortgeschrieben.
    1 Datensatz in Datei D wurde unverzüglich fortgeschrieben.

    Erst bei Programmende wurde der Rest in folgender Reihenfolge fortgeschrieben:

    Datei C (3 Sätze)
    Datei A (6 Sätze)
    Datei B (2 Sätze)

    Kann mir irgendjemand einen Tipp geben?

    Gruß
    Michael

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Die Datei wird O-Eröffnet und intern geblockt so dass erst bei vollem Block oder Close (Programmende) tatsächlich geschrieben wird.
    D.h. aber, dass das Programm nicht unter Commitsteuerung läuft, denn da wird Blockung unterbunden.
    Das Risiko hier besteht, dass sogar Datenverlust auftreten kann wenn das Programm nämlich abstürzt oder der Job gekillt wird, werden Daten im internen Puffer verworfen.
    Mehrere Möglichkeiten der Kompensation:
    Beim Umwandeln per Option das Blocken verhindern, per FEOD(N) das Schreiben erzwingen, die Tabelle als UF eröffnen (bei ILE kein Problem, bei OPM die fehlenden Anweisungen in einer blinden BEGSR definieren).
    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
    Dec 2004
    Beiträge
    203
    Hallo.
    Kann jetzt nur vermuten das hier die "Blockfunktion" für Datei A zuschlägt und Datei D vielleich im PGM ein Open und Close erhällt. Oder D hat in der phy. Definition ein sofortiges Schreiben (*FRCRATIO = 1).
    Gruß,
    Ralf

  4. #4
    Registriert seit
    Feb 2015
    Beiträge
    6
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Die Datei wird O-Eröffnet und intern geblockt so dass erst bei vollem Block oder Close (Programmende) tatsächlich geschrieben wird.
    D.h. aber, dass das Programm nicht unter Commitsteuerung läuft, denn da wird Blockung unterbunden.
    Das Risiko hier besteht, dass sogar Datenverlust auftreten kann wenn das Programm nämlich abstürzt oder der Job gekillt wird, werden Daten im internen Puffer verworfen.
    Mehrere Möglichkeiten der Kompensation:
    Beim Umwandeln per Option das Blocken verhindern, per FEOD(N) das Schreiben erzwingen, die Tabelle als UF eröffnen (bei ILE kein Problem, bei OPM die fehlenden Anweisungen in einer blinden BEGSR definieren).
    @Fuerchau:
    Danke, das war es. Mal eben schnell aus den Nur-Ausgabe-Dateien
    vollprozuderale Update-Dateien definiert, schon funktioniert es.

    War das schon immer so mit den Nur-Ausgabe-Dateien, dass diese blockweise fortgeschrieben worden sind? Bin jetzt fast zwanzig Jahre dabei, ist mir aber noch nie aufgefallen ...

    Gruß
    Michael

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Ja, das war schon immer so wenn man das Blocken nicht explizit abschaltet.
    FRCRATIO(1) auf Dateiebene ist zwar auch eine Lösung, verlangsamt aber die Schreiboperation ggf. um Faktor 1000 oder mehr.
    Wenn du mit Commitsteuerung arbeitest kann auch nicht geblockt werden, da sonst ein Rollback nicht funktionieren würde. Da du ja mit Journal arbeitest empfielt sich hier doch Commitsteuerung von selber.
    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

  6. #6
    Registriert seit
    Dec 2014
    Beiträge
    310
    Zitat Zitat von M.Heger Beitrag anzeigen
    War das schon immer so mit den Nur-Ausgabe-Dateien, dass diese blockweise fortgeschrieben worden sind? Bin jetzt fast zwanzig Jahre dabei, ist mir aber noch nie aufgefallen ...
    Noch als Zusatzinfo:
    In der RPG-Umwandlungsliste wird sogar extra darauf hingewiesen! (ganz am Ende in der Meldungszusammenfassung).
    Daher - was ich immer sage - ist es nicht schlecht, auch mal bei fehlerfreien Umwandlungen einen Blick an's Ende der Umwandlungsliste zu machen :-)

  7. #7
    Registriert seit
    Feb 2015
    Beiträge
    6
    Man lernt nie aus ... ;-)

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Seit die AS/400 durch Internpufferung so schell geworden ist, lohnt die interne Blockung überhaupt nicht mehr. Reine O-Bestimmungen (außer Printer) kann man inzwischen locker vermeiden und das Problem generell verhindern.
    Wie oben geschrieben, einfach als UF behandeln.
    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

  9. #9
    Registriert seit
    Aug 2006
    Beiträge
    47
    Ich glaube es reicht sogar IF mit ADD.

    Hat den Vorteil, dass man beim Suchen nach Programmen mit Update-Verwendung (nach einem DSPPGMREF) solche Programme nicht mitgeteilt bekommt.

Similar Threads

  1. Reihenfolge Abarbeitung JOBQ
    By Starocotes in forum IBM i Hauptforum
    Antworten: 23
    Letzter Beitrag: 19-05-15, 13:04
  2. SQL und Reihenfolge der angezeigten Sätze
    By KingofKning in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 30-12-14, 19:53
  3. C6003962 nach falscher Ptfinstallation
    By TARASIK in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 17-04-14, 10:23
  4. CPYSPLF als pdf mit falscher CCSID
    By Moonwalker in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 14-11-13, 12:01

Tags for this Thread

Berechtigungen

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