Données alphanumériques

La clause PIC X – Données alphanumériques

La clause PICTURE X (ou PIC X) est la plus polyvalente et la plus utilisée en COBOL.

Elle accepte n’importe quel caractère présent dans le jeu de caractères du système (lettres, chiffres, espaces, signes de ponctuation, accents, symboles spéciaux…).

Quand utiliser PIC X ?

Comparaison rapide : PIC X vs PIC A vs PIC 9

Clause Caractères autorisés Usage principal Contrôle à la compilation/exécution
PIC X(n) Tout (lettres, chiffres, symboles, accents…) Texte libre, adresses, codes mixtes Aucun
PIC A(n) Seulement lettres + espaces Noms, prénoms, libellés purs Rejet si chiffre ou symbole
PIC 9(n) Seulement chiffres 0–9 Montants, codes numériques, dates Rejet si lettre ou symbole

Exemple 1 – Adresse complète

01  ADRESSE-CLIENT.
    05  RUE             PIC X(40).
    05  COMPLEMENT      PIC X(30).
    05  CODE-POSTAL     PIC X(5).
    05  VILLE           PIC X(30).
            

Accepte : "12 rue des Lilas", "Bat. B Appt 15", "75015", "Paris"

Exemple 2 – Numéro de téléphone ou IBAN

01  TELEPHONE           PIC X(15) VALUE "06 12 34 56 78".
01  IBAN                PIC X(27) VALUE "FR76 1234 5678 9012 3456 7890 12".
            

→ Contient espaces, tirets, lettres → impossible avec PIC 9

Exemple 3 – Zone tampon ou buffer

01  LIGNE-FICHIER       PIC X(200).
01  ZONE-RECEPTION      PIC X(512).
            

Utilisé pour lire des enregistrements de longueur fixe sans se soucier du contenu exact

Exemple 4 – Champ avec caractères spéciaux

01  COMMENTAIRE         PIC X(80).
            

Accepte : "Produit #REF123 - Délai 48h - OK !"

Exemple 5 – Initialisation et MOVE

01  CHAMP-TEXTE         PIC X(20) VALUE SPACES.
            

MOVE "Bonjour à tous" TO CHAMP-TEXTE → OK
MOVE 12345 TO CHAMP-TEXTE → converti en "0000012345 " (remplissage à gauche par zéros puis espaces)

Pièges fréquents avec PIC X

En pratique : PIC X représente aujourd’hui plus de 70–80 % des champs texte dans les programmes COBOL modernes. C’est le choix par défaut quand on ne veut pas (ou ne peut pas) imposer de contraintes strictes.