- •Тема 10 «Управляющие операторы»
- •Условный оператор if
- •Преобразование литералов во время сравнений
- •Использование elseif
- •Специальные операторы для символьных строк
- •Оператор выбора case
- •Оператор exit
- •Оператор do
- •Завершение Зацикливания
- •Использование дополнения varying
- •Изменение значений в пределах do ... Varying/enddo
- •Оператор while
- •Оператора continue
- •Оператор check (проверки)
- •Сравнение операторов exit, continue и check
- •Простые форматы оператора write
Оператор while
Синтаксис оператора while.
while exp [ vary f1 from s-c1 next s-c2 [ vary f2 from s2-c1 next s2-c2 ... ]
---
[ exit. ]
---
endwhile.
где:
exp – логическое выражение.
s – Field String, имеющая компоненты c1 и c2.
f1 – переменная. Компоненты s должны иметь возможность быть преобразованными к типу данных и длине f1.
... представляет любое число vary выражений.
--- представляет любое число строк программы.
Особенности использования:
while могут быть вложены бесконечное число раз и находиться внутри других циклов.
exit предотвращает дальнейшую обработку цикла и выходит немедленно из текущего цикла. Управлние передается оператору, следующему после endwhile.
Внутри цикла sy-index содержит текущее число итераций цикла. После endwhile, sy-index содержит значение, которое до входа в цикл. При использовании вложенных while sy-index содержит число итераций цикла, в котором он используется.
endwhile всегда сохраняет измененное значение f1.
Оператор while, содержащий логическое выражение и дополнение vary, вычисляет сначала логическое выражение.
while и do очень похожи.
* Пример программы с использованием while, которая помещает равное число черточек с обеих сторон строки.
report ztx1012.
data: l, "leading characters
t, "trailing characters
done. "done flag
parameters p(25) default ' Vendor Number'.
while done = ' ' "the expression is evaluated first
vary l from p+0 next p+1 "then vary assignments are performed
vary t from p+24 next p+23.
if l = ' ' and t = ' '.
l = t = '-'.
else.
done = 'X'.
endif.
endwhile.
write: / p.
----Vendor Number ----
Оператора continue
Оператор continue используется в пределах цикла. Он прерывает выполнение текущей итерации цикла и передает управление на начало цикла, тем самым инициируя следующую итерацию цикла.
Оператор continue переходит на конец цикла, игнорируя все операторы после него для текущего прохода цикла.
1 2 9 10
Синтаксис оператора continue. Он может использоваться в циклах, do, while, select, or loop. (Оператор loop рассмотрен в следующей главе).
[do/while/select/loop]
---
continue.
---
[enddo/endwhile/endselect/endloop]
где:
--- представляет любое число строк программы.
Особенности оператора:
continue может быть использован только в пределах цикла.
continue не имеет никаких дополнений.
* программа удаляет двойное двоеточие и символы наклонной черты во входной строке
*Пример использования continue
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