Sunteți pe pagina 1din 3

********************************************************************************

CLLE - Example of code to return previous program name


Posted By: JimmyOctane Contact
********************************************************************************
PGM PARM(&CALLER &PGM)
DCL VAR(&CALLER) TYPE(*CHAR) LEN(10)
DCL VAR(&PGM) TYPE(*CHAR) LEN(10)
DCL VAR(&MSGKEY) TYPE(*CHAR) LEN(4)
DCL VAR(&SENDER) TYPE(*CHAR) LEN(80)
MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))
CHGVAR VAR(&CALLER) VALUE(' ')
SNDPGMMSG MSG('WHO CALLED ME?') TOPGMQ(*PRV (&PGM)) +
KEYVAR(&MSGKEY)
RCVMSG PGMQ(*PRV (&PGM)) MSGTYPE(*INFO) +
MSGKEY(&MSGKEY) RMV(*YES) SENDER(&SENDER)
CHGVAR VAR(&CALLER) VALUE(%SST(&SENDER 56 10))
GOTO CMDLBL(ENDPGM)
ERROR: CHGVAR VAR(&CALLER) VALUE(' ')
ENDPGM: ENDPGM

*******************************************************************************
*

REFRESH:
RTVOBJD OBJ(*LIBL/QPDSPAJBP) OBJTYPE(*FILE) +
RTNLIB(&LIB)
CHGVAR VAR(&OUTFILE) VALUE('QPDSPAJBP')
CHGVAR VAR(&BIBOUT) VALUE('QTEMP')
RTVOBJD OBJ(QTEMP/QPDSPAJBL1) OBJTYPE(*FILE)
MONMSG MSGID(CPF9812) EXEC(DO)
DLTF FILE(QTEMP/QPDSPAJB*)
MONMSG MSGID(CPF0000)
ENDDO
IF COND(&MODE *EQ '*NEW') THEN(DO)
RTVOBJD OBJ(&BIBOUT/&OUTFILE) OBJTYPE(*FILE)
MONMSG MSGID(CPF9812) EXEC(DO)
CRTDUPOBJ OBJ(QPDSPAJB*) FROMLIB(&LIB) OBJTYPE(*FILE) +
TOLIB(&BIBOUT)
ENDDO
CLRPFM FILE(&BIBOUT/&OUTFILE)
ENDDO
IF COND(&MODE *EQ '*REP') THEN(DO)
RTVOBJD OBJ(&BIBOUT/&OUTFILE) OBJTYPE(*FILE)
MONMSG MSGID(CPF9812) EXEC(DO)
CRTDUPOBJ OBJ(QPDSPAJB*) FROMLIB(&LIB) OBJTYPE(*FILE) +
TOLIB(&BIBOUT)
ENDDO
CLRPFM FILE(&BIBOUT/&OUTFILE)
ENDDO
IF COND(&MODE *EQ '*ADD') THEN(DO)
RTVOBJD OBJ(&BIBOUT/&OUTFILE) OBJTYPE(*FILE)
MONMSG MSGID(CPF9812) EXEC(DO)
CRTDUPOBJ OBJ(QPDSPAJB*) FROMLIB(&LIB) OBJTYPE(*FILE) +
TOLIB(&BIBOUT)
ENDDO
ENDDO
CHGVAR VAR(&QRY) VALUE('QUSER *EQ "' *CAT &USER__10 +
*CAT '"')
IF COND(&USER *NE ' ') THEN(DO)
CHGVAR VAR(&QRY) VALUE('QUSER *EQ "' *CAT &USER *CAT '"')
ENDDO
WRKACTJOB OUTPUT(*PRINT) SBS(&SBSJOB)
CPYSPLF FILE(QPDSPAJB) TOFILE(QTEMP/WPDSPAJBP) +
JOB(&NBRJOB_6/&USER__10/&JOB___10) +
SPLNBR(*LAST)
DLTSPLF FILE(QPDSPAJB) JOB(&NBRJOB_6/&USER__10/&JOB___10)
IF COND(&USER *EQ '*ALL') THEN(DO)
CHGVAR VAR(&QRY) VALUE('QUSER *NE " " *AND QVIDE1 *EQ " "')
OPNQRYF FILE((QTEMP/WPDSPAJBP)) QRYSLT(&QRY) +
IGNDECERR(*YES) OPNID(WPDSPAJB)
GOTO CPY3
ENDDO
OPNQRYF FILE((QTEMP/WPDSPAJBP)) QRYSLT(&QRY) +
IGNDECERR(*YES) OPNID(WPDSPAJB)
CPY3:
CPYFRMQRYF FROMOPNID(WPDSPAJB) TOFILE(QTEMP/QPDSPAJBP) +
MBROPT(*ADD)
MONMSG MSGID(CPF3370)
CLOF OPNID(WPDSPAJB)
OVRDBF FILE(QPDSPAJBP) TOFILE(QTEMP/QPDSPAJBP)
OVRDBF FILE(QPDSPAJBL1) TOFILE(QTEMP/QPDSPAJBL1)
CHGVAR VAR(&F5) VALUE('0')
CALL PGM(DSPDEVUS) PARM(&F5)
DLTOVR FILE(*ALL)
IF COND(&F5 *EQ '1') THEN(GOTO REFRESH)
DLTF FILE(QTEMP/WPDSPAJBP)
GOTO FIN

/* ##########################################################################*/
/* ##########################################################################*/
STDERR1: /* STANDARD ERROR HANDLING ROUTINE */
IF &ERRORSW SNDPGMMSG MSGID(CPF9999) +
MSGF(QCPFMSG) MSGTYPE(*ESCAPE) /* FUNC CHK */
CHGVAR &ERRORSW '1' /* SET TO FAIL IR ERROR OCCURS */

STDERR2: RCVMSG MSGTYPE(*DIAG) MSGDTA(&MSGDTA) MSGID(&MSGID) +


MSGF(&MSGF) MSGFLIB(&MSGFLIB)
IF (&MSGID *EQ ' ') GOTO STDERR3
SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
MSGDTA(&MSGDTA) MSGTYPE(*DIAG)
GOTO STDERR2 /* LOOP BACK FOR ADDL DIAGNOSTICS */
STDERR3: RCVMSG MSGTYPE(*EXCP) MSGDTA(&MSGDTA) MSGID(&MSGID) +
MSGF(&MSGF) MSGFLIB(&MSGFLIB)
SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE)
FIN:
ENDPGM

********************************************************************************
***

CLLE - DSPDEVU (3/8) : DISPLAY ALL USER'S ACTIVE SCREEN


Posted By: boss? yvain Contact
/* LISTE DES SOURCES : *+
** DSPDEVU CMD *+
** DSPDEVUC CLP *+
** DSPDEVUD CLP *+
** DSPDEVUE DSPF *+
** DSPDEVUM CLP *+
** DSPDEVUS RPGLE *+
** QPDSPAJBL1 LF *+
** QPDSPAJBP PF *+
** ***************************************************************************+

S-ar putea să vă placă și