Clause PICTURE 9

Variables numériques en COBOL : PIC 9

Le symbole 9 dans la clause PICTURE sert à déclarer des zones qui ne contiennent que des chiffres de 0 à 9, destinées aux calculs et aux montants.

Type NUMERIC Longueur avec 9(n)
Regarde comment PIC 9 accepte ou refuse les valeurs.
Simulation d'une variable numérique
9 1
Position 1
9 2
Position 2
9 3
Position 3
9 4
Position 4
9 5
Position 5
Exemple : 12345 est valide, 12A45 est refusé (lettre interdite).
Visualisation (valeurs testées)
WS-NUM : _____ Test 1 : _____ Test 2 : _____

Comprendre PIC 9 pas à pas

Étape 1 – Type NUMERIC

Un type numérique stocke uniquement des chiffres de 0 à 9 et sert aux calculs arithmétiques, comparaisons de montants et compteurs.

C'est le type privilégié pour les quantités, montants, compteurs de boucles ou numéros que l'on additionne ou soustrait.

Étape 2 – Longueur avec 9(n)

Chaque 9 représente un digit, donc PIC 9(5) réserve 5 positions pour un entier de 0 à 99999.

On peut écrire 99999 ou la forme abrégée 9(5) pour définir la même longueur.

Étape 3 – Validité des caractères

PIC 9 refuse les lettres et caractères spéciaux, même s’ils « ressemblent » à un nombre pour un humain.

Si vous devez stocker des chiffres mélangés à des lettres, il faudra basculer sur PIC X.

Exemple 1 – Déclaration simple
* Variable numérique 3 chiffres 01 WS-NUM-3 PIC 9(3). * Variable numérique 5 chiffres pour un compteur 01 WS-COUNTER PIC 9(5).
Exemple 2 – Programme mini
* Addition simple avec PIC 9 IDENTIFICATION DIVISION. PROGRAM-ID. PIC-9-DEMO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-A PIC 9(3) VALUE 125. 01 WS-B PIC 9(3) VALUE 075. 01 WS-RESULT PIC 9(4). PROCEDURE DIVISION. ADD WS-A TO WS-B GIVING WS-RESULT. DISPLAY "Résultat : " WS-RESULT. STOP RUN.
Exemple 3 – PIC 9 vs PIC X
* Même longueur, mais contraintes différentes 01 WS-NUM PIC 9(5) VALUE 12345. * OK : 5 chiffres, exemple typique de compteur ou montant. 01 WS-NUM-ERR PIC 9(5) VALUE 12A45. * Erreur de compilation : * 'A' n'est pas un chiffre, interdit dans PIC 9. 01 WS-STRING PIC X(5) VALUE "12A45". * Valide avec PIC X(5) : la chaîne est acceptée, * mais ce n'est plus un nombre calculable.