Commandes utilisateur.

BoTTom |    Changer de couleur
                             C O M M A N D E S 
                             ----------------- 
 
 
                            D E F I N I T I O N
                            -------------------
 
 * Une commande est un ordre que l'on envoie au système pour réaliser
 une fonction, soit en interactif, soit au cours d'un traitement par lot
 * c'est un appel de programme "déguisé".    * Créer une commande permet :    - De disposer d'un guide opérateur simple pour introduire les paramètres.    - D'appeler un programme d'application en demandant au système     de contrôler la validité des paramètres.    - De transmettre des valeurs par défaut.    - De contrôler la dépendance des paramètres entre eux.  


|    Changer de couleur
 
             D E S C R I P T I O N     D E S     C O M M A N D E S
             -----------------------------------------------------
 
* Chaque commande comprend : - Son nom.  (10 caractères)
 
                             - Des mots-clés.  (maximum 75)
 
                             - Des valeurs (paramètres) en réponse à chaque
                                mot-clé.
 
* La définition d'une commande comprend principalement 2 parties :
 
 - La définition elle-même qui spécifie son nom,
 les paramètres nécessaires et les contrôles à réaliser sur ces paramètres
 
 - Le programme de traitement associé à la commande qui réalise la fonction.
 
     . Ce programme peut être en COBOL, RPG, CLP, etc...
 
     . Ce programme est appelé C.P.P.  (Command Processing Program)
 


|    Changer de couleur
 
        C O M M E N T     C R E E R     U N E     C O M M A N D E     ?
        ---------------------------------------------------------------
 
* Utiliser les « ordres » de définition de commande pour :
 
   - Définir les mots-clés et la valeur des paramètres qui seront acceptées.
 
   - Définir le guide opérateur.
    Les ordres seront enregistrés dans un fichier source.  (QCMDSRC)     Les touches sont prises en charge par l'OS.     * Écrire le C.P.P. qui réalise la fonction demandée et le compiler.     * Créer la commande en utilisant la commande CRTCMD  


|    Changer de couleur
                            L ' O R D R E     C M D
                            -----------------------
 
CMD PROMPT ( *NONE                 )
             Identifieur de message
             'Constante'
 
* Cet ordre est obligatoire.
 
* Seuls les 30 premiers caractères de la constante
   ou du texte associé à l'identifiant du message seront utilisés.
 
 
 
 
 
 
 
 
 
 
 


|    Changer de couleur
                           L ' O R D R E     P A R M
                           -------------------------
 
* Un ordre PARM définit un paramètre.
 
* Il y a autant de PARM que de paramètres dans la commande.
 
* L'ordre d'écriture des PARM détermine l'ordre du passage
   des paramètres au C.P.P.
 Par contre, l'ordre d'affichage sur l'invite peut être différent.
  * 75 PARM maximum peuvent être définis dans une commande.   * Tous les paramètres obligatoires doivent être codifiés    en tête de la commande.        


|    Changer de couleur
                           L ' O R D R E     P A R M     ( S Y N T A X E )
                           -----------------------------------------------
PARM mot-clé-1(______) mot-clé-2(______) etc....
 
     KWD ( nom du mot-clé )
 
     TYPE ( *DEC     )   Numérique
            *LGL         valeur booléenne
            *CHAR        alphanumérique
            *NAME        alphanumérique avec contrôle équivalent à CHECK(VN )
            *GENERIC     nom générique
            *CMD         le contenu du paramètre doit être une cde valide
            *DATE        date reçue sous la forme SAAMMJJ
            *TIME        heure sous la forme hhmmss ou 'hh:mm:ss'
            *HEX         valeur hexadécimale
            *ZEROELEM **
            *INT2         binaire (2 octets)
            *INT4            "    (4  "    )
            *NULL     **
            *VARNAME  **
            *X        **                      ** pour les commandes IBM
            Etiquette     nom d'un paragraphe (label)


|    Changer de couleur
 
     LEN ( taille du paramètre )

    - Pour les types de données *INT2, *INT4
         *DATE, *TIME, *CMD, *ZEROELEM, *NULL ou Etiquette, pas de longueur.       --------------------------------        -------------------------------     !   Type   ! Défaut ! Maximum  !        !   Type    ! Maximum ! C.P.P.!     --------------------------------        -------------------------------     ! *DEC     !  15.5  !   24.9   !        ! *DATE     !    8    !   7   !     ! *LGL     !   1    !    1     !        ! *TIME     !    8    !   6   !     ! *CHAR    !  32    ! 2000     !        ! *ZEROELEM !    0    !   0   !     ! *NAME    !  10    !  256     !        ! *INT2     !    6    !   2   !     ! *GENERIC !  10    !  256     !        ! *INT4     !   11    !   4   !     ! *HEX     !   1    !  256     !        ! *CMD      !   IBM   !  IBM  !     ! *X       ! 1 15.5 ! 256 24.9 !        ! Etiquette !  -----  ! ----- !     ! *VARNAME !  11    !   11     !        -------------------------------     --------------------------------          RTNVAL ( *NO  )               *YES --> Le C.P.P de la commande retournera une valeur              dans la variable précisée pour ce paramètre  


|    Changer de couleur
 
     CONSTANT   ( 'constante' ) La constante est transmise au C.P.P
           et la demande du paramètre n'apparaît pas sur l'invite.
 
     RSTD ( *NO  )
            *YES --> Les seules valeurs possibles sont celles indiquées
                      dans VALUES  SPCVAL  ou  SNGVAL.
 
     DFT   ( valeur-par-défaut ) Cette valeur sera déjà inscrite
                  pour ce paramètre dans le guide opérateur. Implique MIN(0)
 
     VALUES   ( liste-de-valeurs ) Maximum 300.
 
OU   REL   ( contrôle ) Relation par rapport à une constante ou à la
                                                valeur d'un autre paramètre.
 
             contrôle =   *EQ          'constante'
                          *NE       ou
                          *GT, ....     keyword (nom d'un autre paramètre)
 
OU   RANGE   ( limite-inférieure  limite-supérieure )
 


|    Changer de couleur
 
     SPCVAL ( valeur-spéciale  valeur-transmise )   Maximum 300.
 
     SNGVAL ( valeur-spéciale  valeur-transmise )
 Ces valeurs doivent être, dans le cas d'une liste, uniques. Maximum 300.        Ces deux paramètres permettent aussi de définir une valeur devant être       acceptée même si elle ne correspond pas aux restrictions imposées       par le type ou les contrôles de validité.        Exemple :   TYPE(*NAME) n'autorise que les noms valides                       *LIBL n'est PAS un nom valide: pour que cette valeur                       soit acceptée malgré tout,il faudra l'indiquer ici.        MIN (  0 ) --> Paramètre optionnel.  (DFT devait être renseigné)                     1 ----> Paramètre obligatoire.            >1 ----> Définit une liste de paramètres.                      Le nombre inscrit indique le nombre minimum de valeurs.        MAX (  1 ) --> 1 seule valeur possible.            >1 ----> Détermine la taille d'une liste.  


|    Changer de couleur
 
     FULL ( *NO  )
            *YES --> Équivaut à la fonction CHECK(MF)
 
     FILE ( *NO     ) --> Indique que la valeur pour KWD
                           n'est pas un nom de fichier
            Les autres valeurs permettent de demander à ce que la commande              DSPPGMREF considère ce paramètre comme un fichier utilisé              par le programme contenant cette commande.
            *IN --------> Fichier en entrée.             *OUT -------> Fichier en sortie.             *UPD -------> Fichier en mise à jour.             *INOUT -----> Fichier en entrée/sortie.             *UNSPFD ----> Utilisation du fichier inconnue.        ALWUNPRT ( *NO  )                 *YES --> Permet l'affichage ou la saisie des caractères héxa        ALWVAR ( *NO  )               *YES --> Autorise un nom de variable (&xxx)                         comme valeur pour ce paramètre

|    Changer de couleur
 
     EXPR ( *NO  )
            *YES --> La valeur pourra être une expression (*CAT et %SST)
 
     VARY ( *NO  )
            *YES --> La valeur transmise sera précédée de sa
                     longueur en binaire
 
     PASSATR ( *NO  )
               *YES --> Permet de connaître le type de données saisies.(IBM)
 
     PASSVAL ( *DFT  ) --> Un pointeur d'adresse est transmis au C.P.P.
 
     DSPINPUT( *YES  ) --> Affichage normal
               *NO     --> Zone de saisie sans affichage (type DSPATR(ND))
                           (saisie de mots de passe)
 
     CHOICE  ('texte' ) --> définit l'extrait des valeurs admises
                             affiché à droite de la zone de saisie.
               *VALUES  --> le système construit un texte à partir des
                             valeurs admises et du type.
 


|    Changer de couleur
 
     PMTCTL *NONE    Ce paramètre est affiché systématiquement.
            *PMTRQS  ce paramètre n'est affiché que sur demande (F10).
            label    ce paramètre n'est affiché que suivant le contrôle
                      défini par un ordre PMTCTL précédé de 'label:'
 
     PMTCTLPGM       un paramètre n'est affiché que suivant la valeur
                      renvoyée par le pgm indiqué (voir le cours CMDPGM)
 
     KEYPARM         permet de définir les paramètres clés (à afficher en
                      premier) et les paramètres non-clé (à afficher dans
                      un second temps pré-renseignés) quand un POP (Prompt
                      Override Program) est associé à cette commande.
                                                  (voir le cours CMDPOP)
 
 
     PROMPT ( *NONE                    N° d'ordre d'affichage )
              'constante'            ----!
              identifeur de message  ----!
                                         !--> Texte associé au paramètre
                                              sur le guide opérateur.
 


|    Changer de couleur
                    Q U A L I F I C A T I O N S
                    -----------------------------
 
* Permet d'associer deux valeurs à un seul paramètre
                   (bibliothèque/objet)
 
 
             PARM       KWD(FICHIER) TYPE(Q1) MIN(1)    +
                         PROMPT('Nom de fichier')
 Q1:         QUAL       TYPE(*NAME) MIN(1)              +
             QUAL       TYPE(*NAME) DFT(*LIBL) SPCVAL((*LIBL)) MIN(0)
                         PROMPT('Bibliothèque')
 
L'ordre QUAL est PEU différent de l'ordre PARM (il ne contient pas KEYWORD)
 
Il ne faut pas indiquer de PROMPT sur le premier QUAL (défini par le PARM)
 
                Le CPP reçoit UN paramètre de 20 de long, contenant:
 
                 de 1 à 10 le nom de l'objet
                   11 à 20 le nom de la bibliothèque ou *LIBL.
 


|    Changer de couleur
                    L I S T E S   D E   P A R A M E T R E S
                    ----------------------------------------
 
* 2 Types : - Liste simple.  (mot-clé MAX dans l'ordre PARM.)
 
            - Liste mixte.  C'est une liste composée d'éléments
               de définitions hétérogènes. Utilisation de l'ordre ELEM.
 
* Une liste est considérée comme un seul paramètre précédé par 2 octets
 donnant sous une forme binaire le nombre d'éléments saisis dans la liste.
 (penser à %BIN en CL)
 
* Les listes mixtes : L'ordre  ELEM
 
                     - Permet de définir chacun des éléments hétérogènes
                        d'un paramètre.
                     - Un élément de la liste est une valeur dans un
                        groupe de valeurs.
                     - Un ordre ELEM sera utilisé pour chaque élément
                        de la liste.
 
  Les mots-clés de l'ordre ELEM sont proches de ceux de l'ordre PARM


|    Changer de couleur
                     L E S     L I S T E S     S I M P L E S
                     ---------------------------------------
 
Exemple :  PARM KWD(LISTE) TYPE(*NAME) MAX(3) PROMPT('MAXIMUM 3')
 
Sur le guide opérateur :        MAXIMUM 3 . . .  LISTE          __________
                                        + si autres valeurs     __________
 
* Informations reçues par le C.P.P. :
 - Une chaîne de caractères dans une seule zone.
 
 - Les 2 premiers octets (binaire) indiqueront le nombre d'éléments.
 
* Selon l'exemple : !______!_______________!_______________!_______________!
                       ^    ^                                             ^
    2 octets binaires **    !********************** **********************!
                                                    *
                                           3 x 10 = 30 octets
 
     32   Octets peuvent donc être transmis au C.P.P
 
                                                                             


|    Changer de couleur
                     L E S     L I S T E S     M I X T E S
                     -------------------------------------
 
 EXEMPLE:    PARM       KWD(LISTE) TYPE(E1)  PROMT('LISTE D''ELEM')
      E1:    ELEM       TYPE(*NAME) PROMPT('ELEMENT 1')
             ELEM       TYPE(*CHAR) LEN(2) PROMPT('ELEMENT 2')
             ELEM       TYPE(*CHAR) LEN(8) DFT(*NONE) PROMPT('ELEMENT 3')
 
Sur le guide opérateur :        LISTE D'ELEM
                                 ELEMENT 1 . . . . . . . . . .  __________
                                 ELEMENT 2 . . . . . . . . . .  __
                                 ELEMENT 3 . . . . . . . . . .  *NONE___
 
* Informations reçues par le C.P.P. :
 - Une chaîne de caractères dans une seule zone.
 
 - Les 2 premiers octets (binaire) indiqueront le nombre d'éléments.
 
* Selon l'exemple : !______!_______________!__!*NONE________!
                       ^    ^  10            2    8         ^
    2 octets binaires **    !*******************************!
     22   Octets peuvent donc être transmis au C.P.P


|    Changer de couleur
                     L E S     L I S T E S     C O M P L E X E S
                     --------------------------------------------
 
 EXEMPLE:    PARM       KWD(LISTE) TYPE(E1) MAX(3) PROMPT('MAXIMUM 3')
      E1:    ELEM       TYPE(*NAME) PROMPT('ELEMENT 1')
             ELEM       TYPE(*CHAR) LEN(2) PROMPT('ELEMENT 2')
             ELEM       TYPE(*CHAR) LEN(8) DFT(*NONE) PROMPT('ELEMENT 3')
 
Sur le guide opérateur :        MAXIMUM 3
                                 ELEMENT 1 . . . . . . . . . .  __________
                                 ELEMENT 2 . . . . . . . . . .  __
                                 ELEMENT 3 . . . . . . . . . .  *NONE___
                                     + si autres valeurs -->   _ 
 
* Informations reçues par le C.P.P. :
 - Une chaîne de caractères dans une seule zone.
 
 - Les 2 premiers octets (binaire) indiqueront le nombre de listes
 
   ils sont suivis de (liste) fois 2 octets binaires indiquant le
       déplacement pour atteindre une liste .(ici 3 fois)
 


|    Changer de couleur
 
* Selon l'exemple : !______!_dep liste1__!_dep liste2_!_dep liste 3_!
                       ^    ^                                      ^
    2 octets binaires **    !**************************************!
      (nombre de listes)                            *
                                           3 x 2 = 6 octets
 
 
SUIVIS de liste 3 : = 22 octets (comme sur une liste simple)
       de liste 2 : = 22 octets
       de liste 1 : = 22 octets
                     ----
                      66 + 6 + 2
 
     74   Octets peuvent donc être transmis au C.P.P
 
Il faut absolument utiliser les informations en binaire (%BIN en CL)
 
le contenu des listes n'étant pas fiables et leur longueur variable.
 
 
 





©AF400