Nouveautés de la version 7.1 en CL La commande RTVCLSRC est admise sur les sources de type CLLE si vous avez utilisé ALWRTVSRC(*yes) sur CRTCLMOD / CRTBNDCL Sur les commandes de compilation (CLP ou CLLE) vous pouvez préciser OPTION(*DOSLTLVL) demandant l'apparition du niveau d'imbrication sur les listes de compilation (DOWHILE, DOUNTIL, DOFOR, SELECT) Les zones de type *INT (integer) *UINT (integer non signé) admettent une longueur sur 8 octets (comme le RPG et le BIGINT de SQL) La commande INCLUDE (nouvelle en V6) ne pouvait pas inclure un source contenant lui-même la commande INCLUDE C'est chose faite, l'imbrication de ces commandes est désormais possible, sans limitation du nombre de niveau. |
Après les fonctions intégrées suivantes : %SST extraction d'une chaîne de caractères %BIN extraction et conversion d'une sous-chaîne en binaire %SWITCH manipulation des switchs du job (concept d'origine 36) %OFFSET manipulation d'un pointeur (incrémentation/déplacement) %ADDRESS assignation d'un pointeur avec l'adresse d'une variable La PTF SI48166 propose %TRIM élimination d'un blanc d'extrémité d'une chaîne %TRIMR élimination des blancs de droite %TRIML élimination des blancs de gauche La PTF SI49061 propose %CHECK vérification des caractères d'une variable(gauche->droite) %CHECKR vérification des caractères d'une variable(droite->gauche) %SCAN recherche d'une chaîne dans une variable |
Exemples : DCL VAR(&V1) TYPE(*CHAR) + VALUE(' test de chaine*****') DCL VAR(&V2) TYPE(*CHAR) DCL VAR(&V3) TYPE(*CHAR) CHGVAR VAR(&V2) VALUE(%TRIM(&V1)) /* contient 'test de chaîne*****' */ /* on peut indiquer le(s) caractère(s) à enlever */ CHGVAR VAR(&V3) VALUE(%TRIMR(&V2 '* ')) /* contient 'test de chaîne' */ DCL VAR(&V4) TYPE(*CHAR) VALUE('666,66') DCL VAR(&V5) TYPE(*INT) CHGVAR VAR(&V5) VALUE(%CHECK('123456789' &V4)) /* contient 4, la position de ',' */ CHGVAR VAR(&V5) VALUE(%CHECK('123456789, ' &V4)) /* contient 0, tout est OK */ |
/* on peut utiliser *LDA à la place d'un nom de variable */ CHGDTAARA DTAARA(*LDA (1 10)) VALUE('03216549*7') CHGVAR VAR(&V5) VALUE(%CHECK('123456789' *LDA)) /* contient 1, la position du '0' */ /* on peut préciser la position de début de recherche */ CHGVAR VAR(&V5) VALUE(&V5 + 1) /* à partir de 2 */ CHGVAR VAR(&V5) VALUE(%CHECK('123456789' *LDA &V5)) /* contient 9, la position de '*' */ /* on peut faire le contrôle de droite à gauche */ CHGVAR VAR(&V5) VALUE(%CHECKR('123456789' *LDA)) /* contient 9, la position de '*' */ /* %scan, mêmes fonctionnalités */ DCL VAR(&V4) TYPE(*CHAR) VALUE('666,66') CHGVAR VAR(&V5) VALUE(%SCAN(',' &V4)) /* contient 4 */ CHGVAR VAR(&V5) VALUE(%SCAN('*' *LDA)) /* contient 0, non trouvé */ |