Q: Je lis un fichier dans un programme RPG en format libre dont un champ est appelé YSTATI, c’est un champ caractère d’un octet de long. J’aimerais faire quelque chose de particulier quand le huitième bit est activé (on). Comment puis-je tester la valeur d’un bit
Tester des BITS avec RPG en format libre
en RPG en format libre ?
R : Le code opération TESTB a été remplacé par le BIF %bitand() en RPG en format libre. Le BIF %bitand effectue une opération AND sur chaque bit dans un champ sur deux champs ou plus. Quand vous effectuez une opération AND, le bit dans le résultat est activé (on) uniquement si les bits dans tous les champs comparés sont activés. Soit les deux octets suivants et le résultat (exprimé en binaire) :
Octet 1 : 01010101
Octet 2 : 10110011
________
00010001
Seuls les quatrième et huitième bits, à partir de la gauche, sont activés dans le résultat. La raison en est que ce sont les seuls bits qui étaient activés (c’est-à-dire de valeur 1) dans les deux octets.
Pour utiliser %bitand() pour tester les valeurs de certains bits, vous pouvez créer un champ « bit mask ». Là, mettez à 1 les bits vérifier, et à 0 les autres. Un bit mask qui ne vérifie que le huitième bit serait donc 00000001. Avant d’utiliser ce bit mask, vous devez le convertir en hexadécimal. Ici, la valeur hexa correspondante est x’01′. Vous pouvez ensuite l’utiliser dans le programme RPG en format libre comme le montre la figure 4.
Le BIF %bitand() a été introduit en V5R2. Pour activer des bits dans des releases antérieures, il faut utiliser le code opération TESTB. Malheureusement, cela n’existe pas dans RPG en format libre. L’exemple de la figure 5 fait la même chose que le code de la figure 4, mais avec TESTB. J’aime montrer clairement que je vérifie certains bits d’un champ. Pour cela, je définis une constante nommée qui correspond au bit que je vérifie. Ainsi, si l’activation du bit 8 signifie qu’un client a payé en totalité, alors je définirai la constante de la figure 6. Quand je veux vérifier cette constante, je peux coder en V5R2 ou version ultérieure, comme le montre la figure 7. La figure 8 montre comment je peux utiliser cette constante dans des releases antérieures.
Il est judicieux de définir tous les « flags de bits » utilisés pour un fichier particulier dans un membre /copy. Vous pourrez ainsi les utiliser pour tous vos programmes sans être obligés de les redéfinir.
Par Scott Klement
Téléchargez cette ressource
Construire une infrastructure cloud optimisée pour l’IA avec Microsoft Azure
Les managers IT ont besoin d’une stratégie claire et de solutions concrètes pour préparer leur infrastructure cloud à l'adoption de l'IA, tout en optimisant les coûts, renforçant la sécurité et développant les compétences internes. Découvrez tous les conseils dans ce guide Insight.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Tendances 2026 : l’IA devra prouver sa rentabilité
- L’identité numérique : clé de voûte de la résilience et de la performance en 2026
- CES 2026 : l’IA physique et la robotique redéfinissent le futur
- Les 6 tournants qui redéfinissent l’IA en entreprise
Articles les + lus
CES 2026 : l’IA physique et la robotique redéfinissent le futur
Les 3 prédictions 2026 pour Java
Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
Face à l’urgence écologique, l’IT doit faire sa révolution
D’ici 2030, jusqu’à 90 % du code pourrait être écrit par l’IA, pour les jeunes développeurs, l’aventure ne fait que commencer
À la une de la chaîne Tech
- CES 2026 : l’IA physique et la robotique redéfinissent le futur
- Les 3 prédictions 2026 pour Java
- Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
- Face à l’urgence écologique, l’IT doit faire sa révolution
- D’ici 2030, jusqu’à 90 % du code pourrait être écrit par l’IA, pour les jeunes développeurs, l’aventure ne fait que commencer
