CPP de la cde CPYDBSTMF

BoTTom |
             PGM        PARM(&FICLIB &path)
             dcl &ficlib   *char   20
             dcl &path     *char   256
             dcl &rcdlen   *dec   (5 0)
 /* VARIABLES UTILISEES PAR LA GESTION DE MESSAGES */
             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   */
 
             COPYRIGHT  TEXT(Volubis)
             MONMSG     MSGID(CPF0000) EXEC(GOTO ERREUR)
 
 /* CORPS DU PROGRAMME */
 
             CHKOBJ     OBJ(%SST(&FICLIB 11 10)/%SST(&FICLIB 1 10)) +
                          OBJTYPE(*FILE) AUT(*READ)
 
      /* creation du suer space pour rtvdblen */
 
             DLTUSRSPC  USRSPC(QTEMP/CPYDBSTMF)
              MONMSG     MSGID(CPF0000) EXEC(RCVMSG RMV(*YES))
             call quscrtus parm('CPYDBSTMF QTEMP'      +
                                'cpydbstmf'            +
                                x'000000FF'            +
                                x'00'                  +
                                '*USE'                 +
                                'user space temporaire')
 
  /* fonction RPG-IV, retrouve la lg (du plus grand format) */
             CALLPRC    PRC(RTVDBLEN) PARM(&FICLIB) RTNVAL(&RCDLEN)
 
  /* création d'un fichier temporaire et copie */
             DLTF       FILE(QTEMP/CPYDBSTMF)
              MONMSG     MSGID(CPF0000) EXEC(RCVMSG RMV(*YES))
             CRTPF      FILE(QTEMP/CPYDBSTMF) RCDLEN(&RCDLEN)
 
             CPYF       FROMFILE(%SST(&FICLIB 11 10)/%SST(&FICLIB 1 +
                          10)) TOFILE(QTEMP/cpydbstmf) +
                          MBROPT(*REPLACE) FMTOPT(*NOCHK)
 
             CPYTOSTMF  +
                          FROMMBR('qsys.lib/qtemp.lib/cpydbstmf.file +


|
                          /cpydbstmf.mbr') TOSTMF(&PATH) +
                          STMFCODPAG(1252)
 
 /* RENVOI DES MESSAGES DE TYPE *COMP SI FIN NORMALE */
 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(CPF9899) +
                          MSGF(QCPFMSG) MSGTYPE(*ESCAPE) /* 2EME FOIS*/
                                                         /* ARRET PGM*/
             CHGVAR     &ERRORSW '1' /* MISE EN PLACE DU SWITCH     */
 
 /* 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