Выполняет первую группу команд, для которых заданное условное выражение имеет значение "истина" (.T.).
Синтаксис:
DO CASE CASE lExpression1 Commands [CASE lExpression2 Commands ... CASE lExpressionN Commands] [OTHERWISE Commands] ENDCASE
Параметры:
CASE lExpression1 Commands ...
Когда обнаруживается первое выражение CASE, имеющее значение "истина" (.T.), выполняется группа следующих за ним команд. Выполнение продолжается до тех пор, пока не встретится следующее предложение CASE или ENDCASE. После этого управление передается первой команде, следующей за ENDCASE.
Если выражение CASE имеет значение "ложь" (.F.), то следующие за ним команды, вплоть до следующего предложения CASE, игнорируются.
Выполняется только одна группа команд. Это будет первая группа команд, для которых выражение CASE имеет значение "истина" (.T.). Все последующие выражения CASE игнорируются, даже если они истинны (.T.) .
OTHERWISE Commands
Если все выражения CASE имеют значение "ложь" (.F.), то в зависимости от предложения OTHERWISE может выполняться альтернативный набор команд:
Если предложение OTHERWISE задано, выполняется группа следующих за ним команд, после чего управление передается первой команде, стоящей после ENDCASE.
Если предложение OTHERWISE опущено, выполнение продолжается с первой команды, следующей за предложением ENDCASE.
Комментарии:
Команда DO CASE используется в тех случаях, когда требуется выполнить группу команд Visual FoxPro в зависимости от значения некоторого логического выражения. При выполнении DO CASE последовательно вычисляются логические выражения; их значения определяют, какой именно набор команд следует выполнить.
После команды DO CASE и предложения ENDCASE в одной строке с ними можно задавать комментарии. Эти комментарии игнорируются во время компиляции и выполнения программы.
Пример:
* В данном примере Visual FoxPro вычисляет каждое предложение CASE до * тех пор, пока не найдет переменную MONTH в одном из списков. * Соответствующая строка сохраняется в переменной памяти rpt_title, и * происходит выход из структуры DO CASE. STORE CMONTH(DATE( )) TO month && The month today DO CASE You can place comments here CASE INLIST(month,'January','February','March') STORE 'First Quarter Earnings' TO rpt_title CASE INLIST(month,'April','May','June') STORE 'Second Quarter Earnings' TO rpt_title CASE INLIST(month,'July','August','September') STORE 'Third Quarter Earnings' TO rpt_title OTHERWISE STORE 'Fourth Quarter Earnings' TO rpt_title ENDCASE Or you can place comments here WAIT WINDOW rpt_title NOWAIT