IDENTIFICATION DIVISION.
PROGRAM-ID. EXO-UNSTRING-22.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-LIGNE PIC X(60) VALUE SPACES.
01 WS-PRENOM PIC X(15) VALUE SPACES.
01 WS-NOM PIC X(15) VALUE SPACES.
01 WS-VILLE PIC X(15) VALUE SPACES.
PROCEDURE DIVISION.
DISPLAY "Saisissez : prenom;nom;ville"
DISPLAY "Exemple : Paul;Martin;Lyon"
DISPLAY "Votre saisie : "
ACCEPT WS-LIGNE
MOVE SPACES TO WS-PRENOM
MOVE SPACES TO WS-NOM
MOVE SPACES TO WS-VILLE
UNSTRING WS-LIGNE
DELIMITED BY ";"
INTO WS-PRENOM
WS-NOM
WS-VILLE
END-UNSTRING
DISPLAY "Prenom : " WS-PRENOM
DISPLAY "Nom : " WS-NOM
DISPLAY "Ville : " WS-VILLE
STOP RUN.
Lecture simple
UNSTRING lit la chaîne source et coupe à chaque fois qu’il rencontre le séparateur. Ici, le séparateur est ";". Le premier morceau va dans WS-PRENOM, le second dans WS-NOM, le troisième dans WS-VILLE.
Votre micro-exercice
Faites ces 3 modifications :
- Ajoutez un quatrième champ WS-PAYS et saisissez “prenom;nom;ville;pays”.
- Affichez un message d’erreur si la saisie ne contient pas de point-virgule.
- Testez un cas avec une ville contenant un espace (ex : “Le Havre”) et observez le résultat.
Erreur fréquente à éviter
Oublier d’initialiser les champs destination. Si une saisie est plus courte (ex : il manque la ville), un ancien contenu peut rester visible dans WS-VILLE. D’où les MOVE SPACES avant UNSTRING.
Autre piège : choisir des champs destination trop courts. Si un morceau dépasse PIC X(15), il sera tronqué. Pour débuter, dimensionnez un peu large, puis ajustez plus tard.