DO CASE ... ENDCASE Command

Executes the first set of commands whose conditional expression evaluates to true (.T.).

DO CASE
   CASE lExpression1 Commands
   [CASE lExpression2 Commands
   ...
   CASE lExpressionN Commands]
   [OTHERWISE Commands]
ENDCASE

Parameters

  • CASE lExpression1Commands ...
    When the first true (.T.) CASE expression is encountered, the set of commands following it is executed. Execution of the set of commands continues until the next CASE or ENDCASE is reached. Execution then resumes with the first command following ENDCASE.

    If a CASE expression is false (.F.), the set of commands following it up to the next CASE clause is ignored.

    Only one set of commands is executed. These are the first commands whose CASE expression evaluates to true (.T.). Any succeeding true (.T.) CASE expressions are ignored.

  • OTHERWISE Commands
    If all of the CASE expressions evaluate to false (.F.), OTHERWISE determines if an additional set of commands is executed.

    • If you include OTHERWISE, the commands following OTHERWISE are executed and execution skips to the first command following ENDCASE.
    • If you omit OTHERWISE, execution skips to the first command following ENDCASE.

Remarks

DO CASE is used to execute a set of Visual FoxPro commands based on the value of a logical expression. When DO CASE is executed, successive logical expressions are evaluated; the values of the expressions determine which set of commands is executed.

Comments can be placed after DO CASE and ENDCASE on the same line. The comments are ignored during program compilation and execution.

Example

In this example, Visual FoxPro evaluates each CASE clause until the MONTH variable is found in one of the lists. The appropriate string is stored to the variable rpt_title and the DO CASE structure is exited.

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

See Also

DO WHILE ... ENDDO | EXIT | FOR EACH ... ENDFOR | FOR ... ENDFOR | IF ... ENDIF | IIF( ) | SCAN ... ENDSCAN