Données numériques

La clause PIC 9 – Données numériques

La clause PICTURE 9 (ou PIC 9) définit une zone qui ne peut contenir que des **chiffres** (0 à 9).

C’est la clause la plus utilisée pour représenter :

Les principales variantes de PIC 9

Clause Signification Utilisation typique Stockage mémoire
PIC 9(n) Nombre entier non signé, n chiffres Code postal, quantités, années n octets (DISPLAY)
PIC 9(n)V9(m) Nombre décimal avec m décimales Montants, prix, taux n + m octets
PIC S9(n) COMP-3 Nombre signé, packed-decimal Soldes comptables, totaux ≈ (n+1)/2 octets
PIC 9(n) COMP Nombre binaire (binaire pur) Compteurs internes, index 2, 4 ou 8 octets selon n

Exemple 1 – Entier simple

01  CODE-CLIENT         PIC 9(8) VALUE 12345678.
01  QUANTITE            PIC 9999 VALUE 0500.
            

→ Accepte 00000000 à 99999999
→ Tentative de MOVE "ABC" TO CODE-CLIENT → erreur

Exemple 2 – Nombre décimal (virgule implicite)

01  PRIX-UNITAIRE       PIC 9(5)V99 VALUE 12345.67.
01  TOTAL-HT            PIC 9(7)V99 VALUE 0000000.00.
            

→ La position de la virgule est **implicite** (pas stockée en mémoire)
→ Valeur interne : 1234567 (pour 12345.67)

Exemple 3 – Nombre signé (avec signe)

01  SOLDE-COMPTE        PIC S9(7)V99 COMP-3.
01  DETTE               PIC S999V99 VALUE -12.50.
            

→ Le signe est stocké dans le dernier demi-octet (packed-decimal)
COMP-3 = format le plus économique pour les fichiers et bases de données

Exemple 4 – Compteur binaire

01  COMPTEUR-LIGNES     PIC 9(5) COMP VALUE ZERO.
            

→ Utilisé pour des boucles ou index internes
→ Plus rapide pour les calculs que le format DISPLAY

Exemple 5 – Format d’édition (affichage)

01  MONTANT-AFFICHE     PIC ZZZ,ZZZ,ZZ9.99 VALUE 0001234.56.
            

Z = remplace les zéros non significatifs par des espaces
→ Résultat affiché : " 1,234.56"

Pièges classiques avec PIC 9

En résumé : PIC 9 est la base de tout ce qui est calculable en COBOL. Choisissez toujours le format le plus adapté (DISPLAY, COMP-3, COMP) selon l’usage : stockage, performance, calculs, affichage.