-
relative Satznummer in RPG3 abrufbar?
Hallo,
wie kann ich die relative Satznummer eines Satzes einer physischen Datei erhalten, den ich in RPG3 gerade im Zugriff habe? Ich habe es schon über die INFDS versucht, aber dort gibt er mir in einer Datei mit 5 Sätzen immer nur 5 an. Hat das was mit der RPG-Blockung zu tun oder bin ich da eh auf dem Holzpfad?
Hab jetzt grad keine Literatur an der Hand und im Internet nichts gefunden, daher will ich Euch mal wieder anstrengen...
In Liebe, Euer Dufti
-
Hallo,
die relative Satz-Nr. steht in der Datei-Status-Datenstruktur auf Stelle 397-400 im Binär-Format.
Beim Einlesen wird die relative Satz-Nr. in dieses Feld ausgegeben.
Hier ein Beispiel:
Code:
FMYFILEL5IF E K DISK KINFSR *PSSR
F KINFDS INFMF5
FMYFILEP UF E DISK KINFSR *PSSR A
F KCOMIT
IINFMF5 DS
I B 397 4000RRNMF5
C READ MYFILEF5 92
C RRNMF5 CHAINMYFILEF 9694
C *IN96 IFEQ *OFF
C UPDATMYFILEF
C ENDIF
Birgitta
-
Hallo Birgitta,
vielen Dank für die schnelle Antwort. So in etwa hatte ich mir das auch gedacht. Es klappte aber einfach nicht. Gibt es da noch irgendwelche Restriktionen? Bei folgendem Beispiel kommt immer 5 raus:
Datei TESTPU, extern beschrieben, ungeschlüsselt, ein Feld, 5 Sätze stehen drin.
Code:
FTESTPU IF E DISK
F KINFDS INFMF5
IINFMF5 DS
I B 397 4000RRNMF5
C DO *HIVAL
C READ TESTPU 99
C 99 LEAVE
C RRNMF5 DSPLY
C ENDDO
C MOVEL*ON *INLR
Es kommt auch immer 5 raus, nachdem ich den ersten Satz gelöscht habe. Auch IP-Verarbeitung bringt immer 5.
Deswegen dachte ich, ob das was mit der Blockung zu tun hat. Wie kann man diese ausschalten?
Warte mal... [Minuten später] ...aha:
Wenn ich eine Update-Datei draus mache, funkioniert es einwandtfrei.
Alles klar! Danke! Bist ein Schatz!
Dufti
PS. Thread darf meinetwegen geschlossen werden.
-
Bei geblockter Verarbeitung steht halt immer die letzte Satz-Nr. des Blockes in der INFDS, wobei noch nicht mal gesagt ist, dass die Satz-Nr'n in aufsteigender Folge sind.
Wenn die Datei z.B. über Schlüssel ( K-Spezifikation ) verarbeitet wird ist die RRN in beliebiger Folge möglich.
Verhindere die Blockung über eine CHAIN-Anweisung in der Quelle, die aber nie ausgeführt wird.
Dein Programm kann zwar (je nach Satzlänge, Anzahl Sätze/Block) bis zu 100 mal langsamer werden, aber was solls. Wenn ich unbedingt die unzuverlässige Information RRN benötige, kann man das ja in Kauf nehmen.
Was willst du überhaupt mit der RRN ?
-
 Zitat von Fuerchau
Was willst du überhaupt mit der RRN ?
Wieder Stichwort Edifact. Zu verarbeiten ist eine (zuvor konvertierte) sequentielle Datei fester Satzlänge, mit unterschiedlichen Satzarten, über die aber zunächst einmal kein Schlüsel aufgebaut werden kann.
Sprich: (1 Kopfsatz, dann viele viele Positionssätze)=1 "Auftrag", (1 Kopfsatz, dann viele viele Positionssätze) =noch 1 "Auftrag", etc.
oder so:
100... Kopf Auftrag 1
200... Position Auftrag 1
200... Position Auftrag 1
[...]
100... Kopf Auftrag 2
200... Position Auftrag 2
[...]
Fehlerhafte Aufträge sollen im Kopf markiert werden. Deswegen merke ich mir die RRN des Kopfsatzes, und die des folgenden Kopfsatzes, um kurz mal wieder nach oben zu springen, zu markieren, und anschliessend wieder nach unten zu hüpfen, um weiter zu prüfen. Da ich die Datei zuvor sperre, kann mir auch niemand dazwischenfunken.
Ich hätte das ganze ja auch über eine geschlüsselte Zwischendatei lösen können, aber da war irgendwie keine Zeit für. Oder die Lust fehlte, oder wie auch immer.
Hätte ich vorher keinen Test mit Input-Datei gemacht, hätte es wohl auf Anhieb geklappt, da es ja eine Update-Datei ist und ich einen Chain gemacht hätte. Aber Dufti muss ja immer vorher probieren, bevor er studiert.
Dufti
-
Hallo Dufti,
wenn Du Deinen Kopf-Satz erst beim Gruppen-Wechsel, also erst dann wenn der nächste Kopf-Satz kommt, schreiben würdest, könntest Du Dir das Ganze Hin- und Hergehüpfe und nochmalige Lesen und Updaten sparen.
Ich weiß nicht wie Du das Ganze handelst, aber wir benutzen für jede Satz-Art eine eigene Datenstruktur (vorzugsweise extern beschrieben).
Wird ein Satz eingelesen, wird zunächst die Satz-Art geprüft und dann die entsprechende(n) Datenstruktur(en) gefüllt.
Deine Positions-Sätze schreibst Du sofort bzw. wenn die nächsten Positions-Informationen eingelesen werden, den Kopf-Satz erst, wenn Du feststellst, dass die nächste Kopf-Satzart kommt. Die Kopf-Informationen sind ja in der Datenstruktur gespeichert.
Birgitta
-
Hallo Birgitta,
ich will ja zunächst erstmal nichts schreiben, sondern ich erhalte die Datei. Im ersten Durchgang lese ich sie nur, um fehlerhafte Aufträge von regulären zu trennen. Dazu verwende ich auch Datenstrukturen für jede Satzart. Und Protokoll kommt raus etc.
Dann entscheidet der Anwender, ob die Datei übernommen werden soll, oder ob er sie zuvor maniupliert und nochmal prüft.
Bei der Übernahme an sich überlese ich dann einfach die als fehlerhaft markierten Aufträge.
Aber Du hast sicher Recht, wenn Du sagst, dass dies nicht die optimale Lösung ist. Leider gibt es bei solchen Sachen ja immer unzählige Möglichkeiten. Ich habe jetzt die ausgewählt, die am schnellsten für mich umzusetzen war. Weil muss heute echtstarten das ganze ;/
Dufti
Similar Threads
-
By Akku in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 10-05-06, 08:07
-
By muadeep in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 05-08-04, 09:18
-
By peter.kinne in forum IBM i Hauptforum
Antworten: 9
Letzter Beitrag: 24-03-04, 07:18
-
By karin-vogelmann in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 10-12-03, 13:13
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks