| RPG ILE : %dec sur une longueur non connue |
|
La fonction intégrée %dec permet de convertir une expression en valeur décimale (packée). Le compilateur exige que les 2nd et 3ème paramètres (nombre de chiffres et précision) soient connus à la compilation : constantes ou litéraux. Ainsi, on peut utiliser %size pour le second paramètre mais pas %len. Or %size renvoie la taille en octet d'une variable ce qui est souvent incorrect pour l'appel à %dec.
La déclaration suivante permet de s'en affranchir :
d num s 15p 0 inz
d numlen c %len( num )
d alp s 15a inz( '123456789012345' )
/free
monitor ;
num = %dec( %trim( alp ) : numlen : 0 ) ;
dsply ( 'OK : ' + %char( num ) ) ;
on-error ;
dsply 'Erreur' ;
endmon ;
return ;
/end-free
NB.
|