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 |
+ 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. |
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 |
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. |
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 |
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)) |
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) |
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. <-- : :......................................................................: |