report ztx1013.
parameters p(20) default 'c::\\\xxx\\yyy'.
data: c, "current character
n. "next character
do 19 times varying c from p+0 next p+1
varying n from p+1 next p+2.
if c na ':\'.
continue.
endif.
if c = n.
write: / 'duplicate', c, 'found', 'at position', sy-index.
endif.
enddo.
duplicate: found at position 2
duplicate \ found at position 4
duplicate \ found at position 5
duplicate \ found at position 10
Оператор check (проверки)
Оператор check используется в пределах цикла. Он может действовать как оператор continue, передавая управление на начало следующей итерации цикла. В отличие от continue он имеет логическое выражение. Если выражение - истина, оно ничего не делает. Если - ложно, то переходит на начало следующей итерации цикла.
1 2 9 10
Синтаксис для оператора check. Он может использоваться в циклах do, while, select, or loop. (Оператор loop рассмотрен в следующей главе).
[do/while/select/loop]
---
check exp.
---
[enddo/endwhile/endselect/endloop]
где:
- exp – логическое выражение.
- --- представляет любое число строк программы.
Пример использования check. check ведет себя как оператор continue, когда логическое выражение ложно. Если логическое выражение истино, он ничего не делает.
report ztx1014.
parameters p(20) default 'c::\\\xxx\\yyy'.
data: c, "current character
n. "next character
do 19 times varying c from p+0 next p+1
varying n from p+1 next p+2.
check c ca ':\'.
if c = n.
write: / 'duplicate', c, 'found', 'at position', sy-index.
endif.
enddo.
duplicate: found at position 2
duplicate \ found at position 4
duplicate \ found at position 5
duplicate \ found at position 10