IDENTIFICATION DIVISION.
PROGRAM-ID. EXO-STRING-21.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-PRENOM PIC X(15) VALUE SPACES.
01 WS-NOM PIC X(15) VALUE SPACES.
01 WS-VILLE PIC X(15) VALUE SPACES.
01 WS-MESSAGE PIC X(80) VALUE SPACES.
PROCEDURE DIVISION.
DISPLAY "Entrez le prenom : "
ACCEPT WS-PRENOM
DISPLAY "Entrez le nom : "
ACCEPT WS-NOM
DISPLAY "Entrez la ville : "
ACCEPT WS-VILLE
MOVE SPACES TO WS-MESSAGE
STRING
"Bonjour " DELIMITED BY SIZE
WS-PRENOM DELIMITED BY SPACE
" " DELIMITED BY SIZE
WS-NOM DELIMITED BY SPACE
", ville : " DELIMITED BY SIZE
WS-VILLE DELIMITED BY SPACE
"." DELIMITED BY SIZE
INTO WS-MESSAGE
END-STRING
DISPLAY WS-MESSAGE
STOP RUN.
Lecture simple
STRING ajoute les morceaux dans l’ordre. Le point clé est DELIMITED BY : il indique “jusqu’où prendre” le contenu de chaque morceau.
- DELIMITED BY SIZE : on prend toute la longueur (pratique pour les textes fixes).
- DELIMITED BY SPACE : on s’arrête au premier espace (utile après une saisie, car les champs ont souvent des blancs à droite).
- INTO WS-MESSAGE : la destination reçoit le résultat complet.
Votre micro-exercice
Faites ces 3 modifications :
- Ajoutez une variable WS-PAYS et demandez-la à l’utilisateur.
- Fabriquez un message : “Bonjour PRENOM NOM, ville : VILLE, pays : PAYS.”
- Testez avec une ville et un pays longs : si ça coupe, augmentez la taille de WS-MESSAGE.
Erreur fréquente à éviter
Oublier les séparateurs. Si vous concaténez “Bonjour” et un prénom sans espace, vous obtiendrez un texte collé (“BonjourPaul”). Le bon réflexe : intégrer les espaces dans les littéraux, ou ajouter un littéral " " entre deux champs.
Autre piège : utiliser DELIMITED BY SIZE sur un champ saisi. Cela copie aussi les espaces de fin, et le message peut avoir des blancs au milieu. Pour une saisie, DELIMITED BY SPACE donne souvent un résultat plus propre.