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

Expand imageЗамечания

DO CASE используется в тех случаях, когда требуется выполнить группу команд Visual FoxPro в зависимости от значения некоторого логического выражения. При выполнении DO CASE последовательно вычисляются логические выражения; их значения определяет, какой именно набор команд следует выполнить.

После команды DO CASE и предложения ENDCASE в одной строке с ними можно задавать комментарии. Эти комментарии игнорируются во время компиляции и выполнения программы.

Expand imageПример

В данном примере Visual FoxPro вычисляет каждое предложение CASE до тех пор, пока не найдет переменную MONTH в одном из списков. Соответствующая строка сохраняется в переменной rpt_title происходит выход из структуры DO CASE.

  CopyCode imageCopy Code
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

Expand imageСмотрите также