In contrast to the normal Natural error handling, where either an ON ERROR statement is used to intercept execution time errors or standard error message processing is performed and program execution is terminated, the enhanced error handling of Natural for DB2 provides an application controlled reaction to the encountered SQL error.
Two Natural subprograms, NDBERR and NDBNOERR, are provided to disable the usual Natural error handling and to check the encountered SQL error for the returned SQL code. This functionality replaces the "E" function of the DB2SERV interface, which is still provided but no longer documented.
For further information on Natural subprograms provided for DB2, see the section Natural Subprograms.
DEFINE DATA LOCAL 01 #SQLCODE (I4) 01 #SQLSTATE (A5) 01 #SQLCA (A136) 01 #DBMS (B1) END-DEFINE * * Ignore error from next statement * CALLNAT 'NDBNOERR' * * This SQL statement produces an SQL error * INSERT INTO SYSIBH-SYSTABLES (CREATOR, NAME, COLCOUNT) VALUES ('SAG', 'MYTABLE', '3') * * Investigate error * CALLNAT 'NDBERR' #SQLCODE #SQLSTATE #SQLCA #DBMS * IF #DBMS NE 2 /* not DB2 MOVE 3700 TO *ERROR-NR END-IF * DECIDE ON FIRST VALUE OF #SQLCODE VALUE 0, 100 /* successful execution IGNORE VALUE -803 /* duplicate row /* UPDATE existing record /* IGNORE NONE VALUE MOVE 3700 TO *ERROR-NR END-DECIDE * END