PDA

View Full Version : Programmabsturz bei SETLL auf Join-Logische Datei



harkne
13-03-17, 09:57
Hallo zusammen,

vielleicht habt Ihr eine Idee.

Mein Programm stürzt ab wenn es das 2. ! mal einen SETLL auf meine Join-Logische Datei macht. Der SETLL mit den den zwei Schlüsselfeldern (CDPTNO, CDONHC) ist nicht erfolgreich (%EQUAL)

Er stürzt ab mit E/A-Fehler CPF5097

Im Joblog bringt er als erstes einen Datenzuordungsfehler auf die erste Datei der Join-logischen mit Fehler Code 19 - Unerwartetes Nullfeld gefunden.

Da es sich um die Satznummer 4294967295 handelt heißt es in der Beschreibung beim folgenden Schlüsselzuordnungsfehler

Ist die Satznummer 4294967295, trat der Fehler bei einem Schlüssel auf,
der als Parameter für eine Leseoperation nach Schlüssel übergeben wurde.
Anhand der zuvor aufgeführten Nachricht CPF5035 oder CPF5036 die
fehlerhaften Schlüsselfelder bestimmen. Diese ändern und die Operation
wiederholen.

Das Feld um das es sich hier handelt heißt CDPTNO und hat keine Nullwerte.

Wie gesagt. Der 1. SETLL keine Probleme beim 2. SETLL hauts ihn weg mit den oben angegebenen Fehlern.

Nachfolgend mal noch die Join-Logische



0017.00 A R CDTRNJ
0018.00 A JFILE(CDTRNP OHTRNP CHTRNP)
0019.00 A J JOIN(CDTRNP OHTRNP)
0020.00 A JFLD(CDSODN OHSODN)
0021.00 A JFLD(CDODCC OHODCC)
0022.00 A JFLD(CDODYY OHODYY)
0023.00 A JFLD(CDODMM OHODMM)
0024.00 A JFLD(CDODDD OHODDD)
0025.00 A J JOIN(CDTRNP CHTRNP)
0026.00 A JFLD(CDCHID CHID)
0027.00 A
0028.00 A CDPTNO
0029.00 A CDONHC
0030.00 A CDSODN
0031.00 A CDODCC
0032.00 A CDODYY
0033.00 A CDODMM
0034.00 A CDODDD
0035.00 A CDODDT
0036.00 A CDID
0037.00 A CDCHID
0038.00 A CDPKID
0039.00 A CDWHSE
0040.00 A CDPRTZ
0041.00 A CDPRTR
... viele weitere Felder noch aus CD..
0076.00 A OHSODN
0077.00 A OHODCC
0078.00 A OHODYY
0079.00 A OHODMM
0080.00 A OHODDD
0081.00 A OHFLG4
0082.00 A OHDISC
0083.00 A OHDLRC
0084.00 A CHID
0085.00 A CHSTAT
0086.00 A CHWHTD
0087.00 A*
0088.00 A* KEY
0089.00 A K CDPTNO
0090.00 A K CDONHC
0091.00 A* SELECT AND OMMIT
0093.00 A S OHFLG4 COMP(NE 'V')
0094.00 A OHFLG4 COMP(NE 'W')
0095.00 A CHSTAT COMP(LT 'O')


Vielleicht noch als Anmerkung. Ich habe inzwischen den SETLL ausgetauscht durch einen CHAIN und mache den SETLL nur dann wenn er auch tatsächlich den Schlüssel findet. Beim CHAIN stürzt er nicht ab und da er den SETLL nur noch macht wenn er findet stürzt er auch nicht mehr ab.

hel400
13-03-17, 10:59
1)
CHAIN = SETLL + READ
Warum also der CHAIN klappt und der SETLL nicht, ist nicht schlüssig zu erklären.

2)
Die SELECT-Felder sind (teilweise) aus der Sekundär-Datei.
Normalerweise müsste da das Schlüsselwort "DYNSLT" (auf Recordebene) angegeben werden.
Gib das mal rein und teste nochmals.

harkne
13-03-17, 11:53
DYNSLT bräuchte ich nur wenn ich SELECT-Felder aus der 1. Datei verwenden würde. Zumindest erzählt mir das die Umwandlung so. Außerdem möchte ich gerade keinen DYNSLT