Soumettre une commande à distance

BoTTom |
PGM PARM(&CMD &DDMLIB &RMTNAM &LIG &CTL)
/*-------------------------------------------------------------------*/
DCL &CMD    *CHAR 2000  /*  Commande à exécuter                      */
DCL &DDMLIB *CHAR 20    /*  Bibliothèque est fichier DDM             */
DCL &RMTNAM *CHAR 10    /*  LIEU ÉLOIGNÉ                             */
DCL &LIG    *CHAR 05    /*  Garder la ligne                          */
DCL &CTL    *CHAR 01    /*  Controle syntaxe de la commande          */
DCL &LIGI   *CHAR 05    /*  Ligne état initiale                      */
DCL &DDM    *CHAR 10    /*  Fichier de communication                 */
DCL &LIB    *CHAR 10    /*  Bibliothèque                             */
DCL &CRTDDMF *LGL       /*  INDIC SI CREATION TEMP. DU DDMF          */
/*-------------------------------------------------------------------*/
             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   */
             MONMSG     MSGID(CPF0000) EXEC(GOTO ERREUR)
 
/* Formatage des variables recues                                    */
             IF (%SST(&DDMLIB 1 10) = '*RMTLOCNAME') DO
             CRTDDMF    FILE(QTEMP/£££££DDMF) +
                          RMTFILE(QGPL/£££££DDMF) +
                          RMTLOCNAME(&RMTNAM) TEXT('fichier +
                          temporaire pour RMTASCMD')
             CHGVAR &DDM '£££££DDMF'
             CHGVAR &LIB 'QTEMP'
             CHGVAR &CRTDDMF '1'
             ENDDO
             ELSE DO
             CHGVAR     &CRTDDMF '0'
             CHGVAR     VAR(&DDM) VALUE(%SST(&DDMLIB 01 10))
             CHGVAR     VAR(&LIB) VALUE(%SST(&DDMLIB 11 10))
             IF         COND(&LIB *EQ '*CURLIB') THEN(DO)
             RTVJOBA    CURLIB(&LIB)
             ENDDO
             CHKOBJ     OBJ(&LIB/&DDM) OBJTYPE(*FILE)
             ENDDO
/* controle syntaxe commande                                        */
             IF         COND(&CTL *EQ 'O') THEN(DO)
                        CALL       PGM(QCMDCHK) PARM(&CMD 2000)
             ENDDO
/* garder la ligne après exécution                                  */
             RTVJOBA    DDMCNV(&LIGI)


|
             CHGJOB     DDMCNV(&LIG)
/* Exécution de la commande                                         */
             SBMRMTCMD  CMD(&CMD) DDMFILE(&LIB/&DDM)
 
             CHGJOB     DDMCNV(&LIGI)
             IF &CRTDDMF (DLTF QTEMP/£££££DDMF)
/*                                                                  */
/* Sous programme de GESTION DES MESSAGES                           */
/*                                                                  */
 /* RENVOI DES MESSAGES DE TYPE *INFO & *COMP SI FIN NORMALE */
 INFOMSG:    RCVMSG     MSGTYPE(*INFO) MSGDTA(&MSGDTA) MSGID(&MSGID) +
                          MSGF(&MSGF) MSGFLIB(&MSGFLIB)
             IF         (&MSGID *EQ '       ') GOTO COMPMSG
             SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
                          MSGDTA(&MSGDTA) MSGTYPE(*INFO)
             GOTO       INFOMSG /* BOUCLE SUR MESSAGES *INFO      */
 COMPMSG:    RCVMSG     MSGTYPE(*COMP) MSGDTA(&MSGDTA) MSGID(&MSGID) +
                          MSGF(&MSGF) MSGFLIB(&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     */
 
 /* RENVOI DES MESSAGES DE TYPE *DIAG SI FIN ANORMALE */
 DIAGMSG:    RCVMSG     MSGTYPE(*DIAG) MSGDTA(&MSGDTA) MSGID(&MSGID) +
                          MSGF(&MSGF) MSGFLIB(&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) MSGFLIB(&MSGFLIB)
             SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
                          MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE)
             ENDPGM





©AF400