| |
|
| Format |
SWITCH
expression
...
CASE
range_1 ...
[ CASE range_n ...
]
[ BREAK ]
[ DEFAULT ...]
END
SWITCHWhere:
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
|