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

Instruction string : concaténer plusieurs chaînes dans une variable

L’instruction  STRING  permet d’assembler plusieurs morceaux de texte (littéraux, champs, résultats de fonctions) dans une seule variable destination. C’est l’outil idéal pour créer une phrase, un libellé, une ligne d’édition, ou un enregistrement “formaté”, tout en gardant le contrôle sur la taille, les espaces, et la position du résultat.

Concaténation Texte Présentation

Conceptualiser

Comprendre

Un programme cobol manipule souvent des champs à longueur fixe, donc remplis d’espaces. Avec  STRING , vous contrôlez précisément ce qui est copié dans la destination. La notion essentielle est le couple :  DELIMITED  BY  + une règle de fin.

Destination : un champ “réceptacle”
Tout est copié dans  INTO … et si la destination est trop courte, le résultat est tronqué.
Délimiteurs : ce que vous prenez réellement
 DELIMITED  BY  SIZE  signifie : “prendre tout le morceau”. Si vous utilisez un autre délimiteur (ex. espace), la copie s’arrête à ce délimiteur.
Nettoyage : limiter les espaces parasites
Combinez souvent  STRING  avec  FUNCTION  TRIM  sur les champs.
Quand utiliser string ?
Dès que vous voulez une phrase “propre” dans une variable : journaux, messages, éditions, fichiers, rapports batch. Pour un affichage simple,  DISPLAY  suffit, mais dès que vous devez réutiliser le texte,  STRING  devient plus pratique.

Opérer

Exemple exécutable

Cet exemple demande un prénom et une ville, puis construit une phrase complète dans une variable. Il montre la bonne pratique : nettoyer les champs avec  FUNCTION  TRIM  avant de concaténer.

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
        "Bonjour "                DELIMITED BY SIZE
        FUNCTION TRIM(WS-PRENOM)  DELIMITED BY SIZE
        ", vous etes a "        DELIMITED BY SIZE
        FUNCTION TRIM(WS-VILLE)   DELIMITED BY SIZE
        "."                  DELIMITED BY SIZE
        INTO WS-PHRASE
    END-STRING

    DISPLAY "Phrase = [" WS-PHRASE "]"
    STOP RUN.
Ce que fait le programme, en logique “métier”
  • Lit un prénom dans  WS-PRENOM  et une ville dans  WS-VILLE 
  • Nettoie les deux champs (suppression d’espaces de fin) avec  FUNCTION  TRIM 
  • Assemble le tout dans  WS-PHRASE  avec  STRING 
  • Affiche la phrase encadrée pour rendre visibles les espaces éventuels
Pourquoi encadrer la phrase ?
Même si vous nettoyez vos champs, la destination  WS-PHRASE  est un champ fixe : s’il reste des espaces en fin de zone, les crochets permettent de les “voir” indirectement.
Variantes pratiques à connaître
1) Construire une phrase plus courte
Réduisez la destination si vous voulez “forcer” une limite et observer la troncature.

 01 WS-PHRASE PIC X(25) VALUE SPACES.
2) Ajouter un second champ destination (message + log)
Vous pouvez construire une phrase pour l’utilisateur et une phrase technique pour un journal.

 01 WS-MSG PIC X(80) VALUE SPACES.
 01 WS-LOG PIC X(80) VALUE SPACES.
Attention aux tailles
Avec  STRING , si la destination est trop courte, vous perdez la fin. La règle simple : commencez large, puis réduisez quand vous maîtrisez.

Résultat tronqué
La destination est trop courte. Solution : augmentez  WS-PHRASE , ou produisez une phrase plus compacte.
Espaces inattendus
Vous concaténez des champs non nettoyés. Solution : utilisez  FUNCTION  TRIM  sur les champs texte.
Morceaux “vides”
Si l’utilisateur saisit juste Entrée, le champ reste rempli d’espaces. Solution : testez  FUNCTION  TRIM (champ) avant de construire la phrase, et affichez un message de saisie obligatoire.
Explorer : exercices
1) Ajoutez un champ “pays” et construisez : “Bonjour X, vous êtes à Ville, Pays.”
2) Ajoutez un contrôle : si le prénom est vide, affichez “Erreur : prénom obligatoire”.
3) Construisez une phrase sans  FUNCTION  TRIM  et comparez le rendu.
4) Remplacez la phrase par un format “clé=valeur” pour un journal (ex. “prenom=...;ville=...;”).

↑ Haut