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).
Votre micro-exercice
Faites ces 3 modifications :
- Comptez aussi le nombre de points “.” dans la phrase (une deuxième variable compteur).
- Remplacez tous les espaces par des underscores “_” et affichez le résultat.
- 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.