Les nombres signés en COBOL – PIC S9
En une phrase :
Quand vous mettez un
Sans
Quand vous mettez un
S devant le 9, la variable peut être négative (ex. -125, -0.75) ou positive.Sans
S, elle est toujours positive ou zéro.
Exemple 1 – Solde de compte (le plus courant)
01 SOLDE PIC S9(7)V99 COMP-3.
Peut contenir :
• +12 345.67
• - 987.50
• 0.00
Exemple 2 – Montant d’une opération
01 MONTANT-OPERATION PIC S9(5)V99.
Valeurs possibles :
12 345.67
- 500.00
+ 0.01
- 0.00 (possible, mais rare)
Exemple 3 – Différence entre PIC 9 et PIC S9
01 CREDIT PIC 9(6)V99. *> toujours positif ou zéro
01 DEBIT PIC S9(6)V99. *> peut être négatif
MOVE -250.75 TO CREDIT → devient +250.75 (le signe est perdu !)
MOVE -250.75 TO DEBIT → reste -250.75
Exemple 4 – Très petit nombre décimal négatif
01 TAUX-PENALITE PIC S9V999 VALUE -0.075.
→ Valeur interne : -075 (virgule implicite)
→ Affichage possible : -0.075
Exemple 5 – Compteur qui peut diminuer
01 STOCK-RESTANT PIC S9(5) COMP VALUE +1200.
Peut passer à :
+1200 → +800 → +300 → -50 (découvert autorisé)
La règle à retenir (très simple) :
• Vous voulez pouvoir mettre un nombre négatif ? → mettez
• Vous êtes sûr que ce sera toujours positif ou zéro ? → pas de
• Vous voulez pouvoir mettre un nombre négatif ? → mettez
S• Vous êtes sûr que ce sera toujours positif ou zéro ? → pas de
S
Petit rappel important :
Le S ne prend pas de place supplémentaire en mémoire dans la plupart des formats (COMP-3, COMP). Il est stocké dans un demi-octet ou un bit de signe.