Introduction | Language Structure | IB Statements | File System | Comet 32 Runtime | Index |
| Syntax: | ON numeric-argument GOTO statement-list |
| Discussion: |
The ON/GOTO statement transfers program control to a specific
statement-label based on the integer portion of the numeric-argument.
The numeric-argument may be a single element numeric variable, a numeric array element, a numeric expression, or a numeric function. The statement-list contains a minimum of three statement-labels, separated by commas. The integer portion of the numeric-argument determines which statement-label to use, based on a simple set of rules. If there are only three statement-labels, the rules are: Value of numeric-argument Branch to statement-label =========================================================== negative first statement-label zero second statement-label positive third statement-labelIf there are more than three labels, they represent positive integer values of the numeric-argument, as follows: Value of numeric-argument Branch to statement-label =========================================================== negative first statement-label zero second statement-label 1 third statement-label 2 fourth statement-label 3 fifth statement-label etc.Note: If the value of the numeric-argument plus 2 is greater than the number of branch labels in the statement-list, program control is transferred to the last branch label in the list. For example, if the statement-list includes six statement-labels, the sixth label represents the branch-to point for numeric-argument values of 4 and greater. See GOTO. |
| Example 1: |
ON X GOTO 100,200,300,400,500In the above example, the integer value of the numeric variable X is used to determine where program control will be transferred. For example, if X is less than zero, program control will be transferred to statement label 100. Likewise, if X equals 0, control will be transferred to statement label 200. If X equals 1, control will be transferred to statement label 300, and if X equals 2, control will be transferred to statement label 400. If X is greater than or equal to 3, program control will be transferred to the last statement-label on the list, in this case statement 500. |
| Example 2: |
ON CRLIMIT - ARTOTAL GOTO 100,100,200In this example, the numeric-argument is the expression: CRLIMIT - ARTOTALThe integer portion of this expression is used to determine where program control will be transferred. For example, if the expression yields a negative or zero value (indicating that ARTOTAL is greater or equal to zero), control will be transferred to statement-label 100. If the expression yields a value of 1 or more, program control will be transferred to statement-label 200. |