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 inspect : comptage et remplacement de caractères dans une chaîne

L’instruction  INSPECT  est un outil très pratique quand vous devez analyser une chaîne ou “nettoyer” une valeur texte. Elle sert principalement à deux familles d’opérations : compter des caractères ou des motifs (ex. compter les espaces, les tirets, les “A”), et remplacer des caractères (ex. remplacer - par un espace, remplacer des points par des virgules). Dans un contexte métier,  INSPECT  est souvent utilisé pour préparer des champs avant un export, uniformiser des formats, ou contrôler qu’une donnée respecte des règles simples.

Analyse Nettoyage Validation

Conceptualiser

Idées clés

Pour manipuler proprement des chaînes, cobol propose plusieurs approches.  INSPECT  se distingue par sa simplicité : il “parcourt” une zone texte et applique une règle de comptage ou de substitution. Cela permet de rester dans une logique stable, lisible, adaptée aux données fixes.

Compter avec tallying
 TALLYING  met à jour un compteur en fonction d’un critère (ex. “combien d’espaces dans la chaîne ?”).
Remplacer avec replacing
 REPLACING  remplace un caractère (ou groupe de caractères) par un autre, directement dans la variable.
Cas d’usage métier
Normalisation : supprimer des tirets, uniformiser un numéro, remplacer des séparateurs, compter des caractères de contrôle pour valider un format simple.
Point d’attention
 INSPECT  modifie la variable cible lors d’un  REPLACING . Si vous devez conserver la valeur d’origine, copiez-la d’abord dans un champ “travail”.

Opérer

Exemple exécutable

Exemple pédagogique : vous partez d’une chaîne contenant des tirets et des espaces. Vous comptez d’abord les tirets, puis vous remplacez les tirets par des espaces. Ensuite, vous comptez les espaces (utile pour contrôler un format).

Fichier : demo-inspect.cbl
Cobol (format libre)

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

 DATA DIVISION.
 WORKING-STORAGE SECTION.
 01 WS-ORIG       PIC X(30) VALUE "AB-12-XY--99  END".
 01 WS-TEXTE      PIC X(30) VALUE SPACES.

 01 WS-NB-TIRETS   PIC 9(3) VALUE 0.
 01 WS-NB-ESPACES  PIC 9(3) VALUE 0.

 PROCEDURE DIVISION.
    MOVE WS-ORIG TO WS-TEXTE

    DISPLAY "Original  = [" WS-TEXTE "]"

    MOVE 0 TO WS-NB-TIRETS
    INSPECT WS-TEXTE
        TALLYING WS-NB-TIRETS FOR ALL "-"
    END-INSPECT
    DISPLAY "Tirets   = " WS-NB-TIRETS

    INSPECT WS-TEXTE
        REPLACING ALL "-" BY " "
    END-INSPECT
    DISPLAY "Remplace = [" WS-TEXTE "]"

    MOVE 0 TO WS-NB-ESPACES
    INSPECT WS-TEXTE
        TALLYING WS-NB-ESPACES FOR ALL " "
    END-INSPECT
    DISPLAY "Espaces = " WS-NB-ESPACES

    STOP RUN.
Les deux formes les plus utiles au quotidien

 INSPECT WS-TEXTE
    TALLYING WS-COMPTE FOR ALL "X"
 END-INSPECT
Ici, le compteur augmente à chaque occurrence de X. C’est utile pour détecter un format, vérifier des séparateurs, ou contrôler une saisie “simple”.

 INSPECT WS-TEXTE
    REPLACING ALL "-" BY " "
 END-INSPECT
Ici, vous normalisez un séparateur. C’est très utilisé avant d’afficher, d’écrire dans un fichier, ou de comparer des valeurs issues de sources différentes.
Cas d’usage fréquents en traitement métier
Uniformiser un numéro
Remplacer les tirets et points par des espaces, puis utiliser  FUNCTION  TRIM  ou une logique de nettoyage pour obtenir un format homogène.
Contrôler un format simple
Compter les séparateurs : si vous attendez 2 ; dans une ligne “a;b;c”, vous pouvez compter ; et refuser si le compteur n’est pas égal à 2.
Préparer des données avant un export
Remplacer des caractères interdits (ex. tabulations) par des espaces, afin de stabiliser l’écriture dans un fichier.
Limite utile à connaître
 INSPECT  est très efficace pour des substitutions simples. Pour des transformations complexes (formats très variables), vous combinez souvent  INSPECT  +  UNSTRING  +  STRING .

Compteur non réinitialisé
Si vous oubliez de remettre le compteur à zéro, les comptages s’additionnent. Solution :  MOVE 0 TO  compteur avant chaque  TALLYING .
Remplacement sur la mauvaise variable
Vous modifiez la valeur originale sans le vouloir. Solution : copiez d’abord dans une zone de travail (ex.  MOVE WS-ORIG TO WS-TEXTE ).
Affichage trompeur à cause des espaces
Les champs texte étant fixes, encadrez l’affichage : [champ] pour repérer les espaces de fin.
Expliquer
Dans une application de gestion, la qualité des données texte est cruciale.  INSPECT  est une solution simple et robuste pour contrôler et normaliser des champs avant des comparaisons, des éditions, ou des écritures en fichier.
Explorer : exercices
1) Comptez le nombre de lettres A dans une chaîne saisie par l’utilisateur.
2) Remplacez tous les points . par des virgules ,.
3) Comptez les espaces et refusez si la chaîne contient plus de 5 espaces.
4) Nettoyez une valeur “code-produit” en remplaçant - par rien (ou par un espace), puis affichez.

↑ Haut