Clause PICTURE X

Chaînes alphanumériques en COBOL : PIC X

Le symbole X dans la clause PICTURE sert à déclarer des zones alphanumériques capables de contenir lettres, chiffres, espaces et symboles.

Type ALPHANUMERIC Longueur avec X(n)
Observe comment PIC X accepte des combinaisons variées de caractères.
Simulation d'une chaîne alphanumérique
X 1
Position 1
X 2
Position 2
X 3
Position 3
X 4
Position 4
X 5
Position 5
Exemple : C0BOL, 12A#! – tout est accepté en PIC X.
Visualisation (valeurs testées)
WS-TXT : _____ Test 1 : _____ Test 2 : _____

Comprendre PIC X pas à pas

Étape 1 – Type ALPHANUMERIC

Un type alphanumérique peut stocker lettres, chiffres, espaces et symboles, sans contrainte de forme particulière.

On l'utilise pour les zones texte générales : messages, champs libres, lignes de logs, codes mélangés lettres/chiffres.

Étape 2 – Longueur avec X(n)

Chaque X représente une position, donc PIC X(5) réserve 5 caractères, PIC X(30) réserve 30 caractères, etc.

Tu peux écrire XXXXX ou utiliser la forme abrégée X(5), plus lisible dans la plupart des cas.

Étape 3 – PIC X vs PIC 9 / A

PIC X est le plus permissif : il accepte ce que PIC 9 (numérique) et PIC A (alphabétique) refusent.

En contrepartie, une zone PIC X ne peut pas être utilisée directement dans les calculs arithmétiques.

Exemple 1 – Déclaration simple
* Chaîne alphanumérique 10 caractères 01 WS-MESSAGE PIC X(10). * Chaîne 20 caractères avec valeur par défaut 01 WS-TITLE PIC X(20) VALUE "COBOL DEMO".
Exemple 2 – Programme mini
* Affichage d'une chaîne PIC X IDENTIFICATION DIVISION. PROGRAM-ID. PIC-X-DEMO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-HELLO PIC X(15) VALUE "HELLO PACTA". 01 WS-CODE PIC X(10) VALUE "A7#9". PROCEDURE DIVISION. DISPLAY "Texte : " WS-HELLO. DISPLAY "Code : " WS-CODE. STOP RUN.
Exemple 3 – PIC X vs PIC 9 / A
* Même valeur testée dans différents types 01 WS-TXT PIC X(5) VALUE "12A#!". * OK : PIC X accepte chiffres, lettre et symbole. 01 WS-NUM PIC 9(5). * La valeur "12A#!" serait refusée si on tentait de la mettre dans WS-NUM. 01 WS-ALPHA PIC A(5). * "12A#!" ne convient pas non plus à PIC A(5) (chiffres et symbole interdits).