EXECUTION D'UNE COMMANDE VARIABLE DANS UN PGM CL ------------------------------------------------ IL EST POSSIBLE DANS PROGRAMME CL D'EXECUTER UNE COMMANDE CONTENUE DANS UNE VARIABLE (recue, lue dans un fichier, etc...) Il faut passer par l'intermédiaire d'un pgm système QCMDEXC Ce pgm attend deux paramètres 1/ la cde à exécuter 2/ la longueur du premier paramètre dans une variable *DEC (15 5) |
Soit un pgm qui reçoit + une zone option 1 = DSPFD /* infos générales sur un fichier */ 2 = DSPFFD /* liste des zones d'un fichier */ 3 = DSPPFM /* affichage brut du contenu */ + une zone fichier contenant le nom du fichier à traiter PGM PARM(&OPTION &FICHIER) DCL VAR(&COMMANDE) TYPE(*CHAR) LEN(50) DCL VAR(&LONGUEUR) TYPE(*DEC) LEN(15 5) VALUE(50) DCL VAR(&OPTION) TYPE(*CHAR) LEN(1) DCL VAR(&FICHIER) TYPE(*CHAR) LEN(10) IF COND(&OPTION = '1') THEN(CHGVAR VAR(&COMMANDE) VALUE('DSPFD')) IF COND(&OPTION = '2') THEN(CHGVAR VAR(&COMMANDE) VALUE('DSPFFD')) IF COND(&OPTION = '3') THEN(CHGVAR VAR(&COMMANDE) VALUE('DSPPFM')) CHGVAR VAR(&COMMANDE) VALUE(&COMMANDE *BCAT &FICHIER) CALL PGM(QCMDEXC) PARM(&COMMANDE &LONGUEUR) ENDPGM |
QCMDEXC fait précéder l'exécution par l'apparition de l'invite si la commande contient des caractères d'invite sélective ( ? ) Il existe un autre pgm système QCMDCHK qui contrôle la validite d'une commande sans l'exécuter. il traite lui aussi les invites sélectives. Vous pouvez essayer sur l'ecran des commandes. CALL QCMDEXC PARM('DSPJOB' 6) <-- exécution CALL QCMDEXC PARM('?DSPJOB' 7) <-- Invite puis exécution CALL QCMDCHK PARM('?DSPJOB' 7) <-- Invite seule CALL QCMDCHK PARM('?DSPJOV' 7) <-- Message d'erreur |