Apprenez les bases du COBOL et développez vos compétences en programmation legacy avec une approche moderne.
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.
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.
TALLYING met à jour un compteur en fonction d’un critère
(ex. “combien d’espaces dans la chaîne ?”).
REPLACING remplace un caractère (ou groupe de caractères) par un autre,
directement dans la variable.
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”.
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).
>>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.
INSPECT WS-TEXTE
TALLYING WS-COMPTE FOR ALL "X"
END-INSPECT
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
FUNCTION TRIM
ou une logique de nettoyage pour obtenir un format homogène.
; dans une ligne “a;b;c”, vous pouvez
compter ; et refuser si le compteur n’est pas égal à 2.
INSPECT est très efficace pour des substitutions simples.
Pour des transformations complexes (formats très variables), vous combinez souvent
INSPECT + UNSTRING + STRING .
MOVE 0 TO compteur avant chaque TALLYING .
MOVE WS-ORIG TO WS-TEXTE ).
[champ] pour repérer les espaces de fin.
INSPECT est une solution simple et robuste pour contrôler et normaliser
des champs avant des comparaisons, des éditions, ou des écritures en fichier.
A dans une chaîne saisie par l’utilisateur. . par des virgules ,. - par rien (ou par un espace), puis affichez.