- •Тема 10 «Управляющие операторы»
- •Условный оператор if
- •Преобразование литералов во время сравнений
- •Использование elseif
- •Специальные операторы для символьных строк
- •Оператор выбора case
- •Оператор exit
- •Оператор do
- •Завершение Зацикливания
- •Использование дополнения varying
- •Изменение значений в пределах do ... Varying/enddo
- •Оператор while
- •Оператора continue
- •Оператор check (проверки)
- •Сравнение операторов exit, continue и check
- •Простые форматы оператора write
Тема 10 «Управляющие операторы»
Основные вопросы:
Форматы операторов if, case, do, while
Управление программой, используя exit, continue, and check
Спецификации оператора write
Условный оператор if
В условном операторе if в ABAP/4 используются операторы отношения для проверки на равенство и неравенство, специальные операторы отношения для строковых сравнений и для разрядных (битовых) масок. (Разрядные сравнения не часто используются в ABAP/4 и мы их рассматривать не будем)
Синтаксис оператора if.
if [not] exp [ and [not] exp ] [ or [not] exp ].
---
[elseif exp.
---]
[else.
---]
endif.
где:
exp – логическое выражение, которое может быть истинным или ложным.
--- представляет любое число строк программы. В операторе допустимы пустые строки.
Особенности использования оператора if:
Каждому if должно соответствовать endif.
else и elseif являются дополнительными.
Для задания сложных условий могут использоваться круглые скобки, которые должны быть отделены пробелом.
Например, if ( f1 = f2 ) or ( f1 = f3 ) правильно,
if (f1 = f2) or (f1 = f3) является неправильным.
Переменные могут сравниваться с пробелом, или нулем, используя дополнение is initial. Например, if f1 is initial, будет истина, если f1 будет типом c и будет пробелом. Если f1 – любой другой тип данных, то выражение будет истинным, если f1 равен нулю.
Чтобы задать отрицание, not должен предшествовать логическому выражению. Например, if not f1 is initial, правильно. if f1 is not initial, является неправильным.
Переменные могут сравниваться со значением nulls используя дополнение, is null. Например, if f1 is null.
Логические операторы для операндов любого типа
(общие сравнения и их дополнительные формы).
Сравнение |
Альтернативная форма |
Когда результат True |
v1 = v2 |
EQ |
v1 равен v2 |
v1 <> v2 |
NE, >< |
v1 не равен v2 |
v1 > v2 |
GT |
v1 больше v2 |
v1 < v2 |
LT |
v1 меньше v2 |
v1 >= v2 |
GE, => |
v1 больше или равен v2 |
v1 <= v2 |
LE, =< |
v1 меньше или равен v2 |
v1 between v2 and v3 |
|
v1 находится между v2 и v3 (включительно) |
not v1 between v2 and v3 |
|
v1 находится за пределами диапазона v2 к v3 (включительно) |
v1 и v2 могут быть переменными, литералами, или Field Strings. В случае переменных или литералов, выполняется автоматическое преобразование, если тип данных или длина не соответствуют. Field Strings обрабатываются как переменные типа c.
Сравнение двух значений разных типов данных, приведет к их внутреннему автоматическому преобразованию согласно приоритету:
Если одно поле – тип f, другое преобразовывается в тип f.
Если одно поле – тип p, другое преобразовывается в тип p.
Если одно поле – тип i, другое преобразовывается в тип i.
Если одно поле – тип d, другое преобразовывается в тип d. Типы c и n не преобразовываются. Они сравниваются непосредственно.
Если одно поле – тип t, другое преобразовывается в тип t. Типы c и n не преобразовываются. Они сравниваются непосредственно.
Если одно поле – тип n, оба преобразовываются в тип p (в этом случае другое поле может только быть типом c или x).
В случае, если одно поле – тип c, и другое – тип, x. x преобразовывается в тип c.
Преобразования следуют тем же самым правилам, как и в операторе move. Преобразования типов полностью рассмотрены в документации ключевого слова ABAP/4 под заголовком "Операторы отношения для всех типов данных." ("Relational Operators for All Data Types.")