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