Условный оператор 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.")


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



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