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 ?
- Adresses, libellés longs, descriptions
- Champs contenant à la fois lettres et chiffres (codes postaux avec espaces, numéros de téléphone, IBAN…)
- Zones qui peuvent recevoir des données non validées
- Presque tous les champs texte quand on ne veut pas de contrôle strict
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)
PIC X
- Ne pas oublier les espaces de fin → utiliser
FUNCTION TRIMsi besoin - Quand on
MOVEun nombre versPIC X, il est converti en zone affichable (avec zéros non significatifs) - Pour les zones très longues (> 32 767 caractères), certains compilateurs imposent des restrictions ou exigent
PIC X(n) OCCURS
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.