> Tech > Champs de type entier et virgule flottante à  l’exécution

Champs de type entier et virgule flottante à  l’exécution

Tech - Par iTPro - Publié le 24 juin 2010
email

  On peut en principe effectuer plus facilement des calculs arithmétiques avec des champs entiers et en virgule flottante à  l'exécution, en utilisant des structures de données et des overlays. Pour l'overlay, il faut d'abord savoir combien d'octets utilisent la valeur à  l'exécution (runtime value). La figure 4 donne cette information.

Champs de type entier et virgule flottante à  l’exécution

Ainsi, si l’on définit un champ numérique avec type I ou U et une longueur de cinq, ce champ aura deux octets. Le programme DMAPDEMO3 (figure 5) montre la technique pour traiter des champs entiers et à  virgule flottante, ce qui implique l’utilisation des overlays de structure de données. Ce programme accepte des paramètres de deux caractères qui contiennent des valeurs entières et effectuent l’opération indiquée paramétriquement. La structure de données Int1Ds comprend deux sous-champs : Int1 et Int1Chr. Notons que j’ai défini Int1CHr pour recouvrir (overlay) Int1. Comme l’indique la figure 5, j’ai défini Int1Chr avec quatre octets parce que Int1 est un champ de quatre octets. Ainsi, Int1Chr recouvre Int1 et est exactement de la même taille que Int1. J’ai également défini les structures de données Int2Ds et ResultDs de la même manière que les structures de données Int1Ds. Après ces trois structures de données, on trouve les définitions pour les paramètres transmis à  ce programme. PrmInt1 et PrmInt2 sont des champs caractères de quatre octets contenant des données de type entier. Comme dans le programme DMAP-DEMO2 (figure 2), PrmOp est un champ caractère d’un octet qui indique les opérations addition, sous-traction, multiplication et division et inclut les constantes nommées pour ces quatre opérations. Après la liste des paramètres entrés se trouvent deux instructions Eval qui déplacent les deux paramètres d’entrée vers Int1Chr et Int2Chr, respectivement. En ce qui concerne le RPG, les deux instructions Eval déplacent simplement un champ caractère de quatre octets dans un autre champ caractère de quatre octets. Mais, comme Int1Chr et Int2Chr sont en réalité des overlays par dessus Int1 et Int2, j’ai pu placer la donnée entière contenue dans les champs caractères PrmInt1 et PrmInt2 dans les champs entiers Int1 et Int2. Je peux à  présent effectuer n’importe quel calcul arithmétique sur ces deux valeurs. Le bloc Select/EndSl effectue les calculs arithmétiques en se fondant sur la valeur du paramètre PrmOp transmis au programme. Dans les quatre cas, le résultat est placé dans ResultInt, qui est aussi recouvert par ResultIntChr. Donc, si j’ai besoin de stocker le résultat dans un champ caractère, je viens juste de le faire.

  Dans le cas de ce petit programme, j’affiche simplement le résultat. Bien que le programme DMAPDEMO3 illustre l’arithmétique avec uniquement un entier signé d’un mot complet, la technique est la même pour tout type de donnée, qu’il soit entier ou à  virgule flottante. Il faut juste penser à  consulter la figure 4 pour obtenir la taille des données en octets et utiliser cette longueur lors du recouvrement, comme le montre le programme DMAPDEMO3.

Téléchargez gratuitement cette ressource

Les 7 étapes d’un projet de dématérialisation RH

Les 7 étapes d’un projet de dématérialisation RH

Dans ce livre blanc, nous vous donnons les clés pour concevoir votre projet de dématérialisation RH. Vous découvrirez chacune des étapes qui vous permettront d’apporter de nouveaux services aux collaborateurs, de vous adapter aux nouvelles pratiques et de renforcer la marque employeur.

Tech - Par iTPro - Publié le 24 juin 2010