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
Guide de Threat Intelligence contextuelle
Ce guide facilitera l’adoption d’une Threat Intelligence - renseignement sur les cybermenaces, cyberintelligence - adaptée au "contexte", il fournit des indicateurs de performance clés (KPI) pour progresser d' une posture défensive vers une approche centrée sur l’anticipation stratégique
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- La chaîne d’approvisionnement, point de rupture récurent du SI
- Ready For IT 2026 : quand l’accélération de l’innovation redessine les priorités des décideurs IT
- Microsoft Build 2026 : industrialiser l’IA agentique dans les environnements d’entreprise
- IA et souveraineté des données : les entreprises françaises redéfinissent les infrastructures IT
Articles les + lus
Computex 2026 : 5 signaux forts à retenir
La chaîne d’approvisionnement, point de rupture récurent du SI
Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
Analyse Patch Tuesday Mai 2026
À la une de la chaîne Tech
- Computex 2026 : 5 signaux forts à retenir
- La chaîne d’approvisionnement, point de rupture récurent du SI
- Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
- Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
- Analyse Patch Tuesday Mai 2026
