SQL/MP Programming Manual for COBOL

Error and Status Reporting
HP NonStop SQL/MP Programming Manual for COBOL529758-003
9-11
Using the WHENEVER Directive
Example 9-2. Using the WHENEVER Directive
WORKING-STORAGE SECTION.
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 IN-PARTS-REC.
10 IN-PARTNUM PIC 9(4).
10 IN-PRICE PIC 9(8)V99.
10 IN-PARTDESC PIC X(18).
EXEC SQL END DECLARE SECTION END-EXEC.
01 WARNING-SUM PIC S9(4) COMP.
EXEC SQL INCLUDE SQLCA END-EXEC.
...
PROCEDURE DIVISION.
100-OPENING.
EXEC SQL WHENEVER SQLWARNING PERFORM :910-WARNINGS END-EXEC.
EXEC SQL WHENEVER SQLERROR PERFORM :900-ERRORS END-EXEC.
...
300-WORK.
PERFORM 5000-BEGIN-TRANSACTION.
* Execute an SQL INSERT into the PARTS table.
MOVE 4120 TO IN-PARTNUM.
MOVE 60000.00 TO IN-PRICE.
MOVE "V8 DISK OPTION" TO IN-PARTDESC.
EXEC SQL INSERT INTO SALES.PARTS (PARTNUM, PRICE, PARTDESC)
VALUES (:IN-PARTNUM, :IN-PRICE, :IN-PARTDESC)
END-EXEC.
EXEC SQL DELETE FROM SALES.PARTS WHERE QTY_AVAILABLE = 0
END-EXEC.
PERFORM 6000-COMMIT-TRANSACTION.
STOP RUN.
900-ERRORS.
DISPLAY "SQLCODE = " SQLCODE.
EXEC SQL ROLLBACK WORK END-EXEC.
DISPLAY " TRANSACTION ABORTED. "
STOP RUN.
910-WARNINGS.
ADD 1 TO WARNING-SUM.
DISPLAY " WARNING: SQLCODE = " SQLCODE.
5000-BEGIN-TRANSACTION.
EXEC SQL BEGIN WORK END-EXEC.
6000-COMMIT-TRANSACTION.
EXEC SQL COMMIT WORK END-EXEC.
DISPLAY " COMMIT TRANSACTION".