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

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

Сравнение операторов exit, continue и check

Оператор

Эффект

exit

Оставляет текущий цикл.

continue

Безусловный переход до конца цикла.

check exp

Переходы на конца цикла, если exp - ложь.

Простые форматы оператора write

Оператор write определяет спецификацию позиции вывода и длины. Здесь рассмотрен только простой формат оператора write

Синтаксис простейшего оператора write:

write [/][P][(L)] v1.

где:

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

  • P – число, указывающее позицию на текущей строке вывода.

  • L – число, указывающее число байтов для вывода переменной v1.

  • / начинает новую строку.

  • /, P, и L используются без пробелов.

Примеры формата оператора write

Правильно

Неправильно

write /10(2) 'Hi'.

write / 10(2) 'Hi'.

 

write / 10 (2) 'Hi'.

 

write /10 (2) 'Hi'.

 

write /10( 2) 'Hi'.

 

write /10( 2 ) 'Hi'.

Write (2) 'Hi'.

write ( 2 ) 'Hi'.

 

write 'Hi'(2).

Write 10 'Hi'.

write 10'Hi'.

 

write 'Hi' 10.

*Примеры использования формата оператора write

report ztx1015.

data: f1 type p value 123,

f2 type p value -123.

write: / '....+....1....+....2....+....3....+....4',

/1 'Hi', 4 'There',

/1 'Hi', 3 'There',

/1 'Hi', 2 'There',

/1 'Hi', 1 'There',

/2 'Hi', 'There',

/2(1) 'Hi', 'There',

/2(3) 'Hi', 'There',

/2 'Hi', 10(3) 'There',

/ f1, f2,

/ f1, 4 f2,

/(3) f1,

/(2) f1.

....+....1....+....2....+....3....+....4

Hi There

HiThere

HThere

There

Hi There

H There

Hi There

Hi The

123 123-

123-

123

*3

Резюме

  • Операторы сравнения: if и case.

  • Case аналогичен оператору if/elseif, но сравнивает значения на равенство.

  • Для сравнения строковых данных используются специальные операторы. Системная переменная Sy-fdpos устанавливается после каждого сравнения.

  • Операторы цикла: do и while.

  • Системная переменная sy-index всегда содержит счетчик для текущего прохода цикла. После того, как цикл закончен, его значение сбрасывается к значению, которое имела эта системная переменная до начала цикла. Вы можете изменить sy-index, однако его значение будет сброшено при следующем проходе цикла.

  • Используйте другой сеанс и команду /o, чтобы закончить зацикливание.

  • Операторы exit, continue и check используются, чтобы изменить обработку цикла.

  • exit заканчивает обработку цикла и передает управление на первый оператор после цикла.

  • continue переходит на конец цикла.

  • check exp переходит на конец цикла, если exp ложно. Когда exp истино, check ничего не делает.

  • В операторе write позиция и длина могут быть заданы перед значением вывода. Спецификации /, P, и L используются без пробелов.