par Julian Monypenny
Comment repérer les bogues potentiels dans des expressions arithmétiques, en écrivant des programmes "blindés"
Je ne me lasse pas des films La Panthère Rose de Blake Ewards. J'aime tout particulièrement
l'obsession qu'a l'inspecteur Clouseau de se perfectionner sans cesse dans les
arts martiaux. C'est dans ce but que son acolyte, Cato, l'attaque à l'improviste
au moment le plus inattendu. Clouseau estime que pour dominer la situation, il
faut apprendre à "s'attendre à l'inattendu".
Les programmeurs que nous sommes doivent aussi s'attendre à l'inattendu. Dans
l'article "Style RPG IV : pour écrire un code sain", NEWSMAGAZINE, septembre 2000,
nous avons vu comment écrire un code solide en nous concentrant sur le traitement
des erreurs renvoyées par les opérations d'I/O. Les erreurs d'I/O sont faciles
à piéger grâce aux indicateurs résultants ou aux fonctions intégrées comme %Error
et %Found. Mais certaines erreurs de programmation sont bien plus insidieuses
que celles d'I/O. Les erreurs les plus courantes rencontrées dans des programmes
RPG IV sont dues à des expressions arithmétiques associées à l'opération Eval.
Nous allons donc évaluer des expressions arithmétiques en décrivant les erreurs
auxquelles on peut s'attendre et en expliquant comment les contrôler fermement.
Certaines erreurs de programmation sont bien plus insidieuses que celles
d'I/O
Style RPG IV : même l’inattendu peut arriver !
On connaît la maxime, « Garde tes amis près de toi, tes ennemis encore plus près ». A première vue, l’opération Eval semble amicale aux yeux du programmeur RPG. On peut en effet effectuer des calculs de gestion très complexes, de façon lisible, en combinant la souplesse d’Eval aux noms symboliques intelligibles du RPG IV. On peut, par exemple, exprimer le pourcentage de profit sur une vente directement avec Eval, sous la forme
C Eval PrfPc = (RtlAmt – CstAmt) /
C RtlAmt * 100
Malheureusement, quatre types d’actions ennemies menacent ce calcul :
l’arrondi
la perte de précision décimale
la division par zéro
la troncature d’ordre supérieur (ou à gauche)
Chacun de ces quatre types d’action ennemie constitue un bogue potentiel et donc notre opération Eval n’est pas si inoffensive que cela. On se souvient que, dans l’article précédent, j’ai divisé les bogues de programmes en deux catégories : explosifs et radioactifs. Avec les premiers, un énorme bang est signalé par un message d’exception qui stoppe net le programme. En revanche, avec des bogues radioactifs, le programme se conclut normalement, mais c’est la sortie obtenue qui souffre de l’exposition au code. Eval prend en charge les bogues explosifs et radioactifs. Pour garantir la bonne fin de l’Eval le plus simple, voyons chaque type de bogue et comment le traiter.
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
- Afficher les icônes cachées dans la barre de notification
- N° 2 : Il faut supporter des langues multiples dans SharePoint Portal Server
- Et si les clients n’avaient plus le choix ?
- Activer la mise en veille prolongée dans Windows 10
- Partager vos images, vidéos, musique et imprimante avec le Groupe résidentiel
Les plus consultés sur iTPro.fr
- 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
- Temps d’arrêt IT : un coût de 600 milliards de dollars pour les entreprises du Global 2000
- Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
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
