
|
/********************************************************************/ /* */ /* CPP DE LA CMD: ADDSRVPGM = ajout pgm de service (création ou màj)*/ /* */ /********************************************************************/ PGM PARM(&SRVPGM &SRCFILE &SRCMBR &BNDDIR &OPTION + &dbgview) DCL VAR(&SRVPGM) TYPE(*CHAR) LEN(20) DCL VAR(&SRCFILE) TYPE(*CHAR) LEN(20) DCL VAR(&SRCMBR) TYPE(*CHAR) LEN(10) DCL VAR(&BNDDIR) TYPE(*CHAR) LEN(20) DCL VAR(&OPTION) TYPE(*CHAR) LEN(10) DCL VAR(&DBGVIEW) TYPE(*CHAR) LEN(10) /**/ DCL VAR(&SRCTYP) TYPE(*CHAR) LEN(10) DCL VAR(&TEXTE) TYPE(*CHAR) LEN(50) DCL VAR(&SRVPGM_N) TYPE(*CHAR) LEN(10) DCL VAR(&SRVPGM_L) TYPE(*CHAR) LEN(10) DCL VAR(&SRCFILE_N) TYPE(*CHAR) LEN(10) DCL VAR(&SRCFILE_L) TYPE(*CHAR) LEN(10) DCL VAR(&BNDDIR_N) TYPE(*CHAR) LEN(10) DCL VAR(&BNDDIR_L) TYPE(*CHAR) LEN(10) /**/ DCL VAR(&ERRORSW) TYPE(*LGL) DCL VAR(&MSG) TYPE(*CHAR) LEN(100) DCL VAR(&MSGID) TYPE(*CHAR) LEN(7) DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(100) DCL VAR(&MSGF) TYPE(*CHAR) LEN(10) DCL VAR(&MSGFLIB) TYPE(*CHAR) LEN(10) /**/ MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERREUR)) /**/ CHGVAR VAR(&SRVPGM_N) VALUE(%SST(&SRVPGM 1 10)) CHGVAR VAR(&SRVPGM_L) VALUE(%SST(&SRVPGM 11 10)) CHGVAR VAR(&SRCFILE_N) VALUE(%SST(&SRCFILE 1 10)) CHGVAR VAR(&SRCFILE_L) VALUE(%SST(&SRCFILE 11 10)) CHGVAR VAR(&BNDDIR_N) VALUE(%SST(&BNDDIR 1 10)) CHGVAR VAR(&BNDDIR_L) VALUE(%SST(&BNDDIR 11 10)) /**/ /*--------------------*/ /* 1) CREATION MODULE */ /*--------------------*/ IF (&SRCMBR *EQ '*SRVPGM') THEN(CHGVAR &SRCMBR &SRVPGM_N) RTVMBRD FILE(&SRCFILE_L/&SRCFILE_N) MBR(&SRCMBR) + |
SRCTYPE(&SRCTYP) TEXT(&TEXTE)
 
IF COND(&SRCTYP = 'SQLRPGLE') THEN(DO)
CRTSQLRPGI OBJ(QTEMP/&SRCMBR) +
SRCFILE(&SRCFILE_L/&SRCFILE_N) +
SRCMBR(&SRCMBR) COMMIT(*NONE) +
OBJTYPE(*MODULE) OPTION(&OPTION) +
DBGVIEW(&DBGVIEW)
GOTO CMDLBL(FINMODULE)
enddo
 
 
 
IF COND(&SRCTYP = 'RPGLE') THEN(DO)
CRTRPGMOD MODULE(QTEMP/&SRCMBR) +
SRCFILE(&SRCFILE_L/&SRCFILE_N) +
SRCMBR(&SRCMBR) TEXT(*SRCMBRTXT) +
OPTION(&OPTION) DBGVIEW(&DBGVIEW) +
REPLACE(*YES)
GOTO CMDLBL(FINMODULE)
ENDDO
IF COND(&SRCTYP = 'CLLE') THEN(DO)
CRTCLMOD MODULE(QTEMP/&SRCMBR) +
SRCFILE(&SRCFILE_L/&SRCFILE_N) +
SRCMBR(&SRCMBR) TEXT(*SRCMBRTXT) +
OPTION(&OPTION) REPLACE(*YES) +
DBGVIEW(&DBGVIEW)
GOTO CMDLBL(FINMODULE)
ENDDO
IF COND(&SRCTYP = 'CLE') THEN(DO)
CRTCMOD MODULE(QTEMP/&SRCMBR) +
SRCFILE(&SRCFILE_L/&SRCFILE_N) +
SRCMBR(&SRCMBR) TEXT(*SRCMBRTXT) +
OPTION(&OPTION) DBGVIEW(&DBGVIEW) +
REPLACE(*YES)
GOTO CMDLBL(FINMODULE)
ENDDO
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Type de +
source incompatible') MSGTYPE(*ESCAPE)
GOTO CMDLBL(FINPGM)
 
FINMODULE:
 
CHGVAR VAR(&MSG) VALUE('Module ' *CAT &SRCMBR *BCAT +
|
' créé dans QTEMP.')
SNDPGMMSG MSG(&MSG) MSGTYPE(*INFO)
/*----------------------------*/
/* 2) CREATION PGM DE SERVICE */
/*----------------------------*/
/* NB: annule et remplace ==> recompile pgms utilisateurs */
/* il faut donc gérer la màj pour ne pas recompiler */
 
CHKOBJ OBJ(&SRVPGM_L/&SRVPGM_N) OBJTYPE(*SRVPGM)
/* création */
MONMSG MSGID(CPF9801) EXEC(DO) /* n'existe pas */
CRTSRVPGM SRVPGM(&SRVPGM_L/&SRVPGM_N) +
MODULE(QTEMP/&SRCMBR) EXPORT(*ALL) +
TEXT(&TEXTE) BNDDIR(&BNDDIR_N)
CHGVAR VAR(&MSG) VALUE('Pgm de service ' *CAT +
&SRVPGM_N *BCAT ' créé.')
SNDPGMMSG MSG(&MSG) MSGTYPE(*COMP)
GOTO suite
ENDDO
/* màj */
UPDSRVPGM SRVPGM(&SRVPGM_L/&SRVPGM_N) MODULE(QTEMP/&SRCMBR) +
BNDDIR(&BNDDIR_N)
CHGVAR VAR(&MSG) VALUE('Pgm de service ' *CAT +
&SRVPGM_N *BCAT ' modifié.')
SNDPGMMSG MSG(&MSG) MSGTYPE(*COMP)
suite:
/*---------------------------------*/
/* 3) AJOUT AU REPERTOIRE DE LIAGE */
/*---------------------------------*/
IF COND(&BNDDIR_N *NE '*NONE') THEN(DO)
CHKOBJ OBJ(&BNDDIR_L/&BNDDIR_N) OBJTYPE(*BNDDIR)
MONMSG MSGID(CPF9801) EXEC(DO) /* n'existe pas */
CRTBNDDIR BNDDIR(&BNDDIR_L/&BNDDIR_N)
CHGVAR VAR(&MSG) VALUE('Répertoire de liage ' *CAT +
&BNDDIR_N *BCAT ' créé.')
SNDPGMMSG MSG(&MSG)
ENDDO
/**/
ADDBNDDIRE BNDDIR(&BNDDIR_L/&BNDDIR_N) +
OBJ((&SRVPGM_L/&SRVPGM_N *SRVPGM))
MONMSG MSGID(CPF5D09 CPF9800) EXEC(GOTO +
CMDLBL(COMPMSG)) /* existe déjà non +
ajouté */
CHGVAR VAR(&MSG) VALUE('Pgm de service ' *CAT +
|
&SRVPGM_N *BCAT ' ajouté au répertoire de + liage ' *CAT &BNDDIR_N) SNDPGMMSG MSG(&MSG) MSGTYPE(*COMP)   /**/ ENDDO /**/ IF (&OPTION = '*EVENTF') THEN(DO) CHKOBJ OBJ(&SRVPGM_L/EVFEVENT) OBJTYPE(*FILE) MONMSG CPF9801 EXEC(DO) CRTDUPOBJ OBJ(EVFEVENT) FROMLIB(QTEMP) OBJTYPE(*FILE) + TOLIB(&SRVPGM_L) NEWOBJ(*OBJ) DATA(*NO) ENDDO CPYF FROMFILE(QTEMP/EVFEVENT) + TOFILE(&SRVPGM_L/EVFEVENT) FROMMBR(&SRVPGM_N) + TOMBR(&SRVPGM_N) MBROPT(*REPLACE) MONMSG CPF0000 CHGDTAARA DTAARA(*LDA (1 10)) VALUE(&SRVPGM_L) CHGDTAARA DTAARA(*LDA (11 10)) VALUE(&SRVPGM_N) ENDDO GOTO FINPGM /* RENVOI DES MESSAGES DE FIN NORMALE */ COMPMSG: RCVMSG MSGTYPE(*COMP) MSGDTA(&MSGDTA) MSGID(&MSGID) + MSGF(&MSGF) SNDMSGFLIB(&MSGFLIB) IF (&MSGID *EQ ' ') GOTO FINPGM SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + MSGDTA(&MSGDTA) MSGTYPE(*COMP) GOTO COMPMSG /* BOUCLE SUR MESSAGES *COMP */ /*----------------------------------------*/ ERREUR: /* GESTION DES ERREURS */ /*----------------------------------------*/ IF &ERRORSW SNDPGMMSG MSGID(CPF9899) + MSGF(QCPFMSG) MSGTYPE(*ESCAPE) /* 2EME FOIS*/ /* ARRET PGM*/ CHGVAR &ERRORSW '1' /* MISE EN PLACE DU SWTICH */   IF (&OPTION = '*EVENTF') THEN(DO) CHKOBJ OBJ(&SRVPGM_L/EVFEVENT) OBJTYPE(*FILE) MONMSG CPF9801 EXEC(DO) CRTDUPOBJ OBJ(EVFEVENT) FROMLIB(QTEMP) OBJTYPE(*FILE) + TOLIB(&SRVPGM_L) NEWOBJ(*OBJ) DATA(*NO) ENDDO CPYF FROMFILE(QTEMP/EVFEVENT) + TOFILE(&SRVPGM_L/EVFEVENT) FROMMBR(&SRVPGM_N) + |
TOMBR(&SRVPGM_N) MBROPT(*REPLACE) MONMSG CPF0000 CHGDTAARA DTAARA(*LDA (1 10)) VALUE(&SRVPGM_L) CHGDTAARA DTAARA(*LDA (11 10)) VALUE(&SRVPGM_N) ENDDO   /* RENVOI DES MESSAGES DE TYPE *DIAG SI FIN ANORMALE */ DIAGMSG: RCVMSG MSGTYPE(*DIAG) MSGDTA(&MSGDTA) MSGID(&MSGID) + MSGF(&MSGF) SNDMSGFLIB(&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) SNDMSGFLIB(&MSGFLIB) SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE) /**/ FINPGM: ENDPGM   |