
|
PGM PARM(&PGM &SRCF &SRCM &TXT &AUT &OPT) DCL &PGM *CHAR 20 DCL &SRCF *CHAR 20 DCL &SRCM *CHAR 10 DCL &TXT *CHAR 50 DCL &AUT *CHAR 10 DCL &OPT *CHAR 178 DCL &DAT *CHAR 13 DCL &CURLIB *CHAR 10 DCL &SRCLIB *CHAR 10 DCL &SRCTXT *CHAR 50 DCL &ERRID *CHAR 7 /* VARIABLES UTILISEES PAR LA GESTION DE MESSGAES */ 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 */ MONMSG MSGID(CPF0000) EXEC(GOTO ERREUR)   IF (%SST(&PGM 11 10) = '*CURLIB') THEN(DO) RTVJOBA CURLIB(&CURLIB) CHGVAR %SST(&PGM 11 10) &CURLIB ENDDO IF (&SRCM = '*PGM') THEN(+ CHGVAR &SRCM %SST(&PGM 1 10)) RTVMBRD FILE(%SST(&SRCF 11 10)/%SST(&SRCF 1 10)) + MBR(&SRCM) RTNLIB(&SRCLIB) + SRCCHGDATE(&DAT) TEXT(&SRCTXT) IF (%SST(&SRCF 11 10) = '*LIBL') THEN(+ CHGVAR %SST(&SRCF 11 10) &SRCLIB) IF (&TXT = '*BLANK') THEN(+ CHGVAR &TXT ' ') IF (&TXT = '*SRCMBRTXT') THEN(+ CHGVAR &TXT &SRCTXT)   OVRDBF FILE(SRCFIC) TOFILE(%SST(&SRCF 11 + 10)/%SST(&SRCF 1 10)) MBR(&SRCM)   CALL CRTPGMG PARM(&PGM + &TXT + &SRCF + &SRCM + &DAT + |
&AUT +
&OPT +
&ERRID )
 
DLTOVR FILE(SRCFIC)
 
IF (&ERRID ^= ' ') DO
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Pgm non +
crée suite à erreur ' !! &ERRID) +
MSGTYPE(*ESCAPE)
ENDDO
 
/* RENVOI DES MESSAGES DE TYPE *COMP SI FIN NORMALE */
COMPMSG: RCVMSG MSGTYPE(*COMP) MSGDTA(&MSGDTA) MSGID(&MSGID) +
MSGF(&MSGF) MSGFLIB(&MSGFLIB)
IF (&MSGID *EQ ' ') RETURN /* FIN DU PGM */
SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
MSGDTA(&MSGDTA) MSGTYPE(*COMP)
GOTO COMPMSG /* BOUCLE SUR MESSAGES *COMP */
 
/*----------------------------------------*/
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
|