The WHENEVER ERROR statement
Since program statements that access the database may be expected to fail
        occasionally (the row is locked, etc.) the WHENEVER ERROR statement can be
        used to handle this type of error.
By default, when a runtime error occurs the program will stop. To prevent this happening when SQL
            statements that access the database fail, surround the SQL statement with
                WHENEVER ERROR statements, as in this example based on the
                fetch_cust function in the custquery.4gl
            program module:
01 IF (p_fetch_flag = 1) THEN
02   WHENEVER ERROR CONTINUE
03   FETCH NEXT cust_curs 
04     INTO mr_custrec.*
05   WHENEVER ERROR STOP
06   ...
WHENEVER ERROR statements are modular in scope, and generate additional code for
            exception handling when the module is compiled. This exception handling is valid until
            the end of the module or until a new WHENEVER ERROR instruction is
            encountered by the compiler.
When the example code is compiled, WHENEVER ERROR CONTINUE will generate code to
            prevent the program from stopping if the FETCH statement fails.
            Immediately after the FETCH statement, the WHENEVER ERROR
                STOP instruction will generate the code to reset the default behavior for
            the rest of the module.
You can write your own error function to handle SQL errors, and use the WHENEVER ERROR
                CALL <function-name> syntax to activate it.
            Runtime errors may be logged to an error log.