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

14

Тема 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.")