Index du tour guidé

Bienvenue dans la formation COBOL

Apprenez les bases du COBOL et développez vos compétences en programmation legacy avec une approche moderne.

Info : Ce module vous permet d’accéder rapidement aux contenus essentiels de la formation COBOL.
Retour au plan général
Navigation rapide
Utilisez ces boutons si vous voulez accéder directement à une page, sans parcourir les cartes.
1 2 3 4 5 6 7 8 9 10

Leçon 7 : manipuler des chaînes proprement

Objectif : produire des textes propres à partir de champs à longueur fixe en combinant  FUNCTION  TRIM ,  STRING  et  UNSTRING .

Débutant Texte Concaténation
🧵
Idée clé
En Cobol, un champ texte est souvent rempli d’espaces jusqu’à sa taille maximale. Si vous assemblez ces champs “bruts”, vos phrases contiennent des blancs inutiles. C’est pourquoi  FUNCTION  TRIM  devient rapidement indispensable.
🧠

Conceptualiser

Nettoyage

Trois outils sont particulièrement utiles quand vous manipulez des champs texte à longueur fixe :

🧽
 FUNCTION  TRIM 
Supprime les espaces de fin (et selon la variante, parfois les espaces de début). Indispensable pour produire des phrases “propres”.
🧩
 STRING 
Concatène plusieurs morceaux (champs et littéraux) dans un champ résultat. Vous contrôlez où s’arrête chaque morceau via des délimiteurs.
✂️
 UNSTRING 
Fait l’inverse : découpe une chaîne selon un séparateur (espace, virgule, point-virgule, etc.) pour répartir le contenu dans plusieurs champs.
⚠️
Point critique
Pensez toujours à la taille du champ résultat : si la phrase est trop longue, vous obtenez une troncature ou un assemblage incomplet selon l’environnement.
🧠 Pourquoi c’est si fréquent
Dans les traitements métier, on assemble constamment des données fixes (nom, prénom, code, libellé, ville, etc.) pour produire des libellés, des messages, des exports, des traces et des rapports.
🧪

Opérer

Construire une phrase

Ce programme lit deux champs, les nettoie, puis assemble une phrase lisible. Le délimiteur  DELIMITED  BY  SIZE  signifie : “prends toute la longueur du morceau”.

🧾Fichier : demo-string.cbl
Cobol (format libre)

 >>SOURCE FORMAT FREE
 IDENTIFICATION DIVISION.
 PROGRAM-ID. DEMO-STRING.

 DATA DIVISION.
 WORKING-STORAGE SECTION.
 01 WS-PRENOM  PIC X(20) VALUE SPACES.
 01 WS-VILLE   PIC X(20) VALUE SPACES.
 01 WS-PHRASE  PIC X(80) VALUE SPACES.

 PROCEDURE DIVISION.
    DISPLAY "Prenom : " WITH NO ADVANCING
    ACCEPT WS-PRENOM
    DISPLAY "Ville : " WITH NO ADVANCING
    ACCEPT WS-VILLE

    STRING
        FUNCTION TRIM(WS-PRENOM) DELIMITED BY SIZE
        " habite a "                DELIMITED BY SIZE
        FUNCTION TRIM(WS-VILLE)    DELIMITED BY SIZE
        INTO WS-PHRASE
    END-STRING

    DISPLAY WS-PHRASE
    STOP RUN.
▶️ Compilation (exemple)
cobc -x -free demo-string.cbl
Le résultat ressemble à : [Prenom] habite a [Ville].
✅ Ce que vous validez
  • Nettoyage espaces
  • Assemblage lisible
  • Champ résultat
🧯

Déboguer

Erreurs typiques

Les bugs sur les chaînes sont souvent des bugs de taille ou de délimiteurs.

  • Phrase trop longue pour  WS-PHRASE  : troncature.
  • Mauvais délimiteurs : vous assemblez plus que prévu, ou vous récupérez des espaces non souhaités.
🔎 Astuce

Si le résultat contient des blancs “bizarres”, affichez les morceaux séparément avec des marqueurs, puis vérifiez que vous utilisez bien  FUNCTION  TRIM  au bon endroit.

🧭

Expliquer et explorer

Exercices

Dans les traitements métier, beaucoup de règles consistent à assembler et nettoyer des champs fixes. Vous produisez ainsi des libellés, des messages, des lignes d’export ou des affichages utilisateur.

📌 Conseil
Quand vous construisez une phrase, prévoyez un champ résultat plus large au début, puis ajustez ensuite quand vous êtes sûr des longueurs possibles.

🧩 Exercices (à faire tout de suite)

  1. Ajoutez Bonjour au début de la phrase.
  2. Ajoutez une virgule et un point final.

    STRING
        "Bonjour "                  DELIMITED BY SIZE
        FUNCTION TRIM(WS-PRENOM) DELIMITED BY SIZE
        " habite a "                DELIMITED BY SIZE
        FUNCTION TRIM(WS-VILLE)    DELIMITED BY SIZE
        INTO WS-PHRASE
    END-STRING

    STRING
        "Bonjour "                  DELIMITED BY SIZE
        FUNCTION TRIM(WS-PRENOM) DELIMITED BY SIZE
        ", habite a "                DELIMITED BY SIZE
        FUNCTION TRIM(WS-VILLE)    DELIMITED BY SIZE
        "."                           DELIMITED BY SIZE
        INTO WS-PHRASE
    END-STRING
💡 La virgule est collée à la fin du prénom (pas d’espace avant), et le point final termine la phrase proprement.

↑ Haut