Example 5: WHENEVER RAISE exception propagation
This example shows the usage of 
WHENEVER ... RAISE to propagate
a potential exception to the caller. First the program defines the foo function
as exception handler with WHENEVER ANY ERROR CALL foo, then it calls
the do_exception function, which instructs the runtime system to propagate a
potential error to the caller.  As result, the division by zero in line #13 will be
caught by the error handler defined in the MAIN block and call the
foo function:MAIN
    DEFINE i INTEGER
    WHENEVER ANY ERROR CALL foo 
    DISPLAY "Next function call will generate an exception"
    DISPLAY do_exception(100, 0)
    WHENEVER ANY ERROR STOP -- reset default handler for rest of program 
    ...
END MAIN
FUNCTION do_exception(a, b)
    DEFINE a, b INTEGER
    WHENEVER ANY ERROR RAISE
    RETURN a / b 
END FUNCTION
FUNCTION foo()
    DISPLAY "Exception caught, status: ", status
END FUNCTIONProgram output:
Next function call will generate an exception 
Exception caught, status:    -1202