Anmelden

View Full Version : API QWDRJOBD



Seiten : 1 [2]

Andreas Herzfeldt
25-05-07, 12:30
Nein, der Array aus dem API wird ja in das Feld &PARM zurückgegeben und hier ist es dann egal welche Positiion ich CHGVAR%SST ..... auslese, die Fehlermeldung im DUMP ist immer *NICHT ADRESSIERBAR !

Andreas

Pikachu
25-05-07, 12:41
Ich denke es liegt nicht am %SUBSTRING(&PARM 74 2), sondern am CHGVAR VAR(&RJOBPTY) VALUE(irgendwas). Wahrscheinlich ist &RJOBPTY nicht adressierbar. Kannst du bitte einmal den Aufruf des CMD hier reinschreiben?

Andreas Herzfeldt
25-05-07, 12:49
PARM KWD(JOBD) TYPE(*CHAR) LEN(10) RTNVAL(*NO) +
RSTD(*NO) MIN(0) CHOICE(ZEICHENWERT) +
PROMPT('Jobbeschreibung')
PARM KWD(RJOBD) TYPE(*CHAR) LEN(10) RTNVAL(*YES) +
RSTD(*NO) MIN(0) CHOICE(*VALUES) +
PROMPT('Return JOBD (10)')
PARM KWD(RJOBDL) TYPE(*CHAR) LEN(10) RTNVAL(*YES) +
RSTD(*NO) MIN(0) CHOICE(*VALUES) +
PROMPT('Return JOBD Bibl. (10)')
PARM KWD(RJOBQ) TYPE(*CHAR) LEN(10) RTNVAL(*YES) +
RSTD(*NO) MIN(0) CHOICE(*VALUES) +
PROMPT('Return JOBQ (10)')
PARM KWD(RJOBQL) TYPE(*CHAR) LEN(10) RTNVAL(*YES) +
RSTD(*NO) MIN(0) CHOICE(*VALUES) +
PROMPT('Return JOBQ Bibl. (10)')
PARM KWD(RJOBDU) TYPE(*CHAR) LEN(10) RTNVAL(*YES) +
RSTD(*NO) MIN(0) CHOICE(*VALUES) +
PROMPT('Return JOBD User (10)')
PARM KWD(RJOBPTY) TYPE(*CHAR) LEN(2) RTNVAL(*YES) +
RSTD(*NO) MIN(0) CHOICE(*VALUES) +
PROMPT('Return JOBQ JOBPTY (02)')
PARM KWD(RJOBHLD) TYPE(*CHAR) LEN(10) +
RTNVAL(*YES) RSTD(*NO) MIN(0) +
CHOICE(*VALUES) PROMPT('Return JOBQ +
JOBHLD (10)')
PARM KWD(RJOBOUTQ) TYPE(*CHAR) LEN(10) +
RTNVAL(*YES) RSTD(*NO) MIN(0) +
CHOICE(*VALUES) PROMPT('Return JOBQ +
OUTQ (10)')
PARM KWD(RJOBOUTQL) TYPE(*CHAR) LEN(10) +
RTNVAL(*YES) RSTD(*NO) MIN(0) +
CHOICE(*VALUES) PROMPT('Return JOBQ OUTQ +
Bibl.(10)') PARM KWD(RJOBOPTY) TYPE(*CHAR) LEN(2) +
RTNVAL(*YES) RSTD(*NO) MIN(0) +
CHOICE(*VALUES) PROMPT('Return JOBQ +
OUTQPTY (02)')
PARM KWD(RJOBPDEV) TYPE(*CHAR) LEN(10) +
RTNVAL(*YES) RSTD(*NO) MIN(0) +
CHOICE(*VALUES) PROMPT('Return JOBQ +
Printer (10)')

und hier der CL-Aufruf
PGM PARM(&JOBD &RJOBD &RJOBDL &RJOBDU &RJOBQ +
&RJOBQL &RJOBPTY &RJOBHLD &RJOBOUTQ +
&RJOBOUTQL &RJOBOPTY &RJOBPDEV)

DCL VAR(&RJOBD) TYPE(*CHAR) LEN(10)
DCL VAR(&RJOBDL) TYPE(*CHAR) LEN(10)
DCL VAR(&RJOBDU) TYPE(*CHAR) LEN(10)
DCL VAR(&RJOBQ) TYPE(*CHAR) LEN(10)
DCL VAR(&RJOBQL) TYPE(*CHAR) LEN(10)
DCL VAR(&RJOBPTY) TYPE(*CHAR) LEN(2)
DCL VAR(&RJOBHLD) TYPE(*CHAR) LEN(10)
DCL VAR(&RJOBOUTQ) TYPE(*CHAR) LEN(10)
DCL VAR(&RJOBOUTQL) TYPE(*CHAR) LEN(10)
DCL VAR(&RJOBOPTY) TYPE(*CHAR) LEN(2)
DCL VAR(&RJOBPDEV) TYPE(*CHAR) LEN(10)

Und wenn Du mal bei dem Googlehupf nach QWDJRJOBD suchst, findes Du auch zum Format JOBD0100 die Parametrierung !

Andreas

Pikachu
25-05-07, 13:33
Und wie genau wird dieser Befehl aufgerufen? Wird auch für den Parameter RJOBPTY beim Aufruf dieses Befehls ein entsprechend großer Speicherbereich mitgegeben, um den Rückgabewert zu empfangen?

Pikachu
25-05-07, 13:45
Sieh mal hier, das dürfte genau dieses Problem (http://www.systeminetwork.com/isnetforums/archive/index.php?t-40498.html) sein.

Andreas Herzfeldt
29-05-07, 06:48
Mit dem MONMSG der MCH3601 bekomme ich zwar den Fehler nicht mehr, aber das Programm bringt jetzt gar keine Werte mehr zurück ! Ich werde mal den IBM-SW Ta befragen !

Danke !!

Andreas

Pikachu
29-05-07, 08:35
Wie nimmst du die Werte denn entgegen?

Fuerchau
29-05-07, 08:51
Das Problem ist, dass in CLP NULL-Adressen nicht verarbeitet werden können.

Wenn du bei einem CMD mit RTNVAL nicht alle Variablen angibst, wird an Stelle der nicht angegebenen Variablen ein NULL-Pointer übergeben.

Beim Zugriff darauf stirbt eben CLP.

Umgehung:
Rufe aus dem CLP ein ILERPG auf, dieses ruft das API auf und übergibt die Werte, deren Adresse ungleich *NULL ist:

if %addr(RJOBD) <> *null;
RJOBD = APIRJOBD;
endif;

usw.