Команда DO CASE ... ENDCASE

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

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 07.01.2003