ProvideX V8.20 > Language Reference > 2. Directives
329
SWITCH..CASE Directive
         Branch Control
Format
SWITCH expression CASE range_1 [...CASE range_n] [BREAK] [DEFAULT] ..END SWITCH
Where:
CASE range_1..
List of string or numeric values for comparison with expression,
CASE range_n
used to define a branch point.
BREAK
Optional directive defining immediate exit from the CASE structure.
DEFAULT
Optional directive defining a default branch point should no
matching CASE be found.
END SWITCH
Directive required to end branching sequence.
expression
String or numeric expression to test for branching to subsequent
CASE statements.
Description
The SWITCH directive defines an expression that will direct control to one of multiple
branch points. The results of the SWITCH expression is compared with values in each
CASE statement to determine a branch. If a match is found, execution continues with
statement(s) after the matching CASE (until the next BREAK or END SWITCH). If there are
no matches in any of the CASE statements, control falls through to the DEFAULT clause (if
present), and the statements that follow are executed automatically.
Note: Since branch controls are maintained on the stack, you must not break within
another stacked context. When ProvideX encounters EXITTO or RETURN within the
scope of a SWITCH, it removes the current FOR/GOSUB/WHILE/REPEAT entry from
the stack, but does not exit the SWITCH.
See Also
IF..THEN..ELSE Test Condition, p.156
Decision Structures, User's Guide
Example
00100 PROCESS_TAXCODE:
00110  LiquorTax=0,SalesTax=0,ServiceTax=0
00120  SWITCH UCS(TaxCode$)
00130  CASE "X","Z" ! two codes are tax exempt
00140  BREAK ! stop processing for case "X" here
00150  CASE "L" ! liquor pays all liquor,sales and service tax
00160  LiquorTax=cost*LiquorTaxRate
00170 ! no break here, logic falls through
00180  CASE "S" ! pays sales and service tax
00190  SalesTax=cost*SalesTaxRate
00200 ! no break here, logic falls through
00210  CASE "V" ! service tax
00220  ServiceTax=cost*ServiceTaxRate
00230  BREAK ! end processing for this case and any that fell through
00240  DEFAULT ! enter here if case not found
00250  MSGBOX "Unknown tax code","Error"
00260  END SWITCH
00270  TotalTax=LiquorTax+SalesTax+ServiceTax
00280  RETURN