Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 10 День 10 Управляющие операторы 2011.doc
Скачиваний:
7
Добавлен:
20.11.2019
Размер:
316.42 Кб
Скачать

Оператор 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