CPP de la commande DS (DUPSPOOL)

BoTTom |
             PGM        PARM(&SPLF &EDIT &JOBQ &SPLNBR &SPLF2 &CPI +
                          &LPI &LI &COL &OUTQQ &HOLD &SAVE &USRDTA)
             DCL &SPLF *CHAR 10
             DCL &EDIT *CHAR 4
             DCL &JOBQ *CHAR 26
             DCL &JOB  *CHAR 10
             DCL &USER *CHAR 10
             DCL &NBR  *CHAR  6
             DCL &SPLNBR *CHAR  5
             DCL &SPLF2 *CHAR 10
             DCL &CPI *CHAR 2
             DCL &LPI *CHAR 1
             DCL &LI *CHAR 2
             DCL &COL *CHAR 3
             DCL &OUTQQ *CHAR 20
             DCL &OUTQ  *CHAR 10
             DCL &OUTQL *CHAR 10
             DCL &HOLD  *CHAR 4
             DCL &SAVE *CHAR 4
             DCL &USRDTA *CHAR 10
 /* 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   */
 /* VARIABLES API QUSRSPLA */
             DCL        &SPLNBRB *CHAR   4
             DCL        &JOBFULL *CHAR  26
             DCL        &RTVAR   *CHAR 432
             DCL        &RTVARL  *CHAR   4
 /* VARIABLES DE TRAVAIL */
             DCL        &SPLNBRN *DEC  (5 0)
             DCL        &LINUM   *DEC  (3 0)
             DCL        &COLNUM  *DEC  (3 0)
             DCL        &CPINUM  *DEC  (3 0)
             DCL        &LPINUM  *DEC  (3 0)
             DCL        &CPI3    *CHAR 3
             DCL        &LPI3    *CHAR 3
 
             MONMSG     MSGID(CPF0000) EXEC(GOTO ERREUR)
 
 /* CORPS DU PROGRAMME */
             DLTF QTEMP/SPLF


|
               MONMSG     MSGID(CPF0000) EXEC(RCVMSG MSGTYPE(*EXCP))
             CRTDUPOBJ  OBJ(SPLF) FROMLIB(AF4TOOL) OBJTYPE(*FILE) +
                          TOLIB(QTEMP)
 
             IF         COND(&JOBQ *EQ '*') THEN(RTVJOBA JOB(&JOB) +
                          USER(&USER) NBR(&NBR))
             ELSE DO
                  CHGVAR &JOB %SST(&JOBQ 1 10)
                  CHGVAR &USER %SST(&JOBQ 11 10)
                  CHGVAR &NBR %SST(&JOBQ 21 6)
             ENDDO
 
 
             CPYSPLF    FILE(&SPLF) TOFILE(QTEMP/SPLF) +
                          JOB(&NBR/&USER/&JOB) SPLNBR(&SPLNBR) +
                          CTLCHAR(*FCFC)
 
/* API */
             IF (&SPLNBR = '*ONLY') CHGVAR %BIN(&SPLNBRB) 0
             ELSE IF (&SPLNBR = '*LAST') CHGVAR %BIN(&SPLNBRB) -1
                  ELSE DO
                  CHGVAR &SPLNBRN &SPLNBR
                  CHGVAR %BIN(&SPLNBRB) &SPLNBRN
                  ENDDO
             CHGVAR %BIN(&RTVARL) 432
             CHGVAR &JOBFULL (&JOB !! &USER !! &NBR)
             CALL QUSRSPLA PARM(&RTVAR &RTVARL 'SPLA0100' +
                                &JOBFULL ' ' ' ' &SPLF &SPLNBRB)
 
/* EDITION */
             IF         COND(&EDIT = '*YES') THEN(CHGDTA +
                          DFUPGM(AF4TOOL/DFUSPL) FILE(QTEMP/SPLF))
 
/* VALEURS PAR DFT */
             IF         COND(%SST(&OUTQQ 1 4) *EQ '*JOB') +
                          THEN(RTVJOBA OUTQ(&OUTQ) OUTQLIB(&OUTQL))
             ELSE DO
             IF         COND(%SST(&OUTQQ 1 5) *EQ '*SAME') +
                          THEN(CHGVAR &OUTQQ %SST(&RTVAR 183 20))
                  CHGVAR &OUTQ %SST(&OUTQQ 1 10)
                  CHGVAR &OUTQL %SST(&OUTQQ 11 10)
             ENDDO
             IF (&LI = '*') THEN(DO)
                            CHGVAR &LINUM %BIN(&RTVAR 425 4)


|
                            CHGVAR &LI &LINUM
                            ENDDO
             IF (&COL = '*') THEN(DO)
                            CHGVAR &COLNUM %BIN(&RTVAR 429 4)
                            CHGVAR &COL &COLNUM
                            ENDDO
             IF (&CPI = '*') THEN(DO)
                            CHGVAR &CPINUM %BIN(&RTVAR 177 4)
                            CHGVAR &CPI3 &CPINUM
                            CHGVAR &CPI %SST(&CPI3 1 2)
                            ENDDO
             IF (&LPI = '*') THEN(DO)
                            CHGVAR &LPINUM %BIN(&RTVAR 173 4)
                            CHGVAR &LPI3 &LPINUM
                            CHGVAR &LPI %SST(&LPI3 2 2)
                            ENDDO
             IF (&HOLD = '*') THEN(DO)
                            CHGVAR &HOLD %SST(&RTVAR 121 4)
                            ENDDO
             IF (&SAVE = '*') THEN(DO)
                            CHGVAR &SAVE %SST(&RTVAR 131 4)
                            ENDDO
             IF (&USRDTA = '*') THEN(DO)
                            CHGVAR &USRDTA %SST(&RTVAR 91 10)
                            ENDDO
             IF (&SPLF2 = '*SAME') THEN(DO)
                            CHGVAR &SPLF2 &SPLF
                            ENDDO
 
             OVRPRTF    FILE(QSYSPRT) PAGESIZE(&LI &COL) LPI(&LPI) +
                          CPI(&CPI) CTLCHAR(*FCFC) PRTTXT(*BLANK) +
                          OUTQ(&OUTQL/&OUTQ) HOLD(&HOLD) +
                          SAVE(&SAVE) USRDTA(&USRDTA) SPLFNAME(&SPLF2)
 
             CPYF       FROMFILE(QTEMP/SPLF) TOFILE(QSYSPRT)
 
             DLTOVR QSYSPRT
 
 /* ENVOI D'UN MESSAGE DE TYPE *COMP SI FIN NORMALE */
             SNDPGMMSG  MSG('Fichier spool copié') MSGTYPE(*COMP)
             RETURN
 
              /*----------------------------------------*/
 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     */
 
 /* 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)
             ENDPGM




©AF400