Evolution du CL en V5R30

BoTTom |    Changer de couleur
 
La version 5.3 apporte de nombreuses avancées pour le langage CL.
 
 - le support direct des variables binaires (plus besoin de  %BIN)
 
 - le support de fichiers multiples (il est enfin possible de lire un
    fichier BD et d'afficher un DSPF dans le même programme)
 
 - l'arrivée de nombreuses commandes de structuration DOWHILE,DOUNTIL,DOFOR.
 
 
 + variables binaires
 
     DCL        VAR(&CPT) TYPE(*INT)
 
     il existe aussi le format *UINT (binaire non signé)
 
     la longueur est de 2 octets ou 4 octets
 
     la transformation de binaire en décimal ou caractère est possible
       avec CHGVAR
 


|    Changer de couleur
 
 + support de fichiers multiples
 
   Avant la V5R30, nous ne pouvions déclarer qu'un seul fichier par pgm
   ce qui fait qu'il n'était pas utile de précisier le nom lors des lectures
 
  La v5r30 apporte un nouveau paramètre OPNID() sur les commandes DCLF
   RCVF, SNDRCVF, SNDF permettant de manipuler plusieurs fichiers.
 
    DCLF       FILE(ECRAN1) OPNID(ECRAN)
 ........................................................................
 :  ATTENTION : les variables seront préfixées par l'OPNID suivi de _   :
 :                                                                      :
 :   par exemple ce DSPF contient :                                     :
 :                                                                      :
 :   JOB -> nommée dans le pgm &ECRAN_JOB                               :
 :   Indicateur 3 -> nommé &ECRAN_IN03                                  :
 :......................................................................:
 
 l'OPNID est facultatif, mais un SEUL fichier peut ne pas en avoir,
  et nous sommes limités à 5 fichiers au total dans un même programme.
 


|    Changer de couleur
 
 les commandes de manipulation de fichier (SNDF, RCVF et SNDRCVF) doivent
  utiliser la paramètre OPNID s'il a été utilisé lors de la déclaration.
 
  exemple :
  ---------
              PGM
              DCLF       FILE(QADSPOBJ) OPNID(OBJD)
              DCLF       FILE(ECRAN1) OPNID(ECRAN)
 
  BCL1:       DOWHILE    COND(*NOT &ECRAN_IN03)
                RCVF       OPNID(OBJD)
                  MONMSG     MSGID(CPF0864) EXEC(LEAVE CMDLBL(BCL1))
                CHGVAR &ECRAN_ODOBNM &OBJD_ODOBNM
                CHGVAR &ECRAN_ODOBTP &OBJD_ODOBTP
                CHGVAR &ECRAN_ODOBTX &OBJD_ODOBTX
 
                SNDRCVF OPNID(ECRAN)
 
              ENDDO
              ENDPGM
 


|    Changer de couleur
 
 Commandes de structuration
 
  les seules commandes disponibles avant la V5R30, (hors GOTO) étaient
 
    IF et DO/ENDDO (ces dernières utilisées avec IF et MONMSG en général)
 
  Nous avons maintenant
 
  DOWHILE COND( même test que sur un IF)
   ...
  ENDDO
 
  c'est un vrai dowhile, le test en réalisé avant (on peut ne jamais entrer)
   et il s'agit de la condition pour faire
 
  DOUNTIL COND( même test que sur un IF)
   ...
  ENDDO
 
 pour dountil, le test en réalisé sur le ENDDO (on fait au moins une fois)
  et la condition donnée est celle pour SORTIR.


|    Changer de couleur
 
 DOFOR VAR(&cpt) FROM(1) TO(22) BY(3)
  ...
 ENDDO
 
 pour ces trois boucles on peut forcer
 
 une sortie anticipée par LEAVE 
 
  sans paramètre, on sort de la boucle en cours (la dernière)
  on peut mettre un LABEL devant le DOxxx et indiquer le label lors du LEAVE
 
 un saut d'un tour de boucle par ITERATE 
 
 et enfin, l'équivalent du CASE SQL ou du SELECT RPG :
 
 SELECT 
  WHEN COND( ) THEN( )   /* seul le premier test vrai est traité */
  WHEN COND( ) THEN()
  OTHERWISE CMD( )
 ENDSELECT 
 


|    Changer de couleur
 
 les commandes CALL et CALLPRC (ILE) acceptent maintenant 255 paramètres
  (avant nous étions limités à 40)
 
 et les paramètres peuvent être transmis par référence (comme avant) ou
  par valeur (nouveauté), sur la commande CALLPRC.
 
 
 si vous lancez un programme RPG4, les paramètres de la procédure doivent
  etre déclarés avec VALUE (comme param1, ci-dessous)
 
     DmaFonction       PR
     D param1                         3I 0 VALUE
     D param2                        10
 
 en C, sans le préfix * (indiquant un pointeur)
 
 maFonction(int param1, char *param2)
 
 
 utilisation : CALLPRC PRC('maFonction') parm((P1 *BYREF) (P2))
 


|    Changer de couleur
 ET enfin, une nouvelle commande est proposée GENCMDDOC
 
  Elle permet de générer l'aide associé à une commande
 
   1/ au format HTML (par défaut)
 
   2/ au format UIM avec GENOPT(*UIM)
 
 par exemple
 
  GENCMDDOC CMD(AF400/SLTAF4) TODIR('/tmp') TOSTMF(*cmd)
 
   créé un fichier AF400_SLTAF4.HTML dans /tmp
 
  et
 
  GENCMDDOC CMD(AF400/SLTAF4) TODIR('/qsys.lib/qtemp.lib/qtxtsrc.file')
    TOSTMF(*cmd) GENOPT(*UIM)
 
   créé un membre SLTAF4 dans QTXTSRC de QTEMP
 
  Le programme de traitement est une classe java (assez lente)


|    Changer de couleur
 
 Dans tous les cas, le source produit est en anglais et à compléter :
........................................................................
: :help name='SLTAF4'.                                                 :
: Sélection AF400 - Help                                               :
: :p.The Sélection AF400 (SLTAF4) command <...>                        :
: .* Describe the function provided by the command.                    :
: :p.:hp2.Restrictions::ehp2.                                          :
: :ul.                                                                 :
: :li.                                                                 :
: You must have <...>                                                  :
: .* List all special authorities required to run the command.  <--    :
:   .../...                                                            :
: .*******************************************                         :
: .*   Help for parameter MODULE                                       :
: .*******************************************                         :
: :help name='SLTAF4/MODULE'.                                          :
: Module AF400 (MODULE) - Help                                         :
: :xh3.Module AF400 (MODULE)                                           :
: :p.Specifies <...>                                                   :
: .* Describe the function provided by the parameter.           <--    :
:......................................................................:





©AF400