       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(128).
       01 TABLE-NAME PICTURE X(128).
       01 TABLE-TYPE PICTURE X(20).

       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
               ORDER BY TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE 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.
