Выполняет первую группу команд, для которых заданное условное выражение имеет значение "истина" (.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 && Begins loop 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 && Ends loop WAIT WINDOW rpt_title NOWAIT |