2011-12-27 2 views
0

J'essaie d'utiliser la clause INSPECT pour voir si un nom (PIC X) contient une certaine sous-chaîne.Utilisation d'une variable dans la clause INSPECT

Lorsque j'utilise

INSPECT NAME TALLYING COUNTER FOR ALL "lee" 

Le programme fonctionne comme prévu,

Quand je remplace le « lee » avec une variable la commande ne trouve rien. Est-ce que quelqu'un peut expliquer pourquoi cela se produit et ce que je peux faire à ce sujet?

Répondre

1

La correction consiste à spécifier explicitement la longueur.

... 
WORKING-STORAGE SECTION. 
    01 ZOEKTERM PIC X(40). 
    01 ZOEKTERM-LEN PIC S9(4) COMP. 
... 
MOVE "lee" TO ZOEKTERM 
MOVE 3 TO ZOEKTERM-LEN 
INSPECT NAAM TALLYING COUNTER FOR ALL ZOEKTERM(1:ZOEKTERM-LEN) 
+0

me devança par quelques secondes ... +1 – NealB

+0

Merci beaucoup, cela a fait l'affaire;) – geoffreydv

1

Le 'lee' littéral a trois caractères, tandis que le ZOEKTERM a une longueur de 40 caractères.

Cela affecte les sous-chaînes qu'ils peuvent correspondre.

+0

merci pour effacer les choses – geoffreydv

1

Bo Persson a raison. Si vous lisez le « cycle Comparaison » dans le documentation, vous verrez

Le premier est comparé à comparande un nombre égal de positions de caractères les plus à gauche contigus dans l'élément inspecté. Le comparateur ne fait correspondre les caractères inspectés que si les deux sont égaux, caractère-pour-caractère.

Questions connexes