CALLEXIT |
DEVELOPER |
Trail: PROIV Documentation > Developer > PROIV Developer > Developing Functions > Events and Logic > CALLEXIT
|
|
Purpose |
CALLEXIT returns control to calling function or cycle, after processing end-of-function logics. |
Syntax |
CALLEXIT({return code}) |
Operation |
return code is optional and can be of three value types: |
Remarks |
If a return code that is less than zero or greater than 999 is specified the code will be considered valid by PROIV. However, you may accidentally use a number that is reserved for the system. PROIV permits the user to use any number, and does not check to see if a predefined system number is being used. For best results stay within the above-defined limits. |
Example |
LSCALL(CompStat,RETURNCODE) If LSCALL(CompStat,#ReturnCode) is run and cycle CompStat issues a CALLEXIT(999) then #ReturnCode=999. If LSCALL(CompStat,#ReturnCode) is run and cycle CompStat issues a CALLEXIT without an argument then #ReturnCode=1003, provided a system error has not occurred. If LSCALL(CompStat,#ReturnCode) is run and cycle CompStat issues a CALLEXIT without an argument and a system error has occurred, then #ReturnCode will be a negative number. For example if a function call is issued and the function does not exist, the return code will be –660, which is the system value for an INVALID GLOBAL FUNCTION NAME error message. If LSCALL(CompStat,#ReturnCode) is issued, followed by LSCALL(StatStep,#ReturnCode), and the flow falls through other LSCALLs and the final one issues a CALLEXIT(123), control is immediately returned to the exit logic of cycle StatStep (skipping all the intermediate exit logics) with a return value of 123. When the exit logic of LS6 is complete, control is returned to LS5 with #ReturnCode=123, unless the value of #ReturnCode is modified by an addition CALLEXIT command during the exit logic of LS6 (in such cases the new value is returned to LS5, see the following example). If LSCALL (5,#ReturnCode) is issued, followed by LSCALL(6,#ReturnCode), and the flow falls through LS7, LS8, eventually to LS9, and LS9 issues a CALLEXIT(123), control is immediately returned to the exit logic of LS6 (skipping the intermediate exit logics of LS7 and LS8), with a return value set to 123. For this example, the exit logic of LS6 issues a CALLEXIT(456) command. When the exit logic is complete, control is returned to LS5 with #ReturnCode=456. Note that the new return value assigned in the exit logic of LS6 is the value that is returned to LS5. Also note that because a CALLEXIT command (from LS9) was in progress when the exit logic of LS6 issued its CALLEXIT command, a new CALLEXIT is not added to the command stack; the functional part of the new CALLEXIT command is totally ignored, only its argument is recognized. |
Topic ID: 520026