PDA

View Full Version : API QWDRJOBD



Seiten : [1] 2

Andreas Herzfeldt
25-05-07, 09:34
Hallo zusammmen, ich möchte aus einer JOBD einige Werte auslesen, und dachte das geht mit dem API QWDRJOBD. Ich poste mal die CMD + CL - SRC, da ich immer einen MCH3601 bekomme, sobald ich das Parameterfeld &PARM lese um die Returnvariablen per SST zu füllen !

CALL PGM(QWDRJOBD) PARM(&PARM &LEN &FORMAT +
&FULLJOBD &ERRORCODE)

In dem erstellten DUMP ist allerdings die Variable &PARM gefüllt :

&PARM *CHAR 1024 ' PDFPROV ACTSYS '
+26 ' SPLPDF *SYSVAL 0000'
+51 '0000PDFPROV ACTSYS '
+76 '5*NO *USRPRF '
+101 ' 5*USRPRF *SYSVAL'
+126 ' '

Der MCH3601 tritt auf, sobald ich per CHGVAR auf &PARM zugreife.

Was kann das sein ?




Andreas

Pikachu
25-05-07, 09:56
Welchen Wert übergibst du für &LEN?
Wie greifst du mit CHGVAR auf &PARM zu?

Andreas Herzfeldt
25-05-07, 10:06
Länge : CHGVAR VAR(%BIN(&LEN 1 4)) VALUE(1024)
Zugriff : CHGVAR VAR(&RJOBPTY) VALUE(%SUBSTRING(&PARM 74 2))

Andreas

Pikachu
25-05-07, 10:20
Wie hast du &LEN und &PARM definiert?
Tritt der Fehler auch auf, wenn du den Aufruf des APIs weglässt?

Andreas Herzfeldt
25-05-07, 10:31
Der &PARM ist als *CHAR + der &LEN auch als *CHAR und wird so umgesetzt : CHGVAR VAR(%BIN(&LEN 1 4)) VALUE(1024)

Wie gesagt im DUMP wird der &PARM auch gefüllt, nur das zugreifen per CHGVAR und SST fällt auf die Nase mit MCH3601.

Er steigt auch aus wenn der API-Aufruf wegbleibt !

Andreas

Pikachu
25-05-07, 10:59
Definierst du den &PARM im Programm selbst oder wird er als Parameter von einem anderen Programm übergeben? Vielleicht ist er dort zu kurz definiert? Allerdings ist wirklich komisch, dass nach dem Aufruf des APIs der entsprechende Inhalt in &PARM steht.

Andreas Herzfeldt
25-05-07, 11:08
Nein der &PARM ist nur im Programm definiert, als Übergabeparameter ist nur die &JOBD definiert und für diese
ermittle ich per RTVOBJD die Bibliothek für den API-Aufruf. Im Dump steht dann nur *Nicht adressierbar - ich finde es auch eigenartig, dass eine offenbar gefüllte Variable nicht ausgelesen werden kann. Aber, in der TAATOOL gibt es auch einen RTVJOBD der mit dem gleichen Symptom auf die Nase fällt, ich werde nächste Woche mal bei IBM-Software nachfragen !

Andreas

Pikachu
25-05-07, 12:13
Wie ist denn &RJOBPTY definiert? Du schreibst etwas von Returnvariablen. Ist &RJOBPTY ein Parameter, der über den CMD durch RTNVAR(*YES) zurückgegeben werden soll? Wird dafür beim Aufruf der Speicherbereich einer Variable mitgegeben?

Andreas Herzfeldt
25-05-07, 12:19
Ja, die sind in einem CMD als RTNVAL(*YES) definiert und werden als Varaible an das Programm übergeben !

Andreas

Pikachu
25-05-07, 12:26
Dann tritt der Fehler wahrscheinlich beim Schreiben in die Variable &RJOBPTY auf. Ein CHGVAR VAR(&RJOBPTY) VALUE('05') dürfte dann genauso fehlschlagen.

Gibst du beim Aufruf des CMDs für diesen Parameter auch eine Variable mit genügend großem Speicherbereich mit?