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
Mac en entreprise : le levier d’un poste de travail moderne
Ce livre blanc répond aux 9 questions clés des entreprises sur l’intégration du Mac : sécurité, compatibilité, gestion, productivité, coûts, attractivité talents, RSE et IA, et l’accompagnement sur mesure proposé par inmac wstore.
Les articles les plus consultés
- Les 6 étapes vers un diagnostic réussi
- Partager vos images, vidéos, musique et imprimante avec le Groupe résidentiel
- Activer la mise en veille prolongée dans Windows 10
- N° 2 : Il faut supporter des langues multiples dans SharePoint Portal Server
- Cybersécurité Active Directory et les attaques de nouvelle génération
Les plus consultés sur iTPro.fr
- Moderniser le développement logiciel : de la fragmentation à l’intégration
- Semperis : gouverner l’identité à l’ère des agents IA
- Analyse Patch Tuesday Mars 2026
- Une nouvelle ère de la modernisation du mainframe
Articles les + lus
Femmes et métiers de la tech : une attractivité réelle freinée par des stéréotypes persistants
Moderniser le développement logiciel : de la fragmentation à l’intégration
Analyse Patch Tuesday Mars 2026
Une nouvelle ère de la modernisation du mainframe
Communes, entreprises ? Non, face au RGAA 5, l’IA seule ne rendra pas vos sites accessibles
À la une de la chaîne Tech
- Femmes et métiers de la tech : une attractivité réelle freinée par des stéréotypes persistants
- Moderniser le développement logiciel : de la fragmentation à l’intégration
- Analyse Patch Tuesday Mars 2026
- Une nouvelle ère de la modernisation du mainframe
- Communes, entreprises ? Non, face au RGAA 5, l’IA seule ne rendra pas vos sites accessibles
