> Tech > 2. Utiliser %DEC pour convertir Caractère en Numérique

2. Utiliser %DEC pour convertir Caractère en Numérique

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

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

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.

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