Les pgms système QCMDEXC,QCMDCHK en CL

BoTTom |    Changer de couleur
 
            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)
 
 
 
 


|    Changer de couleur
 
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


|    Changer de couleur
 
 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
 
 
 
 





©AF400