Exercice 23 : inspect

Micro-exercice

Objectif : utiliser INSPECT pour analyser un texte : compter des caractères et remplacer un caractère par un autre. C’est une commande très utile quand on “nettoie” une saisie, qu’on vérifie un format, ou qu’on prépare une donnée avant de l’enregistrer.

Ce que vous pratiquez

  • Compter combien de fois un caractère apparaît (TALLYING).
  • Remplacer un caractère par un autre (REPLACING).
  • Observer l’effet sur une variable texte.

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 l’alignement : rendu “vrai code”.

Exemple minimal COBOL Format fixe
Télécharger le code
       IDENTIFICATION DIVISION.
       PROGRAM-ID. EXO-INSPECT-23.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01  WS-TEXTE             PIC X(60) VALUE SPACES.
       01  WS-NB-TIRETS         PIC 99    VALUE 00.

       PROCEDURE DIVISION.
           DISPLAY "Saisissez une phrase avec des tirets (ex : A-B-C) : "
           ACCEPT WS-TEXTE

           MOVE 0 TO WS-NB-TIRETS

           INSPECT WS-TEXTE
               TALLYING WS-NB-TIRETS FOR ALL "-"

           DISPLAY "Nombre de tirets : " WS-NB-TIRETS

           INSPECT WS-TEXTE
               REPLACING ALL "-" BY "/"

           DISPLAY "Texte modifie : " WS-TEXTE
           STOP RUN.

Lecture simple

INSPECT “regarde” le contenu d’un champ texte. Dans la première partie, on demande à COBOL de compter tous les tirets avec TALLYING (compter). Dans la seconde partie, on remplace tous les tirets par des slashs avec REPLACING (remplacer).

À retenir : INSPECT est très efficace pour des opérations répétitives sur des caractères, sans écrire de boucle manuelle.

Votre micro-exercice

Faites ces 3 modifications :

  1. Comptez aussi le nombre de points “.” dans la phrase (une deuxième variable compteur).
  2. Remplacez tous les espaces par des underscores “_” et affichez le résultat.
  3. Testez une saisie sans tiret : le compteur doit rester à zéro.

Erreur fréquente à éviter

Oublier d’initialiser le compteur. Si vous relancez des traitements (ou si un programme évolue), un compteur non remis à zéro peut produire un résultat faux. D’où le MOVE 0 avant TALLYING.

Autre piège : croire que REPLACING crée une nouvelle variable. Non : il modifie le champ directement. Si vous voulez garder l’original, copiez-le d’abord dans un autre champ.

Conseil : utilisez INSPECT comme un outil de “nettoyage” : normaliser un séparateur, supprimer un caractère, compter des éléments avant validation.