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.