IDENTIFICATION DIVISION. PROGRAM-ID. EXAMPLE. * ** Example of X/Open CAE SQL (1992) compliant embedded program. ** ** The program tries to connect to the DEFAULT database as SYSADM ** with password SYSADM. ** It will then declare a cursor for the standard view ** INFORMATION_SCHEMA.TABLES, and fetch all records from it. * DATA DIVISION. WORKING-STORAGE SECTION. EXEC SQL BEGIN DECLARE SECTION END-EXEC. 01 SQLSTATE PICTURE X(5). 01 TABLE-SCHEMA PICTURE X(129). 01 TABLE-NAME PICTURE X(129). 01 TABLE-TYPE PICTURE X(21). 01 EXCEPTIONS PIC S9(10) COMP. 01 ERROR-MESSAGE PIC X(254). 01 LINE-NUMBER PIC S9(10) COMP. EXEC SQL END DECLARE SECTION END-EXEC. PROCEDURE DIVISION. MAIN SECTION. DO-IT. EXEC SQL DECLARE MYCURSOR CURSOR FOR SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE FROM INFORMATION_SCHEMA.TABLES END-EXEC. EXEC SQL WHENEVER SQLERROR GO TO ERROR-EXIT END-EXEC. * Connect to default database EXEC SQL CONNECT TO '' USER 'SYSADM' USING 'SYSADM' END-EXEC. EXEC SQL OPEN MYCURSOR END-EXEC. PERFORM FETCH-AND-DISPLAY UNTIL SQLSTATE = "02000". EXEC SQL CLOSE MYCURSOR END-EXEC. EXEC SQL COMMIT END-EXEC. EXEC SQL DISCONNECT ALL END-EXEC. STOP RUN. FETCH-AND-DISPLAY. EXEC SQL FETCH MYCURSOR INTO :TABLE-SCHEMA, :TABLE-NAME, :TABLE-TYPE END-EXEC. IF SQLSTATE NOT = "02000", DISPLAY TABLE-SCHEMA, TABLE-NAME, TABLE-TYPE. ERROR-EXIT. EXEC SQL WHENEVER SQLERROR CONTINUE END-EXEC. EXEC SQL GET DIAGNOSTICS :EXCEPTIONS = NUMBER END-EXEC. PERFORM DISPLAY-ERROR-LINE VARYING LINE-NUMBER FROM 1 BY 1 UNTIL LINE-NUMBER IS GREATER THAN EXCEPTIONS. EXEC SQL ROLLBACK END-EXEC. EXEC SQL DISCONNECT ALL END-EXEC. STOP RUN. DISPLAY-ERROR-LINE. EXEC SQL GET DIAGNOSTICS EXCEPTION :LINE-NUMBER :ERROR-MESSAGE = MESSAGE_TEXT END-EXEC. DISPLAY ERROR-MESSAGE. END PROGRAM EXAMPLE.