Accueil du site > Les articles > Inversion de 2 variables numériques avec arrondi facultatif sous (...)
Version à imprimer Enregistrer au format PDF

Inversion de 2 variables numériques avec arrondi facultatif sous Adélia.

vendredi 10 octobre 2003, par Grégory Jarrige Visites  1578 Première mise en ligne le vendredi 10 octobre 2003.

Lors du passage à l’euro, j’ai dû traiter un certain nombre de fichiers contenant des montants en double devise. Les montants en devise de base (le franc) et les montants en devise secondaire (l’euro) devaient être permutés, et dans certains cas, les montants en euros devaient être arrondis à 2, 3 ou 4 décimales selon le niveau de précision des prix unitaires traités. J’ai écrit pour l’occasion une petite règle de gestion qui a très bien rempli son office, je la trouve intéressante pour le principe utilisé : on passe bien sûr par une variable intermédiaire pour la bascule des montants, mais en fonction du niveau d’arrondi reçu en paramètre par la règle de gestion, on n’utilise pas forcément la même variable intermédiaire, et tout cela sans avoir recours à toute une batterie de tests compliqués sur le niveau d’arrondi. Je n’avais pas besoin d’un niveau d’arrondi au delà de 4 décimales, mais je me suis fait plaisir en écrivant une règle de gestion générique, capable de travailler jusqu’à 9 décimales de précision. Voici le source de la règle de gestion BASCULE.


Source de la règle de gestion.

Règle de gestion : BASCULE

Désignation . . . : Inversion de 2 variables avec ou sans arrondi

Commentaire . . . : la valeur en devise de base est transférée en devise secondaire sans arrondi, alors que la valeur en devise secondaire est transférée en devise de base avec l’arrondi spécifié en paramètre. Le 3ème paramètre peut prendre les valeurs suivantes :

 " " : pas d'arrondi
 "0" : arrondi à 0 décimale
 "1" : arrondi à 1 décimale
 "2" : arrondi à 2 décimales
 ...
 "9" : arrondi à 9 décimales (en réalité pas d'arrondi)

                           
Paramètres :
 N°   Désignation                
 1     valeur devise de base      
 2     valeur devise secondaire    
 3     arrondi devise secondaire       


Exemples d'appel (ne pas mettre le 3ème paramètre entre cotes sinon plantage garanti) :
 INSERER_RG BASCULE(W_VAL_DB;W_VAL_DS; )
 INSERER_RG BASCULE(W_VAL_DB;W_VAL_DS;3)
 INSERER_RG BASCULE(SG_PRX_1;SG_PRX_2;2)


Source :
DECLARER M£INT;M£INT   21;9  
DECLARER M£INT0;M£INT0 12;0  
DECLARER M£INT1;M£INT1 13;1  
DECLARER M£INT2;M£INT2 14;2  
DECLARER M£INT3;M£INT3 15;3  
DECLARER M£INT4;M£INT4 16;4  
DECLARER M£INT5;M£INT5 17;5  
DECLARER M£INT6;M£INT6 18;6  
DECLARER M£INT7;M£INT7 19;7  
DECLARER M£INT8;M£INT8 20;8  
DECLARER M£INT9;M£INT9 21;9  
*  
*-- On profite du passage par la variable intermédiaire pour effectuer
*   l'arrondi. Ce mode d'utilisation du :03 permet d'utiliser une
*   variable intermédiaire ou une autre sans test préalable.
*
M£INT:03 H = :02              
:02        = :01              
:01        = M£INT:03        
*                            

P.-S.

Arrondissez bien.