
|
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 |