GOTO
Documentation | Blog | Demos | Support
GOTO
0 out of 5 stars
5 Stars | 0% | |
4 Stars | 0% | |
3 Stars | 0% | |
2 Stars | 0% | |
1 Stars | 0% |
Branches to another location in an application program.
Syntax
GOTO labelname
Parameters
labelname | An identifier that has been declared as a label in the procedure executing the GOTO command. |
Comments
GOTO can be used only to branch forward or backward within the same procedure.
To declare a label, type the labelname, followed by a colon, at the appropriate point in the program. The labelname must be the first word on the line where the label is declared. Labels cannot be declared in or before an exception handler.
Exception Handlers and the GOTO Command
The GOTO command can be used within an exception handler to resume execution at an arbitrary point in the procedure body.
In the following example, when a deadlock occurs, the DEADLOCK handler restarts a transaction by using a GOTO command:
procedure MyProc5(Parm1,Parm2)
on deadlock
goto RetryTransaction
endon
RetryTransaction:
transaction
… other commands …
endtransaction
endprocedure
Note that the GOTO command uses a label name. All labels in a procedure must be declared following the last exception handler declaration. A GOTO cannot be used to branch into an exception handler, and an GOTO command executed in an exception handler must branch out of the exception handler to some point within the body of the procedure.
Any command in a procedure could potentially trigger an exception handler. After an exception condition has been handled, a developer typically wants the application program either
- to retry the command that caused the exception, or
- to skip the command that caused the exception and go on to the next command
One way to implement these requirements is to label each command line, and using the GOTO command, conditionally branch out of the exception handler to the appropriate command line. Alternatively, two implicit GOTO labels can be provided to address these requirements: GOTO PREVIOUS and GOTO NEXT.
The PREVIOUS and NEXT labels are defined dynamically to identify, respectively, the command line that caused the exception and the next command line. Note that the GOTO NEXT has the same effect as ENDON.
The GOTO NEXT and GOTO PREVIOUS commands can be used only within the body of an exception handler.
Example
The GOTO command is used to break out of a WHILE loop when an exit condition has been met.
while Quantity > 0
:
while ProdCode is not $null
:
if Event.EventName = “F3” % This key has been defined
goto Exit % as the “exit” key.
endif
:
endwhile
:
endwhile
Exit:
:
The GOTO command is used in an exception handler to restart a transaction that has been aborted as a result of a deadlock condition.
procedure MyProc (Param1, Param2)
on deadlock
goto retry_transaction
endon
retry_transaction:
transaction
… other commands…
endtransaction
endprocedure
The sequence of events is
- a deadlock condition occurs while the application is attempting to execute a transaction
- the ON DEADLOCK exception handler is triggered
- the exception handler executes the GOTO command, that causes the software to skip the retry_transaction label
- the application continues to process the commands that follow the label, effectively restarting the execution of the transaction
See Also
0 out of 5 stars
5 Stars | 0% | |
4 Stars | 0% | |
3 Stars | 0% | |
2 Stars | 0% | |
1 Stars | 0% |