Open topic with navigation
WTSupported in traditional Synergy on Windows
WNSupported in Synergy .NET on Windows
USupported on UNIX
VSupported on OpenVMS
xcall EXITE(error[, trap_flag])
The mnemonic or literal of the Synergy DBL error to generate. (n)
(optional) Specifies whether or not the error is trappable, as follows: (n)
0 = Error is not trappable.
1 = Error is trappable. (default)
The EXITE subroutine enables you to exit the current external subroutine or function with the specified Synergy DBL error. It also enables you to specify whether that error can be trapped.
If the value of trap_flag is one, the error can be trapped. However, a call must be made to ONERROR prior to the function or subroutine call that contains the EXITE, or the error will not be trapped. If the value is zero, the error cannot be trapped. See the Synergy Errors tab for a complete list of errors.
To generate a nontrappable error, set trap_flag to 0.
In traditional Synergy, a call to EXITE always transfers control to a prior routine and cannot cause a program to stop with a fatal error. In Synergy .NET, any TRY/CATCH in the current or prior routine, or any ONERROR in any prior routine, will catch an exception from EXITE.
The following hypothetical program checks whether a system is valid. If the system is not valid, it generates a false Synergy DBL error (without disclosing the actual location of the check) so the user will call his or her developer to have “problem” fixed.
main proc open(15, o, 'tt:') xcall chk_sys stop endmain subroutine chk_sys record serial, a80 external function security, ^val proc xcall serial(serial) if (%security(serial) .eq. %FALSE) then xcall exite($ERR_NOOPEN, 0) return endsubroutine
%DBR-E-NOOPEN, Channel has not been opened
%DBR-I-ATLINE, At line 4 in routine check_system (check_system.dbl)
main proc open(15, o, 'tt:') onerror errlbl xcall chk_sys offerror stop errlbl, offerror writes(15, "Security error") stop endmain subroutine chk_sys record serial, a80 external function security, ^val proc xcall serial(serial) if (%security(serial) .eq. %FALSE) then xcall exite($ERR_NOOPEN, 1) return endsubroutine