
|
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é */
|