La troncature d'ordre supérieur (ou à gauche) est un autre bogue explosif. Il survient quand le résultat d'une expression arithmétique est trop grand pour entrer dans une zone de résultat. Tout comme la division par zéro, la troncature d'ordre supérieur provoque une exception qui stoppe net le programme. Voyons à
La troncature d’ordre supérieur
nouveau le calcul du pourcentage de profit :
C Eval(HR) PrfPc = (RtlAmt – CstAmt) /
C RtlAmt * 100
On peut d’emblée considérer que le pourcentage de profit sera toujours inférieur à 100. On peut donc définir un PrfPc de quatre chiffres, y compris deux décimales. En cas de coût négatif, le pourcentage de profit sera supérieur à 100. Bien que les coût négatifs heurtent la logique, ils peuvent se produire quand on utilise le coût moyen. La meilleure solution consiste à définir un PrfPc de cinq chiffres, y compris deux décimales, et un test de troncature. Pour cela, on définit une zone de travail de 30 chiffres avec deux positions décimales, destinée à contenir le résultat de l’expression arithmétique, et on attribue la valeur de la zone de travail à PrfPc si sa valeur est à l’intérieur des limites :
C Eval(HR) WrkPc = (RtlAmt – CstAmt) /
C RtlAmt * 100
C If WrkPc >= 999.99- And
C WrkPc <= 999.99
C Eval PrfPc = WrkPc
C Else
C Eval PrfPc = 0
C EndIf
Combinons à présent les tests de division par zéro et de troncature d'ordre supérieur, dans un même ensemble de calculs:
C If RtlAmt <> 0
C Eval(HR) WrkPc = (RtlAmt – CstAmt) /
C RtlAmt * 100
C If WrkPc >= 999.99- And
C WrkPc <= 999.99
C Eval PrfPc = WrkPc
C Else
C Eval PrfPc = 0
. . . Signaler l'erreur
C EndIf
C Else
C Eval PrfPc = 0
. . . Signaler l'erreur
C EndIf
Observons que j'ai codé en dur les valeurs maximales et minimales autorisées pour PrfPc. Nous verrons dans un moment comment coder ces valeurs différemment pour faciliter la maintenance du code.
Ici, notre code est presque complet. Cependant, il est des calculs où même l'utilisation d'une zone de travail ne protègera pas de la troncature. Supposons que l'expression arithmétique produise un résultat impossible à stocker dans la zone de travail sans troncature. Dans un tel cas, aucun code, aussi bon soit-il ne protègera le programme d'une exception. Il faut alors un autre mécanisme pour protéger le code. Heureusement, ILE supporte des gestionnaires de conditions définies par l'utilisateur que l'on peut coder pour protéger l'application d'erreurs inattendues (pour plus d'informations sur l'utilisation des gestionnaires de conditions, voir "Exceptionnels ! Les gestionnaires de d'exceptions du RPG !", NEWSMAGAZINE, mai 1999, et "Le traitement des exceptions ILE en RPG IV", NEWSMAGAZINE, septembre 1996.)
Même dans sa version finale, notre exemple pourrait être amélioré
Téléchargez cette ressource
Sécuriser Microsoft 365 avec une approche Zero-Trust
Découvrez comment renforcer la cyber-résilience de Microsoft 365 grâce à une approche Zero-Trust, une administration granulaire et une automatisation avancée. La technologie Virtual Tenant de CoreView permet de sécuriser et simplifier la gestion des environnements complexes, tout en complétant vos stratégies IAM, y compris dans les secteurs réglementés.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Ransomware : l’IA accélère le vol de données et place les dirigeants dans le viseur
- La connectivité, nouvelle colonne vertébrale de l’expérience en magasin
- Assises de la Sécurité 2026 : osons remettre l’humain au centre et reprendre les commandes
- Réforme de la facturation électronique 2026 : de la contrainte réglementaire à un véritable enjeu différenciant
Articles les + lus
Continuer avec Exchange Server : quelles conséquences ?
Raccourcis Réseau et Navigateur : le kit de Diagnostic des Professionnels IT
Raccourcis PowerShell et Windows Terminal pour les Professionnels IT
Commandes Windows 11 : le Guide des Outils accessibles avec Win + R
Sécurité : une approche dans la durée avant tout
À la une de la chaîne Tech
- Continuer avec Exchange Server : quelles conséquences ?
- Raccourcis Réseau et Navigateur : le kit de Diagnostic des Professionnels IT
- Raccourcis PowerShell et Windows Terminal pour les Professionnels IT
- Commandes Windows 11 : le Guide des Outils accessibles avec Win + R
- Sécurité : une approche dans la durée avant tout
