La version V7.1 d'IBM i est sortie en avril, en parallèle avec les nouveaux serveurs
basés sur le Power 7. Nous vous présentons ici les innovations qui concernent
le CL et le RPG. Vous les retrouverez sur :
http://publib.boulder.ibm.com/infocenter/iseries/v7r1m0/index.jsp
Nouveautés dans le Langage de Contrôle
La commande RTVCLSRC permet maintenant d'extraire un source CL d'un module ILE.
Une variable CL entière peut maintenant avoir une longueur de 8, ce qui permet de prendre en compte des champs de 8 octets dans des structures d'entrée ou de sortie.
Une nouvelle option de compilation permet de visualiser les niveaux d'imbrication des boucles DO et des groupes SELECT dans le listing de compilation.
Un nouveau paramètre DBGENCKEY des commandes CRTCLMOD, CRTBNDCL pour le CL, CRTRPGMOD, CRTBNDRPG ou CRTSQLRPGI pour le RPG, permet de crypter les données du listing de débogage. La visualisation se fait au moyen
d'une clef de cryptage.
Une commande INCLUDE peut être imbriquée dans une autre commande INCLUDE, sans limite de niveaux.
Nouveautés dans RPG ILE
Un tableau peut être trié dans l'ordre croissant en utilisant SORTA(A) et dans l'ordre décroissant en utilisant SORTA(D). Ce ne peut pas être un tableau dont la spécification contient le mot-clef ASCEND ou DESCEND.
// Trier le tableau salary
// dans l'ordre décroissant
SORTA(D) salary
// Trier le tableau custDs array
// selon le champ amount_owing
SORTA custDs(*).amount_owing;
Il est possible de trier les tableaux de structures de données et d'y faire des
recherches en utilisant des champs comme clefs.
// Rechercher un élément dans le tableau
// custDs où le champ account_status est "K"
elem = %LOOKUP("K" : custDs(*).account_status);
La fonction intégrée %SCANRPL scanne toutes les occurrences d'une valeur
dans une chaîne et les remplace par une autre valeur.
// Remplacer NAME par 'Tom'
string1 = 'See NAME. See NAME run. Run NAME run.';
string2 = %ScanRpl('NAME' : 'Tom' : string1);
// string2 = 'See Tom. See Tom run. Run Tom run.
La fonction intégrée %LEN(varying : *MAX) peut être utilisée pour obtenir le
nombre maximal de caractères d'une chaîne de longueur variable.
Avec le mot-clef ALIAS dans une définition, il est possible d'utiliser des noms
alternatifs longs pour des champs de structures de données définies de manière
externe.
| A |
R |
CUSTREC |
|
|
|
| A |
|
CUSTNM |
25A |
|
ALIAS(CUSTOMER_NAME) |
| A |
|
CUSTAD |
25A |
|
ALIAS(CUSTOMER_ADDRESS) |
| A |
|
ID |
10P |
0 |
|
| D |
custDs |
e ds |
|
|
ALIAS |
| D |
|
|
|
|
QUALIFIED EXTNAME(custFile) |
//free
custDs.customer_name = 'John Smith';
custDs.customer_address = '123 Mockingbird Lane';
custDs.id = 12345;
Quand une procédure retourne une très grande valeur, en particulier une très
grande valeur variable, sa performance d'appel peut être nettement améliorée
en utilisant le paramètre RTNPARM.
| D |
getFileData |
pr |
a |
varying len(1000000) |
| D |
|
|
|
rtnparm |
| D |
file |
|
a |
const varying len(500) |
| D |
data |
S |
a |
varying len(1000) |
/free
data = getFileData ('/home/mydir/myfile.txt');
La fonction intégrée %PARMNUM(parameter_name) retourne la position du
paramètre dans la liste des paramètres.
| D |
|
pi |
|
|
|
| D |
name |
|
100a |
|
const varying |
| D |
id |
|
10i |
0 |
value |
| D |
errorInfo |
|
|
|
likeds(errs_t) |
| D |
|
|
|
|
options(*nopass) |
/free
// Vérifier si le paramètre "errorInfo" a été passé
if %parms >= %parmnum(errorInfo);
Si un programme ou une procédure n'est pas appelé par un autre module RPG,
sa déclaration est désormais optionnelle.
Il y a deux nouvelles options dans XML-INTO. L'utilisation de l'option datasubf
dans la spécification d'un champ permet de récupérer les attributs d'un élément
XML. L'option countprefix permet de récupérer les occurrences successives d'un
élément XML dans un tableau. Ces options sont également disponibles dans la
V6.1 par l'intermédiaire d'une PTF.
Dans le prochain numéro du magazine, nous présenterons les nouveautés d'IBM
i V7.1 dans DB2 et SQL.
Cycle de vie des versions d'IBM i

Chaque version d'IBM i est maintenue pendant la disponibilité des deux versions suivantes et 24 mois
supplémentaires. Il est possible de migrer d'une version n à la version n+1 ou n+2.