CPP de la commande ADDSRVPGM

BoTTom |
/********************************************************************/
/*                                                                  */
/* 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
 




©AF400