Документация по Clarion


CASE (структура условного выполнения)


CASE условие
OF выражение [TO выражение]
[OROF выражение ][TO выражение]
операторы
[ELSE]
операторы
.

условие Числовая или строковая переменная или выражение.
OF Операторы, следующие за OF выполняются тогда,
когда выражение, следующее за опцией OF, равно условию в операторе CASE. В структуре CASE может быть множество опций OF.
выражение Числовая или строковая переменная или выражение.
TO TO позволяет использовать в OF и OROF не одно, а целый диапазон значений. Операторы, следующие за OF или OROF выполняются если значение условного выражения попадает в указанный диапазон включительно. Выражение, стоящее после OF или OROF - это нижняя граница диапазона, а выражение после ТО - верхняя граница.


OROF Действует полностью аналогично OF. Для повышения читабельности, OROF можно ставить на отдельной строке от OF. С одним OF может быть связано несколько OROF.
ELSE Операторы, стоящие за ELSE выполняются если
все предыдущие условия OF и/или OROF не выполнены. ELSE обычно не требуется, но если все же использовано, то должно сбыть последней опцией в структуре CASE.
statements Любые разрешенные операторы языка Кларион.

Структура CASE избирательно выполняет операторы, основываясь на равенстве между условием и выражением или диапазоном выражений. Структуры CASE могут быть вложены в другие управляющие струтуры, и другие управляющие структуры могут быть вложены в структуры CASE.
Пример:
CASE FIELD() !Выбираем проц. редактирования поля
OF ?Name !Если поле - Имя
ERASE(?Address,?Zip) ! стереть Адрес по самый Индекс
GET(NameFile,NameKey) ! и считать запись
CASE Action !Выбираем Действие
OF 1 ! добавить запись - ее еще нет
IF NOT ERRORCODE() ! а вдруг ошибка файла?
ErrMsg = 'ALREADY ON FILE'
! иначе показать сообщ. об ошибке
DISPLAY(?Address,?Zip)
! показать адрес по самый индекс
SELECT(?Name) ! переВВести имя
. ! конец оператора IF
OF 2 OROF 3 ! изменить/удалить - запись уже есть
DISPLAY(?Address,?Zip)! показать адрес по самый индекс
. ! end case action
CASE SUB(Name,l,l) !Get first letter of name
OF 'A' TO 'M' !Process first half of alphabet
OROF 'a' TO 'm'
DO FirstHalf
OF 'N' TO 'Z' OROF 'n' TO 'z' DO SecondHalf
!Process second half of alphabet
. !End case sub(name
OF ?Address !If field is address
DO AddressVal ! call validation routine
. !End case fieldo



Содержание раздела