CPP des cdes XXXOBJSRC (gérer objet et source)

BoTTom |
             PGM        PARM(&NOMOBJ &OBJTYP &TXT &NEWNAM &COD)
/*                                                                   */
/* CPP IDENTIQUE POUR LES COMMANDES :                                */
/*                                                                   */
/*     --CODE S                     STROBJSEU STRSEU à PARTIR/OBJET  */
/*            T                     CHGOBJSRCT MODIF TEXTE OBJ ET SRC*/
/*            R                     RNMOBJSRC  RENOME OBJ ET SRC     */
/*            D                     DLTOBJSRC  DLT    OBJ ET SRC     */
/*                                                                   */
/*                                                                   */
             DCL        VAR(&NOMOBJ)  TYPE(*CHAR) LEN(20)
             DCL        VAR(&OBJTYP)  TYPE(*CHAR) LEN(7)
             DCL        VAR(&TXT)  TYPE(*CHAR) LEN(50)
             DCL        VAR(&NEWNAM)  TYPE(*CHAR) LEN(10)
             DCL        VAR(&COD) TYPE(*CHAR) LEN(1)
             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   */
             DCL        &SRCL *CHAR 10
             DCL        &SRCF *CHAR 10
             DCL        &SRCM *CHAR 10
             DCL        &RTNLIB *CHAR 10
             DCL        &CHGINFO *CHAR 42
             DCL        &ERRCOD  *CHAR 4
             MONMSG     MSGID(CPF0000) EXEC(GOTO ERREUR)
 /* CHGOBJSRCT */
             IF (&COD *EQ 'T') DO
              CHGOBJD    OBJ(%SST(&NOMOBJ 11 10)/%SST(&NOMOBJ 1 10)) +
                          OBJTYPE(&OBJTYP) TEXT(&TXT)
             ENDDO
 /* RNMOBJSRC  */
             IF (&COD *EQ 'R') DO
             RNMOBJ     OBJ(%SST(&NOMOBJ 11 10)/%SST(&NOMOBJ 1 10)) +
                          OBJTYPE(&OBJTYP) NEWOBJ(&NEWNAM)
             CHGVAR     VAR(%SST(&NOMOBJ 1 10)) VALUE(&NEWNAM)
             ENDDO
 /* DANS TOUS LES CAS */
             RTVOBJD    OBJ(%SST(&NOMOBJ 11 10)/%SST(&NOMOBJ 1 10)) +
                          OBJTYPE(&OBJTYP) RTNLIB(&RTNLIB)
              MONMSG     MSGID(CPF0000) EXEC(GOTO SRCPRB)
             RTVPGMSRC  PGM(%SST(&NOMOBJ 11 10)/%SST(&NOMOBJ 1 10)) +
                          RTNSRCF(&SRCF) RTNSRCL(&SRCL) RTNSRCM(&SRCM)


|
              MONMSG     MSGID(CPF0000) EXEC(GOTO SRCPRB)
 
             CHGVAR %SST(&NOMOBJ 11 10) &RTNLIB
             CHKOBJ     OBJ(&SRCL/&SRCF) OBJTYPE(*FILE) +
                          MBR(&SRCM)
             MONMSG     MSGID(CPF0001) EXEC(GOTO SRCPRB)
 /* CHGOBJSRCT */
             IF (&COD *EQ 'T') DO
             CHGPFM     FILE(&SRCL/&SRCF) MBR(&SRCM) TEXT(&TXT)
             ENDDO
 /* STROBJSEU  */
             IF (&COD *EQ 'S') DO
             STRSEU     SRCFILE(&SRCL/&SRCF) SRCMBR(&SRCM)
             RTVMBRD    FILE(&SRCL/&SRCF) MBR(&SRCM) TEXT(&TXT)
             CHGOBJD    OBJ(%SST(&NOMOBJ 11 10)/%SST(&NOMOBJ 1 10)) +
                          OBJTYPE(&OBJTYP) TEXT(&TXT)
             ENDDO
 /* RNMOBJSRC  */
             IF (&COD *EQ 'R') DO
             RNMM       FILE(&SRCL/&SRCF) MBR(&SRCM) +
                          NEWMBR(&NEWNAM)
 /* API QUI PERMET DE MODIFIER LES INFOS DANS L'OBJET        */
 
             CHGVAR %BIN(&CHGINFO 1 4)  1 /* NBR DE MODIFS      E */
             CHGVAR %BIN(&CHGINFO 5 4)  1 /* CLE 1 = MODIF SOURCE */
             CHGVAR %BIN(&CHGINFO 9 4) 30 /* LG MODIF             */
             CHGVAR %SST(&CHGINFO 13 30) +
                                        (&SRCF *CAT &SRCL *CAT &NEWNAM)
             CHGVAR %BIN(&ERRCOD)       0
             CALL QLICOBJD PARM( +
                                 &RTNLIB    +
                                 &NOMOBJ    +
                                 &OBJTYP    +
                                 &CHGINFO   +
                                 &ERRCOD    )
             ENDDO
 /* DLTOBJSRC  */
             IF (&COD *EQ 'D') DO
             RMVM       FILE(&SRCL/&SRCF) MBR(&SRCM)
             IF         COND(&OBJTYP = '*FILE') THEN(DLTF +
                          FILE(%SST(&NOMOBJ 11 10)/%SST(&NOMOBJ 1 10)))
             IF         COND(&OBJTYP = '*PGM') THEN(DLTPGM  +
                          PGM(%SST(&NOMOBJ 11 10)/%SST(&NOMOBJ 1 10)))
             IF         COND(&OBJTYP = '*CMD') THEN(DLTCMD  +


|
                          CMD(%SST(&NOMOBJ 11 10)/%SST(&NOMOBJ 1 10)))
             IF         COND(&OBJTYP = '*MENU') THEN(DLTMNU +
                          MENU(%SST(&NOMOBJ 11 10)/%SST(&NOMOBJ 1 10)))
             IF         COND(&OBJTYP = '*TBL') THEN(DLTTBL +
                          TBL(%SST(&NOMOBJ 11 10)/%SST(&NOMOBJ 1 10)))
             ENDDO
 /* FIN ==> RENVOI DES MESSAGES DE TYPE *COMP */
             GOTO COMPMSG
 SRCPRB:     SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) +
                          MSGDTA('Impossible de modifier le +
                          source') MSGTYPE(*DIAG)
 COMPMSG:    RCVMSG     MSGTYPE(*COMP) MSGDTA(&MSGDTA) MSGID(&MSGID) +
                          MSGF(&MSGF) SNDMSGFLIB(&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     */
 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      */
 EXCPMSG:    RCVMSG     MSGTYPE(*EXCP) MSGDTA(&MSGDTA) MSGID(&MSGID) +
                          MSGF(&MSGF) SNDMSGFLIB(&MSGFLIB)
             SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
                          MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE)
             ENDPGM




©AF400