Exercice 15-B : unstring

Micro-exercice

Objectif : utiliser UNSTRING pour découper une chaîne en plusieurs morceaux et les ranger dans des variables séparées. C’est l’inverse de STRING. Vous allez saisir une ligne complète (par exemple “prenom;nom;ville”) puis extraire chaque partie.

Ce que vous pratiquez

  • Saisir une ligne “tout-en-un” avec ACCEPT.
  • Découper avec un séparateur (DELIMITED BY).
  • Ranger chaque morceau dans une variable avec INTO.

Repère sur les colonnes

  • Zone A : colonnes 8 à 11 (7 espaces pour divisions et déclarations).
  • Zone B : colonnes 12 à 72 (11 espaces pour instructions).

Le bloc <pre> conserve les espaces : affichage réaliste.

Exemple minimal COBOL Format fixe
Télécharger le code
       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.

À retenir : la source est une seule ligne, la sortie est “rangée” en plusieurs variables. C’est très utile quand un fichier ou un utilisateur fournit une ligne structurée (type CSV).

Votre micro-exercice

Faites ces 3 modifications :

  1. Ajoutez un quatrième champ WS-PAYS et saisissez “prenom;nom;ville;pays”.
  2. Affichez un message d’erreur si la saisie ne contient pas de point-virgule.
  3. 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.

Conseil : testez une saisie “parfaite”, puis une saisie incomplète, puis une saisie avec des morceaux longs. Vous verrez rapidement ce que fait UNSTRING dans des situations réelles.