PDA

View Full Version : Auffinden des Aufruf-Programms



nwedding
27-06-05, 16:24
Hallo,

suche vergeblich eine Möglichkeit, den Namen des aufrufenden
PGM zu ermitteln. Also PGM A ruft PGM B auf und in PGM B soll
der Name von PGM A ermittelt werden.

Vielen Dank für die Mithilfe!

Fuerchau
27-06-05, 16:55
DCL &MYKEY *CHAR 4
DCL &SENDER *CHAR 80
SNDPGMMSG MSG('/* */') TOPGMQ(*PRV) KEYVAR(&MYKEY)
RCVMSG PGMQ(*PRV) MSGKEY(&MYKEY) SENDER(&SENDER)

Anstelle dder CL-Befehle, die ja nur im CLP funktionieren, können alternativ auch die MSGAPI's verwendet werden.

B.Hauser
27-06-05, 16:55
Hallo,

suche vergeblich eine Möglichkeit, den Namen des aufrufenden
PGM zu ermitteln. Also PGM A ruft PGM B auf und in PGM B soll
der Name von PGM A ermittelt werden.

Vielen Dank für die Mithilfe!

Schreib einen 2-Zeiler in CL oder greife mit dem API QWVRCSTK den Call-Stack ab.

CL-Programm:


PGM PARM(&CALLER +
&CALLED)
/* ---------------------------------------------------------------*/
DCL VAR(&CALLER) TYPE(*CHAR) LEN(10)
DCL VAR(&CALLED) TYPE(*CHAR) LEN(10)

DCL VAR(&MSGKEY) TYPE(*CHAR) LEN(4)
DCL VAR(&SENDER) TYPE(*CHAR) LEN(80)
/* ---------------------------------------------------------------*/
SNDPGMMSG MSG('TEST') +
TOPGMQ(*PRV (&CALLED)) +
MSGTYPE(*RQS) +
KEYVAR(&MSGKEY)

RCVMSG PGMQ(*PRV (&CALLED)) +
MSGKEY(&MSGKEY) +
SENDER(&SENDER)

CHGVAR VAR(&CALLER) VALUE(%SST(&SENDER 56 10))
ENDE: ENDPGM



&CALLED ist Dein Programm B und wird an dieses CL-Programm übergeben und &CALLER ist Dein Programm A und wird zurückgegeben.

Birgitta

Allrounder
28-06-05, 10:38
Hallo,

suche vergeblich eine Möglichkeit, den Namen des aufrufenden
PGM zu ermitteln. Also PGM A ruft PGM B auf und in PGM B soll
der Name von PGM A ermittelt werden.

Vielen Dank für die Mithilfe!


Wir lösen die Problematik mit einem zusätzlichen Parameter in der *entry-PLIST.

nwedding
28-06-05, 14:36
Hallo!

Vielen Dank für die Vorschläge.
Ich habe mich für die Variante von Birgitta entschieden mit
einer Schleife, damit IBM-PGM wie QCMDEXC ausgefiltert werden können.