PGM PARM(&PRF &MDP &ADP &RQS) DCL VAR(&PRF) TYPE(*CHAR) LEN(10) DCL VAR(&MDP) TYPE(*CHAR) LEN(512) DCL VAR(&BIB) TYPE(*CHAR) LEN(10) DCL VAR(&ADP) TYPE(*CHAR) LEN(4) DCL VAR(&RQS) TYPE(*CHAR) LEN(50) DCL VAR(&CUR) TYPE(*CHAR) LEN(10) DCL VAR(&CURCOD) TYPE(*CHAR) LEN(12) DCL VAR(&PRFCOD) TYPE(*CHAR) LEN(12) DCL VAR(&USRLIBL) TYPE(*CHAR) LEN(2750) DCL VAR(&CMD) TYPE(*CHAR) LEN(3000) DCL VAR(&LG) TYPE(*DEC) LEN(15 5) VALUE(3000) DCL VAR(&INLPGM) TYPE(*CHAR) LEN(10) DCL VAR(&INLPGML) TYPE(*CHAR) LEN(10) DCL VAR(&INLMNU) TYPE(*CHAR) LEN(10) DCL VAR(&INLMNUL) TYPE(*CHAR) LEN(10) DCL VAR(&ATNPGM) TYPE(*CHAR) LEN(10) DCL VAR(&ATNPGML) TYPE(*CHAR) LEN(10) DCL VAR(&MSGQ) TYPE(*CHAR) LEN(10) DCL VAR(&MSGQL) TYPE(*CHAR) LEN(10) DCL VAR(&DLVRY) TYPE(*CHAR) LEN(10) DCL VAR(&JOBD) TYPE(*CHAR) LEN(10) DCL VAR(&JOBDL) TYPE(*CHAR) LEN(10) DCL VAR(&OUTQ) TYPE(*CHAR) LEN(10) DCL VAR(&OUTQL) TYPE(*CHAR) LEN(10) DCL VAR(&DEV) TYPE(*CHAR) LEN(10) DCL VAR(&LOG) TYPE(*CHAR) LEN(1) DCL VAR(&SEV) TYPE(*DEC) LEN(2 0) DCL VAR(&LOGTXT) TYPE(*CHAR) LEN(10) DCL VAR(&INQMSG) TYPE(*CHAR) LEN(10) DCL VAR(&MDPL) TYPE(*INT) VALUE(512) DCL VAR(&ERRCOD) TYPE(*CHAR) LEN(15) + VALUE(X'00000000') DCL VAR(&CCSID) TYPE(*INT) VALUE(-1) /* VARIABLES UTILISEES PAR LA GESTION DE MESSAGES */ DCL &ERRORSW *LGL /* SWITCH */ DCL &MSGID *CHAR LEN(7) /* ID MSG */ DCL &MSGDTA *CHAR LEN(100) /* DATA */ DCL &MSGF *CHAR LEN(10) /* FICHIER */ DCL &MSGFLIB *CHAR LEN(10) /* BIBLI */ /* GESTION DES ERREURS */ MONMSG MSGID(CPF0000) EXEC(GOTO ERREUR)   /* VALIDATION DES PROFILS */ |
CALL QSYGETPH PARM('*CURRENT' ' ' &CURCOD) CALL QSYGETPH PARM(&PRF &MDP &PRFCOD &ERRCOD &MDPL &CCSID) /* RECHERCHE DES INFOS *LIBL */ RTVJOBA LOGLVL(&LOG) LOGSEV(&SEV) LOGTYPE(&LOGTXT) + INQMSGRPY(&INQMSG) OUTQ(&OUTQ) + OUTQLIB(&OUTQL) USRLIBL(&USRLIBL) + CURLIB(&CUR) PRTDEV(&DEV) RTVUSRPRF USRPRF(&PRF) INLPGM(&INLPGM) + INLPGMLIB(&INLPGML) JOBD(&JOBD) + JOBDLIB(&JOBDL) MSGQ(&MSGQ) + MSGQLIB(&MSGQL) CURLIB(&BIB) + INLMNU(&INLMNU) INLMNULIB(&INLMNUL) + DLVRY(&DLVRY) ATNPGM(&ATNPGM) + ATNPGMLIB(&ATNPGML)   /* MISE EN PLACE DE *LIBL */ AF4TOOL/REINZJOB JOBD(&JOBDL/&JOBD) CHGCURLIB CURLIB(&BIB)   /* MISE EN PLACE PGM ATTN ET MSGQ UTILISATEUR BREAK */ IF (&ATNPGM *NE '*SYSVAL') THEN(+ SETATNPGM PGM(&ATNPGML/&ATNPGM) ) CHGMSGQ MSGQ(&MSGQL/&MSGQ) DLVRY(&DLVRY) MONMSG CPF0000 /* MISE EN PLACE DE LA CDE à EXECUTER */ IF (&RQS *EQ ' ') THEN(DO) IF (&INLPGM *NE '*NONE') + CHGVAR VAR(&RQS) VALUE('CALL ' *CAT &INLPGML *TCAT + '/' *CAT &INLPGM) ELSE + CHGVAR VAR(&RQS) VALUE('GO ' *CAT &INLMNUL *TCAT + '/' *CAT &INLMNU) ENDDO /* SI DEMANDE D'ADOPTION DE DROITS APPEL D'UN PGM EN *OWNER */ IF (&ADP *EQ '*YES') THEN(DO) CALL PRFCPPADP PARM(&PRFCOD &RQS) ENDDO ELSE DO /* CHANGEMENT DE PROFIL ET EXECUTION DE LA DEMANDE */ CALL QWTSETP PARM(&PRFCOD) CALL QCMDEXC PARM(&RQS 50) MONMSG MSGID(CPF0000) ENDDO /* RETOUR A L'ENVIRONEMENT DE DEBUT DE PGM */ |
CALL QWTSETP PARM(&CURCOD) CHGMSGQ MSGQ(&MSGQL/&MSGQ) DLVRY(*HOLD) MONMSG MSGID(CPF0000) CHGCURLIB CURLIB(&CUR) CHGVAR &CMD ('CHGLIBL LIBL(' *TCAT &USRLIBL *TCAT ')') CALL QCMDEXC PARM(&CMD &LG) SETATNPGM PGM(*PRVINVLVL) CHGJOB PRTDEV(&DEV) LOG(&LOG &SEV + &LOGTXT) INQMSGRPY(&INQMSG) IF COND(&OUTQ *NE '*DEV') THEN(+ CHGJOB OUTQ(&OUTQL/&OUTQ) ) /* ANNULATION DES VALIDATIONS DE PROFIL */ CALL QSYRLSPH PARM(&PRFCOD) CALL QSYRLSPH PARM(&CURCOD)   RETURN   /*----------------------------------------*/ ERREUR: /* GESTION DES ERREURS */ /*----------------------------------------*/ IF &ERRORSW SNDPGMMSG MSGID(CPF9999) + MSGF(QCPFMSG) MSGTYPE(*ESCAPE) /* 2EME FOIS*/ /* ARRET PGM*/ CHGVAR &ERRORSW '1' /* MISE EN PLACE DU SWTICH */   /* RENVOI DES MESSAGES DE TYPE *DIAG SI FIN ANORMALE */ DIAGMSG: RCVMSG MSGTYPE(*DIAG) MSGDTA(&MSGDTA) MSGID(&MSGID) + MSGF(&MSGF) MSGFLIB(&MSGFLIB) IF (&MSGID *EQ ' ') GOTO EXCPMSG SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + MSGDTA(&MSGDTA) MSGTYPE(*DIAG) GOTO DIAGMSG /* BOUCLE SUR MESSAGES *DIAG */   /* RENVOI DU MESSAGE D'ERREUR */ EXCPMSG: RCVMSG MSGTYPE(*EXCP) MSGDTA(&MSGDTA) MSGID(&MSGID) + MSGF(&MSGF) MSGFLIB(&MSGFLIB) SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE) ENDPGM |