Anmelden

View Full Version : Wald und Bäume



KingofKning
29-12-14, 09:07
Hallo *all,
irgendwie sehe ich den Wald vor lauter Bäumen nicht mehr.

Habe mir eine LF mit Schlüssel erstellt

0010.00 * K SOID1
0010.01 * K SOID4
0010.02 * K SODNVO


In Cobol habe ich die wie folgt definiert:



51 012600 FD DAT004
52 012700 DATA RECORD IS 004-SATZ,
53 012800 LABEL RECORDS IS STANDARD.
54 012900 01 004-SATZ.
55 013000 COPY DDR-ALL-FORMATS OF DAT004.
56 +000001 05 DAT004-RECORD PIC X(73).
+000002* I-O FORMAT:DAT004SATZ FROM FILE DAT004 OF LIBRARY RPTRA
+000003* SONDERPREIS
+000004*DEFINITIONEN DER SCHLÜSSELFELDER FÜR SATZFORMAT DAT004SATZ
+000005* NUMMER NAME VERARB.FOLGE ART
+000006* 0001 SOID1 AUFSTEIGEND SIGNED
+000007* 0002 SOID4 AUFSTEIGEND SIGNED
+000008* 0003 SODNVO AUFSTEIGEND SIGNED
57 +000009 05 DAT004SATZ REDEFINES DAT004-RECORD.





Und mach dann ein (Ich benutze ein Unter-Modul für die Abfragen, und L-Satz ist aus der Linkage Section und ist auch sauber gefüllt)


364 061200 MOVE L-SATZ TO 004-SATZ.
365 061300 START DAT004 KEY
061400 NOT LESS THAN EXTERNALLY-DESCRIBED-KEY
366 061500 GO TO QUIT.

Der Datei-Status ist danach Null.
Und ein


042100 RN-004.
289 042200 READ DAT004 NEXT.
290 042300 MOVE 004-SATZ TO L-SATZ. GO TO QUIT.


Ich erhalte aber einen x-beliebigen Satz nicht aber den, den ich haben wollte.
Versteh ich jetzt einfach nicht, wo ist mein Denkfehler?

Fuerchau
29-12-14, 10:09
Wo ist 004-Satz definiert?
Ich sehe in der FD nur DAT004SATZ.
Dieser ist vor dem Start zu füllen!

KingofKning
29-12-14, 10:29
Versteht sich, habe oben nochmal den Anfang der Copy Strecke reinkopiert.

Die Felder sind ja auch gefüllt.

GG

Pikachu
29-12-14, 10:30
Ist der START in einem separaten Programm?

Fuerchau
29-12-14, 10:36
COBOL (bzw. native IO) ist da manchmal nickelig.
Von der Kodierung gehört sich:

Start ...
invalid Key ...
end-start

read ... next
at end ...
end-read

Dies führt intern ggf. zu anderen Funktionsaufrufen (warum auch immer).
Meist deutet der Compiler dies mit 10/20er-Fehlern an.

Auch verwende ich meist
Start ... Key is >= ext.....

Logisch ist das zwar identisch mit "not <" aber ggf. wird hier ein "Aufsetzen mit" erst erzwungen.

KingofKning
29-12-14, 11:54
Tja, es geht doch nichts über Agent Orange.
Ich hasse es wenn Pappnasen die Felder mit id1 bis idx bezeichnen und dort ab und zu mal Artikelnummer oder Kundennummer unterbringen.
Solche Leute gehören echt von der AS/400 überfahren....

Sprich die Syntax war in Ordnung, nur bei Tiedenhub 3,5 und Schneefall steht halt in den Felder mal das eine oder das andere.

GG