Code opération RPG III / RPG/400 · IBM i (AS/400) · Calculs
SQRT
Racine carrée
Calcule la racine carrée du facteur 2 dans la zone résultat ; un nombre négatif arrête le programme.
Syntaxe
C SQRT facteur2 result 72
C SQRT facteur2 result 72H
- Facteur 1 (18-27)
- Toujours vide.
- Facteur 2 (33-42)
- Le nombre dont on cherche la racine : zone numérique ou littéral, positif.
- Zone résultat (43-48)
- Reçoit la racine.
- Longueur (49-51)
- Longueur totale de la zone résultat, décimales comprises. Renseignée quand la zone apparaît pour la première fois dans le programme : c'est ce qui la définit. Sans longueur, une zone encore inconnue provoque
QRG7030, « La zone ou l'indicateur n'est pas défini ». - Décimales (52)
- Nombre de décimales de la zone résultat ; 0 pour un entier.
- Colonne 53
Hdemande l'arrondi (demi supérieur) : si le résultat a plus de décimales que la zone résultat, le résultat est arrondi à la valeur la plus proche (1,09945 devient 1,10 pour deux décimales). SansH, les décimales en trop sont simplement coupées, sans arrondi.- Indicateurs de conditionnement (9-17)
- Facultatif : l'opération n'est exécutée que si les indicateurs indiqués ont l'état demandé.
- Effet
- La zone résultat contient la racine carrée, coupée ou arrondie (
H) aux décimales de la zone. Avec un facteur 2 négatif, le programme s'arrête sur l'erreurRPG0101.
À quoi ça sert
SQRT sert aux calculs géométriques (côté d'un carré à partir de son aire), aux écarts types et à certains calculs financiers. Les décimales de la zone résultat fixent la précision.
Exemple 1 : Racine exacte, coupée et arrondie
H* SQRT : racine carree exacte et arrondie
C Z-ADD144 AIRE 70
C SQRT AIRE COTE 50
C 'Racine' DSPLY
C COTE DSPLY
C Z-ADD5 CINQ 30
C SQRT CINQ R1 52
C SQRT CINQ R2 52H
C 'Sans H' DSPLY
C R1 DSPLY
C 'Avec H' DSPLY
C R2 DSPLY
C Z-ADD3 TROIS 30
C SQRT TROIS E1 30
C SQRT TROIS E2 30H
C 'Entier' DSPLY
C E1 DSPLY
C 'Entier H'DSPLY
C E2 DSPLY
C SETON LR
Résultat réel, compilé par CRTRPGPGM et exécuté sur IBM i 7.5 :
Racine
12
Sans H
223
Avec H
224
Entier
1
Entier H
2
La racine de 144 est 12. Celle de 5 vaut 2,2360… : la zone à 2 décimales garde 223 sans H, 224 avec H. Celle de 3 (1,732…) dans une zone entière donne 1 sans H et 2 avec.
Exemple 2 : Nombre négatif
H* SQRT : racine d'un nombre negatif
C Z-ADD-4 NEG 30
C 'Avant' DSPLY
C SQRT NEG RAC 52
C 'Apres' DSPLY
C SETON LR
Résultat réel, compilé par CRTRPGPGM et exécuté sur IBM i 7.5 :
Avant
Erreur : RPG0101 - a tenté de calculer la racine carrée d'un nombre négatif (C G S D F).
La racine de −4 n'existe pas : après « Avant », le travail s'arrête sur RPG0101, « a tenté de calculer la racine carrée d'un nombre négatif ».
Le piège
Un facteur 2 négatif est une erreur fatale (RPG0101, deuxième exemple) : testez le signe avant, par exemple NOMBRE IFGE 0.
Sans H, la racine est coupée, pas arrondie : √5 donne 2,23 et non 2,24, et √3 donne 1 dans une zone entière.
En RPG ILE full free
En RPG ILE full free, la fonction intégrée %SQRT s'emploie dans une expression ; %DECH ou EVAL(H) arrondissent.
cote = %sqrt(aire);
eval(h) r2 = %sqrt(cinq);