En V5R2, la fonction %DEC convertit
une expression chaîne en un nombre
décimal packé, avec la précision spécifiée,
comme ceci :
%DEC(expression:digits:decimals)
Les releases précédentes n'acceptaient
que des expressions numériques
avec %DEC.
Quand on utilise la fonction %DEC
pour convertir une chaîne, le deuxième
et le troisième paramètre sont
obligatoires. Ainsi,
2. Utiliser %DEC pour convertir Caractère en Numérique
si le champ caractère
Amount a une valeur de ‘00123.45’,
on pourra le convertir en un nombre
décimal packé en codant
%DEC(Amount:7:2)
Si la valeur chaîne inclut des caractères
non numériques (autres qu’un
caractère décimal), on peut inclure la
fonction %XLATE pour traduire ces caractères
en blancs. Par exemple, si
Amount a une valeur de ‘$***12,345.67
‘, on pourra coder
%DEC( %XLATE(‘$*,’:’ ‘:Amount) : 7 : 2 )
pour convertir le symbole devise, les astérisques et les
virgules en blancs. La fonction %DEC ne tient pas compte
des blancs imbriqués, donc le programme produira une valeur
de renvoi packée de sept chiffres, de 12345.67.
Si la fonction %DEC rencontre une valeur numérique
non valide, elle renvoie un code d’état de 105, facile à capturer,
comme ceci :
MONITOR;
Result = %DEC(%XLATE(‘$*,’:’ ‘:Amount)
:7:2);
ON-ERROR 105;
Result = 0;
ENDMON;
Pour arrondir le résultat numérique, utilisez %DECH. Les
fonctions %INT et %INTH acceptent aussi des arguments
chaîne, renvoyant alors des valeurs entières.
Téléchargez cette ressource
Solutions Cloud & Services Managés Simplifiés
Comment capitaliser sur son existant tout en bénéficiant, dès à présent, des promesses de flexibilité et de scalabilité du cloud ? Découvrez les bonnes pratiques pour répondre aux défis de simplification du Cloud dans ce nouveau TOP 5.