Directives
SWITCH Branch Control
   
Format SWITCH expression
 
...
 
CASE range_1 ...
[ CASE range_n ... ]
[ BREAK ]
[ DEFAULT
...]
 
END SWITCH

Where:

CASE range_1
CASE range_n
List of string or numeric values for comparison with expression, 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 Required directive to end branching sequence.
expression String or numeric expression to control branching.
   
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 END SWITCH End Branching of a Program,
BREAK Immediate Exit of Loop
CASE Define Branch Points,
DEFAULT Branch If No Matching Case.
   
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