EXIT |
Terminate Subprogram and Return |
1. |
EXIT [ERR | err_val ] | |
2. |
EXIT WITH expression[$] |
err_val |
Numeric expression whose value will be returned as an error status to the program initiating the subprogram (e.g. via a CALL directive). |
expression[$] |
Value to be returned from a multi-line function, embedded I/O procedure, or OOP method logic. String or numeric expression. |
Use the EXIT directive in a subprogram to terminate the subprogram and return control to the initiating program.
Use EXIT WITH to pass a value back from a multi-line function, an embedded I/O procedure, or OOP method logic.
(EXIT WITH was added in PxPlus 2018.)
EXIT [ERR | err_val ]
You can have the subprogram return an error code value to the calling program by using EXIT ERR or by specifying the error value following the EXIT directive. Use an integer from 0 to 32767 for the error value. To have the calling program process an error value other than 0, use the ERR= option in the CALL directive (or use SETERR numeric expression). A value of 0 which generally indicates record busy and force an automatic retry will not when generated by an EXIT directive.
When you use EXIT in a compound statement, it must be the final directive:
9000 print "Subroutine done"; exit
See Example.
Terminate Procedure, Specify Value
EXIT WITH expression[$]
The EXIT WITH directive is similar to the RETURN expression[$] directive; however, it does not require the GOSUB/FOR stack to be pre-cleared. EXIT WITH serves a similar purpose in a multi-line function, embedded I/O, or OOP function procedure as it does in a typical subroutine; however, it also passes back a value, expression[$]. See Example below.
Multi-Line Function
When used in a multi-line definition of a user-defined function (DEF FN), the EXIT WITH directive terminates the function procedure and passes back a result. The specified value must match the data type of the function definition itself.
Embedded I/O Procedure
The EXIT WITH directive terminates an embedded I/O procedure and returns a value to the file handler, which it may use to determine the next operation.
OOP Method Logic
In Object Oriented Programming (OOP), the EXIT WITH directive terminates the method logic and passes back a result.
CALL Transfer to Subprogram
PERFORM Call Subprogram, Pass Variables
RETURN Return From a Subroutine
DEF FN Define Function
Example using EXIT:
! In subprogram "SUBPR"
TEST_EXIT:
seterr UNKNOWN_ERROR
enter TEST$
T=num(TEST$(5,6))
exit
UNKNOWN_ERROR:
exit err
Example using EXIT WITH:
def class "a"
function test()Do_Test
end def
Do_Test:
for i=1 to 3
for j=1 to 3
print "I=",i," J=",j
if j=2 \
then exit with 123
next
next
return 456