Les nombres décimaux en COBOL

Les nombres décimaux en COBOL – PIC 9(n)V9(m)

En une phrase :
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 :