8.5 L’INSTRUCTION INSPECT

Cette instruction (INSPECT) permet de compter le nombre de fois qu’une configuration particulière de caractères apparaît dans une zone de données et/ou de remplacer ces caractères par d’autres. Cette instruction ne s’applique pas aux variables avec index même à un niveau 01.

Format 1 :

Nom-de-donnée-1 est la zone que l’on désire inspecter. Elle doit être en USAGE DISPLAY.

TALLYING signifie que l’on désire compter le nombre de fois qu’une configuration de caractères désignée par nom-de-donnée-3 ou litéral-3 apparaît dans nom-de-donnée-1 et que le résultat du comptage soit placé dans nom-de-donnée-2.

ALL signifie que toutes les occurrences doivent être comptées. Les caractères déjà utilisés dans un comptage ne sont jamais réutilisés.
Exemple: INSPECT VARA TALLYING COMPTEUR FOR ALL "NN".
Si VARA contient “NNNNN+NNN” COMPTEUR contiendra après l’opération de comptage 3, car le 5ème et le 9ème N ne peuvent pas être regroupés avec ceux déjà utilisés.

LEADING signifie que seules les premières apparitions contiguës doivent être comptées.
Exemple: INSPECT VARB TALLYING COMPTEUR FOR LEADING "N".
Si VARB contient “NN+NNN+NNN” COMPTEUR contiendra 2 puisqu’il y a 2 N en tête.
L’opération VARE contiendra “00000000”.

CHARACTERS compte le nombre de caractères contenu dans nom-de-donnée-1.
Exemple: INSPECT VARC TALLYING COMPTEUR FOR CHARACTERS.
Si VARC contient “N&N+MOI+123” COMPTEUR contiendra 11.
Pour rendre l’usage de cette instruction plus partiel nous disposons des options BEFORE et AFTER.

BEFORE INITIAL : (nom-de-donnée-4 ou litéral-4) signifie que le comptage doit s’arrêter dès que la première apparition du ou des caractères désignés est rencontrée.
Exemple:
INSPECT VARD TALLYING COMPTEUR FOR CHARACTERS
BEFORE INITIAL "+".

Si VARD contient “N&N+MOI++123” COMPTEUR contiendra 3.

AFTER INITIAL est l’inverse du BEFORE, on compte les caractères qui se trouvent après nom-dedonnée-4 ou litéral-4.
Exemple:
INSPECT VARDAF TALLYING COMPTEUR FOR CHARACTERS
AFTER INITIAL "+".

Si VARD contient “N&N+MOI++123” COMPTEUR contiendra 8.

REPLACING : indique que nous voulons remplacer certains caractères par d’autres.

CHARACTERS, tous les caractères de nom-de-donnée-1 doivent être remplacés par le caractère désigné par nom-de-donnée-5 ou litéral-5.
Exemple: INSPECT VARE REPLACING CHARACTERS BY "0".
Si VARE contient “N&N+MOI3” après l’opération VARE contiendra “00000000”.

ALL indique que toutes les occurrences désignées par nom-de-donnée-7 ou litéral-7 doivent être remplacées par nom-de-donnée-8 ou litéral-8. Il n’y a jamais réutilisation de caractères déjà utilisés dans une occurrence préalable.
Exemple: INSPECT VARF REPLACING ALL "N" BY "0".
Si VARF contient “NN+NT23N” après l’opération VARF contiendra “00+0T230”.

LEADING indique que le remplacement s’arrêtera dés qu’un autre caractère que nom-de-donnée-7 est rencontré.

FIRST indique que le remplacement ne doit être effectué que pour la première apparition de nom-dedonnée-7.
Exemple: INSPECT VARG REPLACING FIRST "N" BY "0".
Si VARG contient “NN+NT23N” après l’opération VARG contiendra “0N+NT23N”.

Les options BEFORE et AFTER sont utilisées de la même manière que dans TALLYING.

Les clauses TALLYING et REPLACING peuvent être utilisées en même temps.
Exemple:
INSPECT VARTOT TALLYING COMPTE FOR CHARACTERS
BEFORE “+” REPLACING ALL “N” BY ““.
Si VARTOT contient “NN+NT23N” après l’opération VARTOT contiendra “+T23*” et COMPTE contiendra 2.

!!!!Le programmeur doit initialiser nom-de-donnée-2 à zéro car TALLYING additionne sans remettre à zéro.!!!!

Format 2:

Exemple:
INSPECT VAR11 CONVERTING "ABCD" TO "WXYZ"
AFTER QUOTE BEFORE "=".

Si VAR11 contient (AC”AEBDFBCD=AB”D) alors le résultat est (AC”WEXZFXYZ=AB”D)

INSPECT CHAINE CONVERTING MIN TO MAX
Avec MIN pic x(26) value ‘abc…yz’.
Et Max pic x(26) value ‘A Z’.

Remarque :
Inspect ZONE TALLYING CPT1 FOR ALL ‘A’
                                                         CPT2 FOR ALL ‘E’
                                                         CPT3 FOR ALL ‘I