Les nombres décimaux en COBOL – PIC 9(n)V9(m)
En une phrase :
La lettre
Elle n’est pas stockée en mémoire : c’est juste une indication pour le compilateur.
La lettre
V dans PIC 9(n)V9(m) marque l’emplacement de la virgule décimale.Elle n’est pas stockée en mémoire : c’est juste une indication pour le compilateur.
Exemple 1 – Prix avec deux décimales (le plus courant)
01 PRIX-UNITAIRE PIC 9(5)V99 VALUE 00123.45.
Valeur réelle : 123,45 €
En mémoire : les 7 chiffres 0012345 (la virgule est implicite)
Exemple 2 – Montant total avec virgule
01 TOTAL-HT PIC 9(7)V99 VALUE 0004567.89.
01 TVA PIC 9(6)V999 VALUE 000123.456.
• TOTAL-HT = 4 567,89
• TVA = 123,456 % (taux de TVA très précis)
Exemple 3 – Quantité avec trois décimales
01 POIDS PIC 9(4)V999 VALUE 0123.450.
Valeur : 123,450 kg
En mémoire : 0123450 (7 chiffres, virgule entre le 4ᵉ et le 5ᵉ)
Exemple 4 – Très petit montant (centimes seulement)
01 REMISE PIC V999 VALUE 0.125.
→ Valeur : 0,125 (12,5 %)
→ Équivaut à PIC 9V999 avec zéro avant la virgule implicite
Exemple 5 – Nombre décimal négatif
01 SOLDE-DECIMAL PIC S9(6)V99 VALUE -004567.89.
→ -4 567,89
Le S permet le signe négatif
Mémoire : signe + 8 chiffres
La règle ultra-simple à retenir :
•
•
→
→
•
9 = un chiffre (0–9)•
V = emplacement de la virgule (elle n’existe pas vraiment en mémoire)→
PIC 9(4)V99 = xxxx,xx → 6 chiffres en tout→
PIC 9(3)V9(4) = xxx,xxxx → 7 chiffres en tout
Points clés :
- La virgule n’est jamais stockée → gain de place
- Quand vous affichez ou imprimez, COBOL sait où placer la virgule grâce au
V - Pour les montants financiers : presque toujours
9(n)V99ouS9(n)V99