Пример использования sy-index

Оператор do

Пример использования exit

Синтаксис оператора exit

Оператор exit

Пример оператора CASE

report ztx1005.

parameters f1 type i default 2.

case f1.

when 1. write / 'f1 = 1'.

when 2. write / 'f1 = 2'.

when 3. write / 'f1 = 3'.

when others. write / 'f1 is not 1, 2, or 3'.

endcase.

* The following code is equivalent to the above case statement

if f1 = 1. write / 'f1 = 1'.

elseif f1 = 2. write / 'f1 = 2'.

elseif f1 = 3. write / 'f1 = 3'.

else. write / 'f1 is not 1, 2, or 3'.

endif.

f1 = 2

f1 = 2

Оператор exit препятствует тому дальнейшему выполнению операторов.

exit.

report ztx1006.

write: / 'Hi'.

exit.

write: / 'There'.

Hi

exit может использоваться во многих ситуациях. В пределах цикла он прерывает дальнейшую обработку цикла в операторах loop, select, do, while.

Синтаксис оператора do:

do [ v1 times ] [ varying f1 from s-c1 next s-c2 [ varying f2 from s2-c1 next s2-c2... ] ].

---

[exit.]

---

enddo.

где

· v1 – переменная, литерал или постоянная.

· s – Field String, имеющая компоненты c1 и c2.

· f1 – переменная. Компоненты s должны быть такого типа, который может быть преобразован к типу данных и длине f1.

·... представляет любое число varying выражений.

· --- представляет любое число строк программы.

Особенности использования оператора:

· циклы do могут быть вложены неограниченное число раз.

· exit предотвращает дальнейшую обработку цикла и выходит немедленно из текущего цикла. Он не заканчивает программу, когда находится в цикле do. Управление передается следующему оператору после enddo.

· Вы можете создать бесконечный цикл do не задавая дополнений. В этом случае используйте exit внутри цикла, чтобы закончить его обработку.

· Изменение значения v1 внутри цикла не затрагивает обработку цикла.

Внутри цикла sy-index содержит текущее число итераций. При первом выполнений цикла sy-index будет 1. При втором sy-index будет 2, и так далее. После enddo, sy-index содержит значение, которое он имел прежде до начала цикла. Во вложенных циклах do, sy-index содержит итеративное число цикла, в котором он используется.

report ztx1007.

sy-index = 99.

write: / 'before loop, sy-index =', sy-index, / ''.

do 5 times.

write sy-index.

enddo.

write: / 'after loop, sy-index =', sy-index, / ''.

do 4 times.

write: / 'outer loop, sy-index =', sy-index.

do 3 times.

write: / ' inner loop, sy-index =', sy-index.

enddo.

enddo.

write: / ''. "new line

do 10 times.

write sy-index.

if sy-index = 3.

exit.

endif.

enddo.

before loop, sy-index = 99

1 2 3 4 5

after loop, sy-index = 99

outer loop, sy-index = 1

inner loop, sy-index = 1

inner loop, sy-index = 2

inner loop, sy-index = 3

outer loop, sy-index = 2

inner loop, sy-index = 1

inner loop, sy-index = 2

inner loop, sy-index = 3

outer loop, sy-index = 3

inner loop, sy-index = 1

inner loop, sy-index = 2

inner loop, sy-index = 3

outer loop, sy-index = 4

inner loop, sy-index = 1

inner loop, sy-index = 2

inner loop, sy-index = 3

1 2 3

Изменения, сделанные в значении sy-index, не затрагивают управление цикла. Например, если записать, do 10 times и во время самого первого прохода цикла установить значение sy-index 11, то оно будет сброшено в 1, затем увеличено к 2, и цикл продолжит обрабатываться, как будто Вы не изменяли его вообще.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: