[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2009
    Beiträge
    111

    Altes RPG-Programm liest aus logischer Datei unvollständig oder in falscher Folge

    Hallo zusammen,

    ich habe S/36-Dateien extern definiert und ein dazugehöriges RPG/36-Programm in RPG gewandelt (keine Angst, RPGLE und Co kommen noch. Aber erstmal 1:1 umwandeln...). Dabei stoße ich auf folgendes Phänomen:

    Das Programm liest Sätze aus einer logischen Datei und zeigt mehrere nach Kunden/Auftragsnr. sortiert an. Bei Bild auf wird die nächste Seite mit Sätzen angezeigt.

    Das RPG/36 Programm zeigt zu einem Kunden 2 Seiten Aufträge an. Das RPG Programm zeigt die zweite Seite leer an.

    Im Debug sieht man, dass in der Leseroutine ein SETLL auf den letzen Satz der ersten Seite gemacht wird und dann in einer Schleife weitergelesen wird. Allerdings wird ein Satz des nächsten Kunden gelesen, der dann das Schleifenende verursacht. Obwohl noch weitere Sätze zum gesuchten Kunden kommen müßten.

    Kann es sein, dass ein RPG den Zugriffspfad ignoriert und z.B. nach relativer Satznr. liest?

    In der F-Karte ist die Datei mit Key definiert, der auch dem Key der logischen entspricht:

    FABWI UF F 420 42AI 1 DISK


    I und O Karten sind noch intern definiert.

    In der C-Karte erfolgt ein SETLL und eine Schleife mit READ:
    C YIIND2 SETLLABWI
    C Z-ADD0 Z
    C*----------
    C BL2100 TAG
    C SETOF 21
    C READPABWI 21
    C 21 GOTO BL2500
    C RIIND COMP YIIND 21
    C N21 GOTO BL2500

    Beim SETLL steht in YIIND2 der letzte Satz des ersten Bildschirms. Der erste Read liest aber bereits den ersten Satz des zweiten Kunden und der COMP macht die 21 an.

    Hab schon über OPNQRYF nachgedacht, um die Reihenfolge der Sätze zu sichern, allerdings gibt es auch updates im RPG.

    Könnte das ein generelles Problem sein?

    Möchte ungern alles umschreiben, da es recht umfangreich ist.

    Gruß

    Matthias

  2. #2
    Registriert seit
    Jan 2007
    Beiträge
    550
    Vielleicht SETGT und dann rückwärts lesen, also ich würd's nur mit der Kundennummer so machen. Wobei hängt auch ab, wie die Logische definiert ist.
    kf

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.549
    Nur mal so eine Idee: liest Du auch wirklich geschlüsselt oder fehlt vielleicht das K in den F-Bestimmungen?

    Birgitta
    Birgitta Hauser

    Contractor for Fresche Solutions Inc.
    Anwendungsmodernisierung, Beratung, Schulungen im Bereich RPG, SQL und Datenbank

  4. #4
    Registriert seit
    Jun 2009
    Beiträge
    111
    Hallo Birgitta, hallo Camouflage,

    danke für die Ideen.

    Ich hab's gefunden. Der Gesamtkey setzte sich aus mehreren Feldern zusammen. Zu Zeiten der S/36 konnte man ja mit EXTK auch Dateien verarbeiten, deren Schlüsselbereiche nicht zusammenhängend waren... Bei der Umsetzung des Gesamtschlüssels hab ich zwei Datumsfelder verwechselt, was dann zu dem komischen Leseergebnis führte.

    @Birgitta: K in der F-Karte geht nur wenn sie nicht so wie in diesem Beispiel intern beschrieben ist.

    Euch ein schönes Wochenende!

Ähnliche Themen

  1. Ermitteln ob aktuelles Programm ineraktiv läuft oder im Batch
    Von harkne im Forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 20-05-16, 15:34
  2. QR-Code z.T. unvollständig
    Von ubas im Forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 18-05-16, 16:35
  3. "Reverse engineering" aus logischer Datei
    Von MoselRBA im Forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 18-12-14, 15:19
  4. FTP Append kann Datei nicht öffnen oder erstellen
    Von msost im Forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 04-12-13, 16:39
  5. AS400-Datei über FTP in CL-Programm
    Von froehlich im Forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 22-11-02, 13:59

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •