> Tech > Autres améliorations

Autres améliorations

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Voici quelques autres améliorations intéressantes que la V5R2 apporte à  RPG:
Conversion caractère/numérique.
Depuis peu, les programmeurs demandent de plus en plus de pouvoir convertir une chaîne de chiffres dans une variable caractère en une valeur que l'on pourra attribuer à  une variable numérique. Par le passé, nous avons suggéré

Autres améliorations

des palliatifs, comme appeler
une fonction dans la bibliothèque runtime
C (comme atol()) ou définir des sous-champs numériques décimaux
caractères et zonés en chevauchement.
Mais maintenant on a de meilleurs
choix en RPG natif. Les valeurs chaîne
de caractères sont autorisées comme
arguments des fonctions intégrées
%DEC, %INT, %UNS et %FLOAT, ainsi
que leurs partenaires de demi-ajustement
%DECH, %INTH et %UNSH.
Dans cet exemple, la valeur dans la
chaîne de variable est convertie en une
valeur décimale comportant sept
chiffres et deux décimales :


/Free
number = %dec(string:7:2);
/End-Free

Opérations de manipulation des
bits.

En V5R2, RPG IV a de nouvelles fonctions intégrées permettant d’effectuer
des opérations logiques au niveau
des bits: %BITAND, %BITOR,
%BITXOR et %BITNOT. Ces fonctions
effectuent des opérations and, or, exclusive-
pr et not, au niveau des bits,
respectivement. Par exemple,


/Free
a = %bitand(x’a7′: x’f1′); // gets x’a1′
b = %bitor(x’a7′: x’f1′); // gets x’f7′
c = %bitxor(x’a7′: x’f1′); // gets x’56’
d = %bitnot(x’a7′); // gets x’58’
/End-Free

Les opérandes doivent être soit
tous numériques, soit tous de type caractère, et le résultat doit être de
même type que les opérandes. %BITAND
et %BITOR, codés dans un calcul,
peuvent prendre un nombre quelconque
d’arguments. %BITXOR prend
deux arguments et %BITNOT n’en
prend qu’un.
Nouveaux opérateurs d’assignation.
Un nouvel ensemble d’opérateurs
d’assignation de forme abrégée
applique une certaine opération à  une
cible en utilisant une syntaxe plus
concise. Ainsi, avec l’un de ces nouveaux
opérateurs d’assignation, on
peut incrémenter ou décrémenter directement
une variable numérique
sans devoir coder la variable deux fois
dans l’instruction. C’est particulièrement
utile si la cible est un nom entièrement
qualifié complexe. La figure 5
en montre un exemple.
A noter qu’une assignation telle que

A+=B;

est plus ou moins équivalente à 

A=A+B;

La seule différence est que la variable
cible n’est évaluée qu’une fois au
lieu de deux. Cela n’a d’ailleurs d’importance
que si un appel de procédure
est codé comme un index de tableau et
si la procédure implique des effets secondaires.
Hormis cela, le principal
avantage est un style de coding plus
concis. Comme le montre l’exemple de
la figure 5, si l’on veut incrémenter une
variable exprimée par un nom long,
éventuellement un nom entièrement
qualifié, les nouveaux opérateurs d’assignation
rendent le coding plus facile
et peut-être moins sujet à  erreurs.
Changements divers.
Il y a plusieurs
autres changements. Tout
d’abord, l’extension N est autorisée sur
le code opération FEOD. FEOD(N)
améliore la performance dans certains
cas. Le buffer d’I/O est écrit dans la
base de données mais pas forcément
engagé sur disque.
Le compilateur RPG accepte désormais
des fichiers source IFS. Vous pouvez
indiquer le nom (y compris le chemin)
d’un fichier IFS sur un nouveau
paramètre sur les commandes CRTRPGMOD
et CRTBNDRPG. Vous pouvez
aussi indiquer des noms de fichiers
IFS sur les directives /Copy et /Include.
Par défaut, le fichier indiqué est recherché
en premier dans le même système
de fichiers que le fichier source
principal. Cela permet aux programmeurs
d’utiliser des systèmes de
contrôle source basés sur IFS.
Une option permet désormais de
générer PCML pour un programme ou
un module. PCML est une description
lisible par le programme de l’interface
à  un programme ou module. Elle décrit
les procédures exportées et leurs
paramètres. PCML est utile pour les
programmeurs qui veulent appeler des
programmes et des procédures RPG à 
partir du code Java.
Enfin, les variables numériques décimales
packées et zonées peuvent désormais
être déclarées jusqu’à  31
chiffres, avec 31 décimales. Les niveaux
intermédiaires de précision des expressions
de calcul décimal peuvent atteindre
31 chiffres. Le nouveau mot-clé
de spécification de contrôle DECPREC
contrôle la précision externe des valeurs
décimales utilisées dans certains
endroits, comme %EditC et %EditW.

Téléchargez cette ressource

Préparer l’entreprise aux technologies interconnectées

Préparer l’entreprise aux technologies interconnectées

Avec la « quatrième révolution industrielle », les environnements hyperconnectés entraînent de nouveaux risques en matière de sécurité. Découvrez, dans ce guide Kaspersky, comment faire face à cette nouvelle ère de vulnérabilité.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010