PDA

View Full Version : Schleife hängt beim ersten Record



pabloesco
17-07-20, 08:12
Hallo Forum :-)

Die vorherigen Problematiken konnte ich nun dank eurer Hilfe lösen. Leider habe ich nun noch ein letztes Problem, welches ich auch schon ganz am Anfang hatte. Per RCVF durchlaufe ich eine Datenbank - Datei. Beim debuggen habe ich bemerkt, das hierbei leider eine Endlosschleife entsteht, da nie der nächste Record durchlaufen wird.




Loop: RCVF
MONMSG (CPF0864) EXEC (GOTO ENDE)
chgvar var(&pth) value(&VZ)


CALL PGM(TESTPGM) PARM(&PTH)
GOTO LOOP

hel400
17-07-20, 09:55
das kommt wohl, weil eben kein CPF0864 vom System kommt.
Die Abfrage ändern auf "CPF0000" und gut iss'es

pabloesco
17-07-20, 10:05
Ja genau aber daran wird doch auch ein CPF0000 nichts ändern oder ? CPF0864 ist ja EOF und der hängt ja beim RCVF beim ersten Record. Also er erreicht den Zustand EOF garnicht und bei CPF0000 wäre es doch trotzdem eine Endlosschleife ?

camouflage
17-07-20, 10:26
Kann es sein, dass der Loop gar nicht die Ursache ist, sondern das Testprogramm?
Grundsätzlich sollte die Logik so schon funktionieren.

pabloesco
17-07-20, 10:41
Ist ein Ansatz aber ich verstehe dann nicht ganz warum sich die Variable &PTH nicht ändert ?
Ich übergebe den Wert VZ der in der Datenbank - Datei steht an die Variable &PTH. Hierbei ändert sich trotz Schleife der Wert von der Variablen &PTH nicht. Es hängt im ersten Record fest.

camouflage
17-07-20, 10:56
Schau doch, was Du so raus bekommst:


PGM
DCL VAR(&PTH) TYPE(*CHAR) LEN(50)
DCLF FILE(yourFile)
READ:
RCVF
MONMSG MSGID(CPF0864) EXEC(GOTO CMDLBL(ENDE))
CHGVAR VAR(&PTH) VALUE(&VZ)
SNDUSRMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA(&PTH) +
MSGTYPE(*INFO)
GOTO CMDLBL(READ)
ENDE:
ENDPGM

pabloesco
17-07-20, 11:26
Vielen Dank für die Hilfe :-) Also damit ich krieg ich schon mal alle Einträge meiner Datei angezeigt. Dann liegt es wohl doch am Programm ? Aber woran könnte es denn liegen ?

camouflage
17-07-20, 11:51
Ist ein bisschen wie Kaffeesatz lesen. Was machst du denn in deinem Programm?
Ruf es doch mal ohne den RCVF nur mit einem Parameter. Sonst Debug.

Fuerchau
17-07-20, 13:27
Ich schließe mich dem Kaffeesatzlesen an:
Wenn du nur Teile deines Codes postest kann man nur raten, ob du überhaupt bis zum RCVF kommst.

pabloesco
17-07-20, 14:17
Ich habe nun die Lösung. Blöder Fehler meinerseits :P
Die Variable im CL war 80 Zeichen lang. Der Parameter konnte 150 Zeichen aufnehmen. Als ich die Variable im CL angepasst hatte auf 150 Zeichen, hatte ich keine Probleme mehr bezüglich des RCVF.

Vielen Dank für die Hilfe ! :-)