products/Sources/formale Sprachen/Isabelle/Tools/jEdit/dist/modes image not shown  

Quellcode-Bibliothek

© Kompilation durch diese Firma

[Weder Korrektheit noch Funktionsfähigkeit der Software werden zugesichert.]

Datei: CanDecodeTest.java   Sprache: XML

       IDENTIFICATION DIVISION.
       PROGRAM-ID.  DML135.
       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       SOURCE-COMPUTER.  xyz.
       OBJECT-COMPUTER.  xyz.
       DATA DIVISION.
       WORKING-STORAGE SECTION.


      * EMBEDDED COBOL (file "DML135.PCO")


      ****************************************************************
      *                                                              
      *                 COMMENT SECTION                              
      *                                                              
      * DATE 1994/8/30 EMBEDDED COBOL LANGUAGE                           
      * NIST SQL VALIDATION TEST SUITE V6.0                          
      *  DISCLAIMER:                                                  
      *  This program was written by employees of NIST to test SQL    
      *  implementations for conformance to the SQL standards.        
      *  NIST assumes no responsibility for any party's use of        
      *  this program.
      *                                                              
      * DML135.PCO                                                    
      * WRITTEN BY:  David W. Flater                                 
      * TRANSLATED AUTOMATICALLY FROM EMBEDDED C BY CHRIS SCHANZLE
      *                                                              
      * This program tests multiple TSQL features together.          
      *                                                              
      * REFERENCES                                                   
      *   FIPS PUB 127-2 14.1 Transitional SQL                       
      *   ANSI SQL-1992                                              
      *                                                              
      ****************************************************************



           EXEC SQL BEGIN DECLARE SECTION END-EXEC
       01  SQLCODE PIC S9(9) COMP.
       01  SQLSTATE PIC  X(5).
       01  uid PIC  X(18).
       01  uidx PIC  X(18).
       01  int1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  int2 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  tchar PIC  X(6).
       01  longst PIC  X(240).
       01  tname PIC  X(18).
       01  ttype PIC  X(10).
       01  cname PIC  X(18).
       01  indic1 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  flt1 PIC S9(4)V9(4) DISPLAY SIGN LEADING SEPARATE.
       01  emnum PIC  X(3).
       01  ename PIC  X(20).
       01  city PIC  X(15).
             EXEC SQL END DECLARE SECTION END-EXEC
       01  norm1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  norm2 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  ALPNUM-TABLE VALUE IS
               "01234ABCDEFGH56789IJKLMNOPQRSTUVWXYZ".
           05  ALPNUM PIC X OCCURS 36 TIMES.
       01  NORMSQ.
           05  NORMSQX PIC X OCCURS 5 TIMES.
       01  errcnt PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
      *date_time declaration 
       01  TO-DAY PIC 9(6).
       01  THE-TIME PIC 9(8).
       01  flag PIC S9(9) DISPLAY SIGN LEADING SEPARATE.

       01  SQL-COD PIC S9(9) DISPLAY SIGN LEADING SEPARATE.

       PROCEDURE DIVISION.
       P0.

             MOVE "FLATER " TO uid
             CALL "AUTHID" USING uid
             MOVE "not logged in, not" TO uidx
             EXEC SQL SELECT USER INTO :uidx FROM HU.ECCO END-EXEC
             MOVE SQLCODE TO SQL-COD
             EXEC SQL ROLLBACK WORK END-EXEC
             MOVE SQLCODE TO SQL-COD
             if (uid  NOT  =   uidx) then
               DISPLAY "ERROR: User ", uid " expected. User ", uidx "
      -    " connected"
            STOP RUN
             END-IF
             MOVE 0 TO errcnt

             DISPLAY
           "SQL Test Suite, V6.0, Embedded COBOL, dml135.pco"
             DISPLAY
           "59-byte ID"
             DISPLAY "TEd Version #"
      *date_time print 
           ACCEPT TO-DAY FROM DATE
           ACCEPT THE-TIME FROM TIME
           DISPLAY "Date run YYMMDD: " TO-DAY " at hhmmssff: " THE-TIME

      ******************** BEGIN TEST0692 *******************
             MOVE 1 TO flag

             DISPLAY " TEST0692 "
             DISPLAY "Many TSQL features #3: enhanced proj/works"
             DISPLAY "References:"
             DISPLAY " F# 1 -- Dynamic SQL"
             DISPLAY " F# 3 -- Basic schema manipulation"
             DISPLAY " F# 13 -- Grouped operations"
             DISPLAY " F# 15 -- Lowercase identifiers"
             DISPLAY " F# 16 -- PRIMARY KEY enhancement"
             DISPLAY " F# 19 -- Referential delete actions"
             DISPLAY " F# 22 -- Explicit defaults"
             DISPLAY " F# 24 -- Keyword relaxations"
             DISPLAY " - - - - - - - - - - - - - - - - - - -"

             COMPUTE SQLCODE = -1
             MOVE "xxxxx" TO SQLSTATE

             DISPLAY "CREATE TABLE ""Proj"" ("
             DISPLAY " PNUM CHAR(3) PRIMARY KEY,"
             DISPLAY " PNAME CHAR(20),"
             DISPLAY " PTYPE CHAR(6) DEFAULT 'Code',"
             DISPLAY " BUDGET DECIMAL(9) DEFAULT 10000,"
             DISPLAY " CITY CHAR(15) DEFAULT 'Berlin');"
             EXEC SQL CREATE TABLE "Proj" (
               PNUM     CHAR(3) PRIMARY KEY,
               PNAME    CHAR(20),
               PTYPE    CHAR(6)    DEFAULT 'Code',
               BUDGET   DECIMAL(9) DEFAULT 10000,
               CITY     CHAR(15)   DEFAULT 'Berlin'END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT;"
             EXEC SQL COMMIT END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "CREATE VIEW ""PTypes"" (""TYPE"", NUM) AS"
             DISPLAY " SELECT PTYPE, COUNT(*) FROM ""Proj"""
             DISPLAY " GROUP BY PTYPE;"
             EXEC SQL CREATE VIEW "PTypes" ("TYPE", NUM) AS
               SELECT PTYPE, COUNT(*) FROM "Proj"
               GROUP BY PTYPE END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT;"
             EXEC SQL COMMIT END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "CREATE VIEW PTYPES AS"
             DISPLAY " SELECT * FROM ""PTypes"""
             DISPLAY " WHERE NUM > 1;"
             EXEC SQL CREATE VIEW PTYPES AS
               SELECT * FROM "PTypes"
               WHERE NUM > 1 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT;"
             EXEC SQL COMMIT END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "CREATE TABLE ""Works"" ("
             DISPLAY " EMPNUM CHAR(3),"
             DISPLAY " PNUM CHAR(3)"
             DISPLAY " REFERENCES ""Proj"" ON DELETE CASCADE,"
             DISPLAY " HOURS DECIMAL(5),"
             DISPLAY " PRIMARY KEY (EMPNUM,PNUM));"
             EXEC SQL CREATE TABLE "Works" (
               EMPNUM   CHAR(3),
               PNUM     CHAR(3)
               REFERENCES "Proj" ON DELETE CASCADE,
               HOURS    DECIMAL(5),
               PRIMARY KEY (EMPNUM,PNUM)) END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT;"
             EXEC SQL COMMIT END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "CREATE VIEW ""PStaff"" (PNUM, NUM) AS"
             DISPLAY " SELECT PNUM, COUNT(*) FROM ""Works"""
             DISPLAY " WHERE HOURS >= 20"
             DISPLAY " GROUP BY PNUM;"
             EXEC SQL CREATE VIEW "PStaff" (PNUM, NUM) AS
               SELECT PNUM, COUNT(*) FROM "Works"
               WHERE HOURS >= 20
               GROUP BY PNUM END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT;"
             EXEC SQL COMMIT END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "INSERT INTO ""Proj"""
             DISPLAY " SELECT * FROM Hu.Proj;"
             EXEC SQL INSERT INTO "Proj"
               SELECT * FROM Hu.Proj END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "INSERT INTO ""Proj"" (PNUM, PNAME, BUDGET)"
             DISPLAY " VALUES ('P7', 'FROB', DEFAULT);"
             EXEC SQL INSERT INTO "Proj" (PNUM, PNAME, BUDGET)
               VALUES ('P7''FROB', DEFAULT) END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "INSERT INTO ""Proj"" (PNUM, PNAME, BUDGET)"
             DISPLAY " VALUES ('P8', 'BORF', 15000);"
             EXEC SQL INSERT INTO "Proj" (PNUM, PNAME, BUDGET)
               VALUES ('P8''BORF', 15000) END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "INSERT INTO ""Proj"" (PNUM, PNAME, PTYPE)"
             DISPLAY " VALUES ('P9', 'FORB', DEFAULT);"
             EXEC SQL INSERT INTO "Proj" (PNUM, PNAME, PTYPE)
               VALUES ('P9''FORB', DEFAULT) END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "INSERT INTO ""Proj"" VALUES"
             DISPLAY " ('P10', 'ROBF', 'Docs', 1000, 'Sofia');"
             EXEC SQL INSERT INTO "Proj" VALUES
               ('P10''ROBF''Docs', 1000, 'Sofia'END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "INSERT INTO ""Works"""
             DISPLAY " SELECT * FROM Hu.Works;"
             EXEC SQL INSERT INTO "Works"
               SELECT * FROM Hu.Works END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C13511 CURSOR FOR"
             DISPLAY " SELECT * FROM PTYPES ORDER BY NUM;"
             EXEC SQL DECLARE C13511 CURSOR FOR
               SELECT * FROM PTYPES ORDER BY NUM END-EXEC

             DISPLAY "OPEN C13511;"
             EXEC SQL OPEN C13511 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             MOVE "xxxxxx" TO tchar
             COMPUTE int1 = -1
             DISPLAY "FETCH C13511 INTO :tchar, :int1;"
             EXEC SQL FETCH C13511 INTO :tchar, :int1 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "tchar should be 'Test '; its value is '"
             tchar "'"
             DISPLAY "int1 should be 2; its value is ", int1
             if (tchar  NOT  =   "Test "  OR  int1  NOT =  2) then
               MOVE 0 TO flag
             END-IF

             MOVE "xxxxxx" TO tchar
             COMPUTE int1 = -1
             DISPLAY "FETCH C13511 INTO :tchar, :int1;"
             EXEC SQL FETCH C13511 INTO :tchar, :int1 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "tchar should be 'Design'; its value is '"
             tchar "'"
             DISPLAY "int1 should be 3; its value is ", int1
             if (tchar  NOT  =   "Design"  OR  int1  NOT =  3) then
               MOVE 0 TO flag
             END-IF

             MOVE "xxxxxx" TO tchar
             COMPUTE int1 = -1
             DISPLAY "FETCH C13511 INTO :tchar, :int1;"
             EXEC SQL FETCH C13511 INTO :tchar, :int1 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "tchar should be 'Code '; its value is '"
             tchar "'"
             DISPLAY "int1 should be 4; its value is ", int1
             if (tchar  NOT  =   "Code "  OR  int1  NOT =  4) then
               MOVE 0 TO flag
             END-IF

             DISPLAY "FETCH C13511 INTO :tchar, :int1;"
             EXEC SQL FETCH C13511 INTO :tchar, :int1 END-EXEC
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be 100; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be 02000; its value is ", SQLSTATE
           PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT =  100  OR  NORMSQ  NOT  =   "02000"then
               MOVE 0 TO flag
             END-IF
             if (NORMSQ   =   "02000"  AND  NORMSQ  NOT  =   SQLSTATE)
             then
               DISPLAY "Valid implementation-defined SQLSTATE accepted."
             END-IF
             DISPLAY  " "

             DISPLAY "CLOSE C13511;"
             EXEC SQL CLOSE C13511 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *Grouped dynamic cursor over a grouped view 

             EXEC SQL DELETE FROM CONCATBUF END-EXEC
             MOVE SQLCODE TO SQL-COD
             EXEC SQL INSERT INTO CONCATBUF VALUES (
               'SELECT NUM, COUNT(*) FROM "PStaff"' ||
               ' GROUP BY NUM ORDER BY NUM'
               ) END-EXEC
             MOVE SQLCODE TO SQL-COD
             EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF END-EXEC
             MOVE SQLCODE TO SQL-COD

             DISPLAY "longst=""", longst """"

             DISPLAY "PREPARE S13512 FROM :longst;"
             EXEC SQL PREPARE S13512 FROM :longst END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C13512 CURSOR FOR S13512;"
             EXEC SQL DECLARE C13512 CURSOR FOR S13512 END-EXEC

             DISPLAY "OPEN C13512;"
             EXEC SQL OPEN C13512 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             DISPLAY "FETCH C13512 INTO :int1, :int2;"
             EXEC SQL FETCH C13512 INTO :int1, :int2 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 1; its value is ", int1
             DISPLAY "int2 should be 2; its value is ", int2
             if (int1  NOT =  1  OR  int2  NOT =  2) then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             DISPLAY "FETCH C13512 INTO :int1, :int2;"
             EXEC SQL FETCH C13512 INTO :int1, :int2 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 2; its value is ", int1
             DISPLAY "int2 should be 2; its value is ", int2
             if (int1  NOT =  2  OR  int2  NOT =  2) then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             DISPLAY "FETCH C13512 INTO :int1, :int2;"
             EXEC SQL FETCH C13512 INTO :int1, :int2 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 4; its value is ", int1
             DISPLAY "int2 should be 1; its value is ", int2
             if (int1  NOT =  4  OR  int2  NOT =  1) then
               MOVE 0 TO flag
             END-IF

             DISPLAY "FETCH C13512 INTO :int1, :int2;"
             EXEC SQL FETCH C13512 INTO :int1, :int2 END-EXEC
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be 100; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be 02000; its value is ", SQLSTATE
           PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT =  100  OR  NORMSQ  NOT  =   "02000"then
               MOVE 0 TO flag
             END-IF
             if (NORMSQ   =   "02000"  AND  NORMSQ  NOT  =   SQLSTATE)
             then
               DISPLAY "Valid implementation-defined SQLSTATE accepted."
             END-IF
             DISPLAY  " "

             DISPLAY "CLOSE C13512;"
             EXEC SQL CLOSE C13512 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *Cascaded delete -- ditch all that costly Design work 

             DISPLAY "DELETE FROM ""Proj"" WHERE PTYPE = 'Design';"
             EXEC SQL DELETE FROM "Proj" WHERE PTYPE = 'Design' 
             END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "OPEN C13511;"
             EXEC SQL OPEN C13511 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             MOVE "xxxxxx" TO tchar
             COMPUTE int1 = -1
             DISPLAY "FETCH C13511 INTO :tchar, :int1;"
             EXEC SQL FETCH C13511 INTO :tchar, :int1 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "tchar should be 'Test '; its value is '"
             tchar "'"
             DISPLAY "int1 should be 2; its value is ", int1
             if (tchar  NOT  =   "Test "  OR  int1  NOT =  2) then
               MOVE 0 TO flag
             END-IF

             MOVE "xxxxxx" TO tchar
             COMPUTE int1 = -1
             DISPLAY "FETCH C13511 INTO :tchar, :int1;"
             EXEC SQL FETCH C13511 INTO :tchar, :int1 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "tchar should be 'Code '; its value is '"
             tchar "'"
             DISPLAY "int1 should be 4; its value is ", int1
             if (tchar  NOT  =   "Code "  OR  int1  NOT =  4) then
               MOVE 0 TO flag
             END-IF

             DISPLAY "FETCH C13511 INTO :tchar, :int1;"
             EXEC SQL FETCH C13511 INTO :tchar, :int1 END-EXEC
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be 100; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be 02000; its value is ", SQLSTATE
           PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT =  100  OR  NORMSQ  NOT  =   "02000"then
               MOVE 0 TO flag
             END-IF
             if (NORMSQ   =   "02000"  AND  NORMSQ  NOT  =   SQLSTATE)
             then
               DISPLAY "Valid implementation-defined SQLSTATE accepted."
             END-IF
             DISPLAY  " "

             DISPLAY "CLOSE C13511;"
             EXEC SQL CLOSE C13511 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "OPEN C13512;"
             EXEC SQL OPEN C13512 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             DISPLAY "FETCH C13512 INTO :int1, :int2;"
             EXEC SQL FETCH C13512 INTO :int1, :int2 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 1; its value is ", int1
             DISPLAY "int2 should be 2; its value is ", int2
             if (int1  NOT =  1  OR  int2  NOT =  2) then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             DISPLAY "FETCH C13512 INTO :int1, :int2;"
             EXEC SQL FETCH C13512 INTO :int1, :int2 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 4; its value is ", int1
             DISPLAY "int2 should be 1; its value is ", int2
             if (int1  NOT =  4  OR  int2  NOT =  1) then
               MOVE 0 TO flag
             END-IF

             DISPLAY "FETCH C13512 INTO :int1, :int2;"
             EXEC SQL FETCH C13512 INTO :int1, :int2 END-EXEC
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be 100; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be 02000; its value is ", SQLSTATE
           PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT =  100  OR  NORMSQ  NOT  =   "02000"then
               MOVE 0 TO flag
             END-IF
             if (NORMSQ   =   "02000"  AND  NORMSQ  NOT  =   SQLSTATE)
             then
               DISPLAY "Valid implementation-defined SQLSTATE accepted."
             END-IF
             DISPLAY  " "

             DISPLAY "CLOSE C13512;"
             EXEC SQL CLOSE C13512 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "ROLLBACK;"
             EXEC SQL ROLLBACK END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *TEd hook ababababa 
             DISPLAY "DROP TABLE ""Proj"" CASCADE;"
             EXEC SQL DROP TABLE "Proj" CASCADE END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT;"
             EXEC SQL COMMIT END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DROP TABLE ""Works"" CASCADE;"
             EXEC SQL DROP TABLE "Works" CASCADE END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT;"
             EXEC SQL COMMIT END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "
      *TEd hook zyzyzyzyzyz 

             if ( flag  =  1 ) then
               DISPLAY " *** pass *** "
               EXEC SQL INSERT INTO HU.TESTREPORT
                 VALUES('0692','pass','PCO'END-EXEC
               MOVE SQLCODE TO SQL-COD
             else
               DISPLAY " dml135.pco *** fail *** "
               EXEC SQL INSERT INTO HU.TESTREPORT
                 VALUES('0692','fail','PCO'END-EXEC
               MOVE SQLCODE TO SQL-COD
               COMPUTE errcnt = errcnt + 1
             END-IF

             DISPLAY "==============================================="

             EXEC SQL COMMIT WORK END-EXEC
             MOVE SQLCODE TO SQL-COD
      ******************** END TEST0692 ********************
      ******************** BEGIN TEST0693 *******************
             MOVE 1 TO flag

             DISPLAY " TEST0693 "
             DISPLAY "Many TSQL features #4: enhanced INFO_SCHEM"
             DISPLAY "References:"
             DISPLAY " F# 2 -- Basic information schema"
             DISPLAY " F# 3 -- Basic schema manipulation"
             DISPLAY " F# 4 -- Joined table"
             DISPLAY " F# 5 -- DATETIME data types"
             DISPLAY " F# 11 -- Transaction isolation"
             DISPLAY " F# 15 -- Lowercase identifiers"
             DISPLAY " F# 22 -- Explicit defaults"
             DISPLAY " F# 24 -- Keyword relaxations"
             DISPLAY " - - - - - - - - - - - - - - - - - - -"

             COMPUTE SQLCODE = -1
             MOVE "xxxxx" TO SQLSTATE

      *The Information Schema is defined to give a view to only the 
      *current catalog, so it is not necessary to join across       
      *TABLE_CAT.                                                   

             DISPLAY "CREATE TABLE CreationTimes ("
             DISPLAY " TABLE_SCHEM CHAR (50),"
             DISPLAY " TABLE_NAME CHAR (50),"
             DISPLAY " CREATE_TIME TIMESTAMP);"
             EXEC SQL CREATE TABLE CreationTimes (
               TABLE_SCHEM CHAR (50),
               TABLE_NAME  CHAR (50),
               CREATE_TIME TIMESTAMP) END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT;"
             EXEC SQL COMMIT END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "CREATE VIEW TablesColumns AS"
             DISPLAY " SELECT TABLE_SCHEM, TABLE_NAME,"
             DISPLAY " TABLE_TYPE, COLUMN_NAME, CREATE_TIME"
             DISPLAY " FROM Info_Schem.Tables"
             DISPLAY " NATURAL JOIN Info_Schem.Columns"
             DISPLAY " NATURAL JOIN CreationTimes;"
             EXEC SQL CREATE VIEW TablesColumns AS
               SELECT TABLE_SCHEM, TABLE_NAME,
               TABLE_TYPE, COLUMN_NAME, CREATE_TIME
               FROM Info_Schem.Tables
               NATURAL JOIN Info_Schem.Columns
               NATURAL JOIN CreationTimes END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT;"
             EXEC SQL COMMIT END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *Populate CreationTimes with data for all tables we wish to 
      *see -- the natural join will eliminate all others!         

             DISPLAY "INSERT INTO CREATIONTIMES VALUES"
             DISPLAY " ('FLATER', 'CREATIONTIMES',"
             DISPLAY " TIMESTAMP '1994-09-01 16:15:00');"
             EXEC SQL INSERT INTO CREATIONTIMES VALUES
               ('FLATER''CREATIONTIMES',
               TIMESTAMP '1994-09-01 16:15:00'END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "INSERT INTO CREATIONTIMES VALUES"
             DISPLAY " ('FLATER', 'TABLESCOLUMNS', DEFAULT);"
             EXEC SQL INSERT INTO CREATIONTIMES VALUES
               ('FLATER''TABLESCOLUMNS', DEFAULT) END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT;"
             EXEC SQL COMMIT END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "SET TRANSACTION READ ONLY;"
             EXEC SQL SET TRANSACTION READ ONLY END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C13521 CURSOR FOR"
             DISPLAY " SELECT TABLE_NAME, TABLE_TYPE, COLUMN_NAME,"
             DISPLAY " EXTRACT (HOUR FROM CREATE_TIME)"
             DISPLAY " FROM TABLESCOLUMNS"
             DISPLAY " ORDER BY TABLE_NAME, COLUMN_NAME"
             DISPLAY " FOR READ ONLY;"
             EXEC SQL DECLARE C13521 CURSOR FOR
               SELECT TABLE_NAME, TABLE_TYPE, COLUMN_NAME,
               EXTRACT (HOUR FROM CREATE_TIME)
               FROM TABLESCOLUMNS
               ORDER BY TABLE_NAME, COLUMN_NAME
               FOR READ ONLY END-EXEC

             DISPLAY "OPEN C13521;"
             EXEC SQL OPEN C13521 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             MOVE 99 TO int1
             MOVE 99 TO indic1
             MOVE "xxxxxxxxxxxxxxxxxx" TO tname
             MOVE "xxxxxxxxxx" TO ttype
             MOVE "xxxxxxxxxxxxxxxxxx" TO cname
             DISPLAY "FETCH C13521"
             DISPLAY " INTO :tname, :ttype, :cname, :int1:indic1;"
             EXEC SQL FETCH C13521
               INTO :tname, :ttype, :cname, :int1:indic1 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "tname should be 'CREATIONTIMES '; its value is
      -    " '", tname "'"
             DISPLAY "ttype should be 'BASE TABLE'; its value is '",
             ttype "'"
             DISPLAY "cname should be 'CREATE_TIME '; its value is
      -    " '", cname "'"
             DISPLAY "int1 should be 16; its value is ", int1
             DISPLAY "indic1 should be 0; its value is ", indic1
             if (tname  NOT  =   "CREATIONTIMES "then
               MOVE 0 TO flag
             END-IF
             if (ttype  NOT  =   "BASE TABLE"then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "CREATE_TIME "then
               MOVE 0 TO flag
             END-IF
             if (int1  NOT =  16  OR  indic1  NOT =  0) then
               MOVE 0 TO flag
             END-IF

             MOVE 99 TO int1
             MOVE 99 TO indic1
             MOVE "xxxxxxxxxxxxxxxxxx" TO tname
             MOVE "xxxxxxxxxx" TO ttype
             MOVE "xxxxxxxxxxxxxxxxxx" TO cname
             DISPLAY "FETCH C13521"
             DISPLAY " INTO :tname, :ttype, :cname, :int1:indic1;"
             EXEC SQL FETCH C13521
               INTO :tname, :ttype, :cname, :int1:indic1 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "tname should be 'CREATIONTIMES '; its value is
      -    " '", tname "'"
             DISPLAY "ttype should be 'BASE TABLE'; its value is '",
             ttype "'"
             DISPLAY "cname should be 'TABLE_NAME '; its value is
      -    " '", cname "'"
             DISPLAY "int1 should be 16; its value is ", int1
             DISPLAY "indic1 should be 0; its value is ", indic1
             if (tname  NOT  =   "CREATIONTIMES "then
               MOVE 0 TO flag
             END-IF
             if (ttype  NOT  =   "BASE TABLE"then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "TABLE_NAME "then
               MOVE 0 TO flag
             END-IF
             if (int1  NOT =  16  OR  indic1  NOT =  0) then
               MOVE 0 TO flag
             END-IF

             MOVE 99 TO int1
             MOVE 99 TO indic1
             MOVE "xxxxxxxxxxxxxxxxxx" TO tname
             MOVE "xxxxxxxxxx" TO ttype
             MOVE "xxxxxxxxxxxxxxxxxx" TO cname
             DISPLAY "FETCH C13521"
             DISPLAY " INTO :tname, :ttype, :cname, :int1:indic1;"
             EXEC SQL FETCH C13521
               INTO :tname, :ttype, :cname, :int1:indic1 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "tname should be 'CREATIONTIMES '; its value is
      -    " '", tname "'"
             DISPLAY "ttype should be 'BASE TABLE'; its value is '",
             ttype "'"
             DISPLAY "cname should be 'TABLE_SCHEM '; its value is
      -    " '", cname "'"
             DISPLAY "int1 should be 16; its value is ", int1
             DISPLAY "indic1 should be 0; its value is ", indic1
             if (tname  NOT  =   "CREATIONTIMES "then
               MOVE 0 TO flag
             END-IF
             if (ttype  NOT  =   "BASE TABLE"then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "TABLE_SCHEM "then
               MOVE 0 TO flag
             END-IF
             if (int1  NOT =  16  OR  indic1  NOT =  0) then
               MOVE 0 TO flag
             END-IF

             MOVE 99 TO indic1
             MOVE "xxxxxxxxxxxxxxxxxx" TO tname
             MOVE "xxxxxxxxxx" TO ttype
             MOVE "xxxxxxxxxxxxxxxxxx" TO cname
             DISPLAY "FETCH C13521"
             DISPLAY " INTO :tname, :ttype, :cname, :int1:indic1;"
             EXEC SQL FETCH C13521
               INTO :tname, :ttype, :cname, :int1:indic1 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "tname should be 'TABLESCOLUMNS '; its value is
      -    " '", tname "'"
             DISPLAY "ttype should be 'VIEW '; its value is '",
             ttype "'"
             DISPLAY "cname should be 'COLUMN_NAME '; its value is
      -    " '", cname "'"
             DISPLAY "indic1 should be -1; its value is ", indic1
             if (tname  NOT  =   "TABLESCOLUMNS "then
               MOVE 0 TO flag
             END-IF
             if (ttype  NOT  =   "VIEW "then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "COLUMN_NAME "then
               MOVE 0 TO flag
             END-IF
             if (indic1  NOT =  -1) then
               MOVE 0 TO flag
             END-IF

             MOVE 99 TO indic1
             MOVE "xxxxxxxxxxxxxxxxxx" TO tname
             MOVE "xxxxxxxxxx" TO ttype
             MOVE "xxxxxxxxxxxxxxxxxx" TO cname
             DISPLAY "FETCH C13521"
             DISPLAY " INTO :tname, :ttype, :cname, :int1:indic1;"
             EXEC SQL FETCH C13521
               INTO :tname, :ttype, :cname, :int1:indic1 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "tname should be 'TABLESCOLUMNS '; its value is
      -    " '", tname "'"
             DISPLAY "ttype should be 'VIEW '; its value is '",
             ttype "'"
             DISPLAY "cname should be 'CREATE_TIME '; its value is
      -    " '", cname "'"
             DISPLAY "indic1 should be -1; its value is ", indic1
             if (tname  NOT  =   "TABLESCOLUMNS "then
               MOVE 0 TO flag
             END-IF
             if (ttype  NOT  =   "VIEW "then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "CREATE_TIME "then
               MOVE 0 TO flag
             END-IF
             if (indic1  NOT =  -1) then
               MOVE 0 TO flag
             END-IF

             MOVE 99 TO indic1
             MOVE "xxxxxxxxxxxxxxxxxx" TO tname
             MOVE "xxxxxxxxxx" TO ttype
             MOVE "xxxxxxxxxxxxxxxxxx" TO cname
             DISPLAY "FETCH C13521"
             DISPLAY " INTO :tname, :ttype, :cname, :int1:indic1;"
             EXEC SQL FETCH C13521
               INTO :tname, :ttype, :cname, :int1:indic1 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "tname should be 'TABLESCOLUMNS '; its value is
      -    " '", tname "'"
             DISPLAY "ttype should be 'VIEW '; its value is '",
             ttype "'"
             DISPLAY "cname should be 'TABLE_NAME '; its value is
      -    " '", cname "'"
             DISPLAY "indic1 should be -1; its value is ", indic1
             if (tname  NOT  =   "TABLESCOLUMNS "then
               MOVE 0 TO flag
             END-IF
             if (ttype  NOT  =   "VIEW "then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "TABLE_NAME "then
               MOVE 0 TO flag
             END-IF
             if (indic1  NOT =  -1) then
               MOVE 0 TO flag
             END-IF

             MOVE 99 TO indic1
             MOVE "xxxxxxxxxxxxxxxxxx" TO tname
             MOVE "xxxxxxxxxx" TO ttype
             MOVE "xxxxxxxxxxxxxxxxxx" TO cname
             DISPLAY "FETCH C13521"
             DISPLAY " INTO :tname, :ttype, :cname, :int1:indic1;"
             EXEC SQL FETCH C13521
               INTO :tname, :ttype, :cname, :int1:indic1 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "tname should be 'TABLESCOLUMNS '; its value is
      -    " '", tname "'"
             DISPLAY "ttype should be 'VIEW '; its value is '",
             ttype "'"
             DISPLAY "cname should be 'TABLE_SCHEM '; its value is
      -    " '", cname "'"
             DISPLAY "indic1 should be -1; its value is ", indic1
             if (tname  NOT  =   "TABLESCOLUMNS "then
               MOVE 0 TO flag
             END-IF
             if (ttype  NOT  =   "VIEW "then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "TABLE_SCHEM "then
               MOVE 0 TO flag
             END-IF
             if (indic1  NOT =  -1) then
               MOVE 0 TO flag
             END-IF

             MOVE 99 TO indic1
             MOVE "xxxxxxxxxxxxxxxxxx" TO tname
             MOVE "xxxxxxxxxx" TO ttype
             MOVE "xxxxxxxxxxxxxxxxxx" TO cname
             DISPLAY "FETCH C13521"
             DISPLAY " INTO :tname, :ttype, :cname, :int1:indic1;"
             EXEC SQL FETCH C13521
               INTO :tname, :ttype, :cname, :int1:indic1 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "tname should be 'TABLESCOLUMNS '; its value is
      -    " '", tname "'"
             DISPLAY "ttype should be 'VIEW '; its value is '",
             ttype "'"
             DISPLAY "cname should be 'TABLE_TYPE '; its value is
      -    " '", cname "'"
             DISPLAY "indic1 should be -1; its value is ", indic1
             if (tname  NOT  =   "TABLESCOLUMNS "then
               MOVE 0 TO flag
             END-IF
             if (ttype  NOT  =   "VIEW "then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "TABLE_TYPE "then
               MOVE 0 TO flag
             END-IF
             if (indic1  NOT =  -1) then
               MOVE 0 TO flag
             END-IF

             DISPLAY "FETCH C13521"
             DISPLAY " INTO :tname, :ttype, :cname, :int1:indic1;"
             EXEC SQL FETCH C13521
               INTO :tname, :ttype, :cname, :int1:indic1 END-EXEC
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be 100; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be 02000; its value is ", SQLSTATE
           PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT =  100  OR  NORMSQ  NOT  =   "02000"then
               MOVE 0 TO flag
             END-IF
             if (NORMSQ   =   "02000"  AND  NORMSQ  NOT  =   SQLSTATE)
             then
               DISPLAY "Valid implementation-defined SQLSTATE accepted."
             END-IF
             DISPLAY  " "

             DISPLAY "INSERT INTO CREATIONTIMES VALUES"
             DISPLAY " ('FLATER', 'USIG', DEFAULT);"
             EXEC SQL INSERT INTO CREATIONTIMES VALUES
               ('FLATER''USIG', DEFAULT) END-EXEC
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be < 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be 25000; its value is ", SQLSTATE
           PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT <  0  OR  NORMSQ  NOT  =   "25000"then
               MOVE 0 TO flag
             END-IF
             if (NORMSQ   =   "25000"  AND  NORMSQ  NOT  =   SQLSTATE)
             then
               DISPLAY "Valid implementation-defined SQLSTATE accepted."
             END-IF
             DISPLAY  " "

             DISPLAY "ROLLBACK;"
             EXEC SQL ROLLBACK END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DROP TABLE CreationTimes CASCADE;"
             EXEC SQL DROP TABLE CreationTimes CASCADE END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT;"
             EXEC SQL COMMIT END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             if ( flag  =  1 ) then
               DISPLAY " *** pass *** "
               EXEC SQL INSERT INTO HU.TESTREPORT
                 VALUES('0693','pass','PCO'END-EXEC
               MOVE SQLCODE TO SQL-COD
             else
               DISPLAY " dml135.pco *** fail *** "
               EXEC SQL INSERT INTO HU.TESTREPORT
                 VALUES('0693','fail','PCO'END-EXEC
               MOVE SQLCODE TO SQL-COD
               COMPUTE errcnt = errcnt + 1
             END-IF

             DISPLAY "==============================================="

             EXEC SQL COMMIT WORK END-EXEC
             MOVE SQLCODE TO SQL-COD
      ******************** END TEST0693 ********************
      ******************** BEGIN TEST0694 *******************
             MOVE 1 TO flag

             DISPLAY " TEST0694 "
             DISPLAY " Interval Arithmetic and Casts"
             DISPLAY "References:"
             DISPLAY " F# 5 -- DATETIME data types"
             DISPLAY " F# 20 -- CAST functions"
             DISPLAY " TC #2 5.3 -- Extended syntax of interval
      -    " strings"
             DISPLAY " 6.15 FT.1 -- Syntax for subtracting two
      -    " datetimes"
             DISPLAY " - - - - - - - - - - - - - - - - - - -"

             COMPUTE SQLCODE = -1
             MOVE "xxxxx" TO SQLSTATE

      *you have: approximate numeric 
      *you want: interval hour to minute 
      *You can't cast an approximate numeric as an interval (6.10 SR.4

      *you have: exact numeric 
      *you want: interval hour to minute 
      *You can't cast an exact numeric as an interval with more than o
      *<datetime field> (6.10 SR.5). 

      *      This is how you do it:         
      *1.9 * INTERVAL '1:00' HOUR TO MINUTE 

      *If you've only got one <datetime field> you can do this: 
      * CAST (CAST (1.9 AS NUMERIC (2, 1)) AS INTERVAL SECOND)  
      *but you're probably still better off to say              
      *    1.9 * INTERVAL '1.000000' SECOND                     

             DISPLAY "CREATE TABLE WORKS ("
             DISPLAY " EMPNUM CHAR (3) NOT NULL,"
             DISPLAY " PNUM CHAR (3) NOT NULL,"
             DISPLAY " HOURS DECIMAL (5),"
             DISPLAY " UNIQUE(EMPNUM,PNUM));"
             EXEC SQL CREATE TABLE WORKS (
               EMPNUM CHAR (3) NOT NULL,
               PNUM CHAR (3) NOT NULL,
               HOURS DECIMAL (5),
               UNIQUE(EMPNUM,PNUM)) END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
             EXEC SQL COMMIT WORK END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "CREATE VIEW PROJ_HOURS (PNUM, HOURS) AS"
             DISPLAY " SELECT PNUM, AVG (HOURS) * INTERVAL '01:00' HOUR
      -    " TO MINUTE"
             DISPLAY " FROM WORKS GROUP BY PNUM;"
             EXEC SQL CREATE VIEW PROJ_HOURS (PNUM, HOURS) AS
               SELECT PNUM, AVG (HOURS) * INTERVAL '01:00' HOUR TO
             MINUTE
               FROM WORKS GROUP BY PNUM END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
             EXEC SQL COMMIT WORK END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "CREATE VIEW PROJ_HOURS2 (PNUM, HOURS) AS"
             DISPLAY " SELECT PNUM,"
             DISPLAY " AVG (CAST (CAST (HOURS AS INTERVAL HOUR)"
             DISPLAY " AS INTERVAL HOUR TO MINUTE))"
             DISPLAY " FROM WORKS GROUP BY PNUM;"
             EXEC SQL CREATE VIEW PROJ_HOURS2 (PNUM, HOURS) AS
               SELECT PNUM,
               AVG (CAST (CAST (HOURS AS INTERVAL HOUR)
               AS INTERVAL HOUR TO MINUTE))
               FROM WORKS GROUP BY PNUM END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
             EXEC SQL COMMIT WORK END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "CREATE TABLE RUN_TIMES ("
             DISPLAY " JOB_ID INT NOT NULL UNIQUE,"
             DISPLAY " JOB_TYPE CHAR (3) NOT NULL,"
             DISPLAY " RUN_SECONDS REAL);"
             EXEC SQL CREATE TABLE RUN_TIMES (
               JOB_ID INT NOT NULL UNIQUE,
               JOB_TYPE CHAR (3) NOT NULL,
               RUN_SECONDS REAL) END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
             EXEC SQL COMMIT WORK END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "CREATE VIEW TYPE_TIMES (JOB_TYPE, RUN_SECONDS) AS"
             DISPLAY " SELECT JOB_TYPE,"
             DISPLAY " AVG (RUN_SECONDS) * INTERVAL '01.000000' SECOND"
             DISPLAY " FROM RUN_TIMES GROUP BY JOB_TYPE;"
             EXEC SQL CREATE VIEW TYPE_TIMES (JOB_TYPE, RUN_SECONDS) AS
               SELECT JOB_TYPE,
               AVG (RUN_SECONDS) * INTERVAL '01.000000' SECOND
               FROM RUN_TIMES GROUP BY JOB_TYPE END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
             EXEC SQL COMMIT WORK END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "CREATE VIEW TYPE_TIMES2 (JOB_TYPE, RUN_SECONDS)
      -    " AS"
             DISPLAY " SELECT JOB_TYPE,"
             DISPLAY " CAST (CAST (AVG (RUN_SECONDS) AS NUMERIC (8,
      -    " 6))"
             DISPLAY " AS INTERVAL SECOND)"
             DISPLAY " FROM RUN_TIMES GROUP BY JOB_TYPE;"
             EXEC SQL CREATE VIEW TYPE_TIMES2 (JOB_TYPE, RUN_SECONDS) AS
               SELECT JOB_TYPE,
               CAST (CAST (AVG (RUN_SECONDS) AS NUMERIC (8, 6))
               AS INTERVAL SECOND)
               FROM RUN_TIMES GROUP BY JOB_TYPE END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
             EXEC SQL COMMIT WORK END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "CREATE VIEW HUNDREDS (WORKTOTL) AS"
             DISPLAY " SELECT SUM (CAST (HOURS AS INTERVAL DAY TO
      -    " MINUTE)) / 100"
             DISPLAY " FROM PROJ_HOURS;"
             EXEC SQL CREATE VIEW HUNDREDS (WORKTOTL) AS
               SELECT SUM (CAST (HOURS AS INTERVAL DAY TO MINUTE)) / 100
               FROM PROJ_HOURS END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
             EXEC SQL COMMIT WORK END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "INSERT INTO WORKS"
             DISPLAY " SELECT * FROM HU.WORKS;"
             EXEC SQL INSERT INTO WORKS
               SELECT * FROM HU.WORKS END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "INSERT INTO WORKS VALUES"
             DISPLAY " ('EX', 'P1', 50);"
             EXEC SQL INSERT INTO WORKS VALUES
               ('EX''P1', 50) END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "INSERT INTO WORKS VALUES"
             DISPLAY " ('EX', 'P3', 25);"
             EXEC SQL INSERT INTO WORKS VALUES
               ('EX''P3', 25) END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "INSERT INTO RUN_TIMES VALUES"
             DISPLAY " (0, 'DMP', 1.22);"
             EXEC SQL INSERT INTO RUN_TIMES VALUES
               (0, 'DMP', 1.22) END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "INSERT INTO RUN_TIMES VALUES"
             DISPLAY " (1, 'DMP', .49);"
             EXEC SQL INSERT INTO RUN_TIMES VALUES
               (1, 'DMP', .49) END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "INSERT INTO RUN_TIMES VALUES"
             DISPLAY " (2, 'CHK', 5.2);"
             EXEC SQL INSERT INTO RUN_TIMES VALUES
               (2, 'CHK', 5.2) END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "INSERT INTO RUN_TIMES VALUES"
             DISPLAY " (3, 'CHK', 4.04);"
             EXEC SQL INSERT INTO RUN_TIMES VALUES
               (3, 'CHK', 4.04) END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "INSERT INTO RUN_TIMES VALUES"
             DISPLAY " (4, 'CHK', 23.74);"
             EXEC SQL INSERT INTO RUN_TIMES VALUES
               (4, 'CHK', 23.74) END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *The views PROJ_HOURS and PROJ_HOURS2 should be equivalent 
      *modulo any roundoff or truncation error.                  

      *Allowing the sign to move inside of the quotes:  TC #2 5.3 
      *( datetime - datetime ) <interval qualifier>:  6.15 FT.1   
      *Comparability of HOUR TO MINUTE vs. MINUTE:  4.5.2         

             COMPUTE int1 = -1
             DISPLAY "SELECT COUNT(*) INTO :int1"
             DISPLAY " FROM PROJ_HOURS A, PROJ_HOURS2 B"
             DISPLAY " WHERE A.PNUM = B.PNUM"
             DISPLAY " AND (A.HOURS - B.HOURS) HOUR TO MINUTE"
             DISPLAY " BETWEEN INTERVAL '-1' MINUTE AND INTERVAL '+1'
      -    " MINUTE;"
             EXEC SQL SELECT COUNT(*) INTO :int1
               FROM PROJ_HOURS A, PROJ_HOURS2 B
               WHERE A.PNUM = B.PNUM
               AND (A.HOURS - B.HOURS) HOUR TO MINUTE
               BETWEEN INTERVAL '-1' MINUTE AND INTERVAL '+1' MINUTE
             END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 6; its value is ", int1
             if (int1  NOT =  6) then
               MOVE 0 TO flag
             END-IF

      *The views TYPE_TIMES and TYPE_TIMES2 should be equivalent 
      *modulo any roundoff or truncation error.                  

             COMPUTE int1 = -1
             DISPLAY "SELECT COUNT(*) INTO :int1"
             DISPLAY " FROM TYPE_TIMES A, TYPE_TIMES2 B"
             DISPLAY " WHERE A.JOB_TYPE = B.JOB_TYPE"
             DISPLAY " AND (A.RUN_SECONDS - B.RUN_SECONDS) SECOND"
             DISPLAY " BETWEEN INTERVAL '-00.000010' SECOND"
             DISPLAY " AND INTERVAL '+00.000010' SECOND;"
             EXEC SQL SELECT COUNT(*) INTO :int1
               FROM TYPE_TIMES A, TYPE_TIMES2 B
               WHERE A.JOB_TYPE = B.JOB_TYPE
               AND (A.RUN_SECONDS - B.RUN_SECONDS) SECOND
               BETWEEN INTERVAL '-00.000010' SECOND
               AND INTERVAL '+00.000010' SECOND END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 2; its value is ", int1
             if (int1  NOT =  2) then
               MOVE 0 TO flag
             END-IF

      *Check contents of PROJ_HOURS 

             DISPLAY "DECLARE C13531 CURSOR FOR"
             DISPLAY " SELECT EXTRACT (HOUR FROM HOURS),"
             DISPLAY " EXTRACT (MINUTE FROM HOURS)"
             DISPLAY " FROM PROJ_HOURS ORDER BY PNUM;"
             EXEC SQL DECLARE C13531 CURSOR FOR
               SELECT EXTRACT (HOUR FROM HOURS),
               EXTRACT (MINUTE FROM HOURS)
               FROM PROJ_HOURS ORDER BY PNUM END-EXEC

             DISPLAY "OPEN C13531;"
             EXEC SQL OPEN C13531 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             DISPLAY "FETCH C13531 INTO :int1, :int2;"
             EXEC SQL FETCH C13531 INTO :int1, :int2 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 43; its value is ", int1
             DISPLAY "int2 should be 20; its value is ", int2
             if (int1  NOT =  43) then
               MOVE 0 TO flag
             END-IF
             if (int2  <  19  OR  int2  >  20) then
               MOVE 0 TO flag
             END-IF
             if (flag  =  1  AND  int2  =  19) then
               DISPLAY "truncation/roundoff error for int2 OK"
             END-IF
             DISPLAY  " "

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             DISPLAY "FETCH C13531 INTO :int1, :int2;"
             EXEC SQL FETCH C13531 INTO :int1, :int2 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 35; its value is ", int1
             DISPLAY "int2 should be 0; its value is ", int2
             if (int1  NOT =  35  OR  int2  NOT =  0) then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             DISPLAY "FETCH C13531 INTO :int1, :int2;"
             EXEC SQL FETCH C13531 INTO :int1, :int2 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 52; its value is ", int1
             DISPLAY "int2 should be 30; its value is ", int2
             if (int1  NOT =  52  OR  int2  NOT =  30) then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             DISPLAY "FETCH C13531 INTO :int1, :int2;"
             EXEC SQL FETCH C13531 INTO :int1, :int2 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 30; its value is ", int1
             DISPLAY "int2 should be 0; its value is ", int2
             if (int1  NOT =  30  OR  int2  NOT =  0) then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             DISPLAY "FETCH C13531 INTO :int1, :int2;"
             EXEC SQL FETCH C13531 INTO :int1, :int2 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 46; its value is ", int1
             DISPLAY "int2 should be 0; its value is ", int2
             if (int1  NOT =  46  OR  int2  NOT =  0) then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             DISPLAY "FETCH C13531 INTO :int1, :int2;"
             EXEC SQL FETCH C13531 INTO :int1, :int2 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 12; its value is ", int1
             DISPLAY "int2 should be 0; its value is ", int2
             if (int1  NOT =  12  OR  int2  NOT =  0) then
               MOVE 0 TO flag
             END-IF

             DISPLAY "FETCH C13531 INTO :int1, :int2;"
             EXEC SQL FETCH C13531 INTO :int1, :int2 END-EXEC
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be 100; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be 02000; its value is ", SQLSTATE
           PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT =  100  OR  NORMSQ  NOT  =   "02000"then
               MOVE 0 TO flag
             END-IF
             if (NORMSQ   =   "02000"  AND  NORMSQ  NOT  =   SQLSTATE)
             then
               DISPLAY "Valid implementation-defined SQLSTATE accepted."
             END-IF
             DISPLAY  " "

             DISPLAY "CLOSE C13531;"
             EXEC SQL CLOSE C13531 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C13532 CURSOR FOR"
             DISPLAY " SELECT EXTRACT (SECOND FROM RUN_SECONDS)"
             DISPLAY " FROM TYPE_TIMES ORDER BY JOB_TYPE;"
             EXEC SQL DECLARE C13532 CURSOR FOR
               SELECT EXTRACT (SECOND FROM RUN_SECONDS)
               FROM TYPE_TIMES ORDER BY JOB_TYPE END-EXEC

             DISPLAY "OPEN C13532;"
             EXEC SQL OPEN C13532 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE flt1 = -1.0
             DISPLAY "FETCH C13532 INTO :flt1;"
             EXEC SQL FETCH C13532 INTO :flt1 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "flt1 should be 10.993333 +- 0.00001; its value is
      -    " ", flt1
             if (flt1  <  10.993323  OR  flt1  >  10.993343) then
               MOVE 0 TO flag
             END-IF

             COMPUTE flt1 = -1.0
             DISPLAY "FETCH C13532 INTO :flt1;"
             EXEC SQL FETCH C13532 INTO :flt1 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "flt1 should be 0.855 +- 0.00001; its value is ",
             flt1
             if (flt1  <  0.85499  OR  flt1  >  0.85501) then
               MOVE 0 TO flag
             END-IF

             DISPLAY "FETCH C13532 INTO :flt1;"
             EXEC SQL FETCH C13532 INTO :flt1 END-EXEC
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be 100; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be 02000; its value is ", SQLSTATE
           PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT =  100  OR  NORMSQ  NOT  =   "02000"then
               MOVE 0 TO flag
             END-IF
             if (NORMSQ   =   "02000"  AND  NORMSQ  NOT  =   SQLSTATE)
             then
               DISPLAY "Valid implementation-defined SQLSTATE accepted."
             END-IF
             DISPLAY  " "

             DISPLAY "CLOSE C13532;"
             EXEC SQL CLOSE C13532 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *Test interval divide 

             COMPUTE int1 = -1
             DISPLAY "SELECT EXTRACT (DAY FROM WORKTOTL)"
             DISPLAY " INTO :int1 FROM HUNDREDS;"
             EXEC SQL SELECT EXTRACT (DAY FROM WORKTOTL)
               INTO :int1 FROM HUNDREDS END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 0; its value is ", int1
             if (int1  NOT =  0) then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             DISPLAY "SELECT EXTRACT (HOUR FROM WORKTOTL)"
             DISPLAY " INTO :int1 FROM HUNDREDS;"
             EXEC SQL SELECT EXTRACT (HOUR FROM WORKTOTL)
               INTO :int1 FROM HUNDREDS END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 2; its value is ", int1
             if (int1  NOT =  2) then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             DISPLAY "SELECT EXTRACT (MINUTE FROM WORKTOTL)"
             DISPLAY " INTO :int1 FROM HUNDREDS;"
             EXEC SQL SELECT EXTRACT (MINUTE FROM WORKTOTL)
               INTO :int1 FROM HUNDREDS END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 11; its value is ", int1
             if (int1  NOT =  11) then
               MOVE 0 TO flag
             END-IF

      *Exact value would have been 2 hours, 11 minutes,  
      *18 seconds.  It should get rounded downwards even 
      *if there is rounding/truncation error in previous 
      *calculations.                                     

             DISPLAY "ROLLBACK WORK;"
             EXEC SQL ROLLBACK WORK END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DROP TABLE WORKS CASCADE;"
             EXEC SQL DROP TABLE WORKS CASCADE END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
             EXEC SQL COMMIT WORK END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DROP TABLE RUN_TIMES CASCADE;"
             EXEC SQL DROP TABLE RUN_TIMES CASCADE END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
             EXEC SQL COMMIT WORK END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             if ( flag  =  1 ) then
               DISPLAY " *** pass *** "
               EXEC SQL INSERT INTO HU.TESTREPORT
                 VALUES('0694','pass','PCO'END-EXEC
               MOVE SQLCODE TO SQL-COD
             else
               DISPLAY " dml135.pco *** fail *** "
               EXEC SQL INSERT INTO HU.TESTREPORT
                 VALUES('0694','fail','PCO'END-EXEC
               MOVE SQLCODE TO SQL-COD
               COMPUTE errcnt = errcnt + 1
             END-IF

             DISPLAY "==============================================="

             EXEC SQL COMMIT WORK END-EXEC
             MOVE SQLCODE TO SQL-COD
      ******************** END TEST0694 ********************
      ******************** BEGIN TEST0695 *******************
             MOVE 1 TO flag

             DISPLAY " TEST0695 "
             DISPLAY " in "
             DISPLAY "References:"
             DISPLAY " F# 11 -- Transaction isolation"
             DISPLAY " 13.1 LR.2.b -- in
      -    " "
             DISPLAY " - - - - - - - - - - - - - - - - - - -"

             COMPUTE SQLCODE = -1
             MOVE "xxxxx" TO SQLSTATE

      *Note that there are special restrictions on updating through 
      *an ordered cursor, see 13.9 LR.1.a                           

             DISPLAY "DECLARE C13541 CURSOR FOR"
             DISPLAY " SELECT GRADE FROM HU.STAFF"
             DISPLAY " FOR READ ONLY;"
             EXEC SQL DECLARE C13541 CURSOR FOR
               SELECT GRADE FROM HU.STAFF
               FOR READ ONLY END-EXEC

             DISPLAY "OPEN C13541;"
             EXEC SQL OPEN C13541 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "FETCH C13541 INTO :int1;"
             EXEC SQL FETCH C13541 INTO :int1 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 is ", int1

      *This may be rejected at compile time.  If it is,      
      *save the error message(s) and TEd out this statement. 

      *Violation of 13.9 SR.2 

             DISPLAY "UPDATE HU.STAFF"
             DISPLAY " SET GRADE = 11 WHERE CURRENT OF C13541;"
             EXEC SQL UPDATE HU.STAFF
               SET GRADE = 11 WHERE CURRENT OF C13541 END-EXEC
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be < 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be 42000; its value is ", SQLSTATE
           PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT <  0  OR  NORMSQ  NOT  =   "42000"then
               MOVE 0 TO flag
             END-IF
             if (NORMSQ   =   "42000"  AND  NORMSQ  NOT  =   SQLSTATE)
             then
               DISPLAY "Valid implementation-defined SQLSTATE accepted."
             END-IF
             DISPLAY  " "

      *4.21 PP.9:  state of cursor is now unknown 

             DISPLAY "CLOSE C13541;"
             EXEC SQL CLOSE C13541 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "OPEN C13541;"
             EXEC SQL OPEN C13541 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "FETCH C13541 INTO :int1;"
             EXEC SQL FETCH C13541 INTO :int1 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 is ", int1

      *This may be rejected at compile time.  If it is,      
      *save the error message(s) and TEd out this statement. 

      *Violation of 13.6 SR.2 

             DISPLAY "DELETE FROM HU.STAFF"
             DISPLAY " WHERE CURRENT OF C13541;"
             EXEC SQL DELETE FROM HU.STAFF
               WHERE CURRENT OF C13541 END-EXEC
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be < 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be 42000; its value is ", SQLSTATE
           PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT <  0  OR  NORMSQ  NOT  =   "42000"then
               MOVE 0 TO flag
             END-IF
             if (NORMSQ   =   "42000"  AND  NORMSQ  NOT  =   SQLSTATE)
             then
               DISPLAY "Valid implementation-defined SQLSTATE accepted."
             END-IF
             DISPLAY  " "

             DISPLAY "CLOSE C13541;"
             EXEC SQL CLOSE C13541 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C13542 CURSOR FOR"
             DISPLAY " SELECT * FROM HU.STAFF"
             DISPLAY " FOR UPDATE OF GRADE, CITY;"
             EXEC SQL DECLARE C13542 CURSOR FOR
               SELECT * FROM HU.STAFF
               FOR UPDATE OF GRADE, CITY END-EXEC

             DISPLAY "OPEN C13542;"
             EXEC SQL OPEN C13542 END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "FETCH C13542 INTO :emnum, :ename, :int1, :city;"
             EXEC SQL FETCH C13542 INTO :emnum, :ename, :int1, :city
             END-EXEC
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "emnum is ", emnum
             DISPLAY "ename is ", ename
             DISPLAY "int1 is ", int1
             DISPLAY "city is ", city

      *This may be rejected at compile time.  If it is,      
      *save the error message(s) and TEd out this statement. 

      *Violation of 13.9 SR.8 

             DISPLAY "UPDATE HU.STAFF"
             DISPLAY " SET EMPNUM = 'HAR' WHERE CURRENT OF C13542;"
             EXEC SQL UPDATE HU.STAFF
               SET EMPNUM = 'HAR' WHERE CURRENT OF C13542 END-EXEC
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be < 0; its value is ", SQL-COD
--> --------------------

--> maximum size reached

--> --------------------

¤ Dauer der Verarbeitung: 0.108 Sekunden  (vorverarbeitet)  ¤





Download des
Quellennavigators
Download des
sprechenden Kalenders

in der Quellcodebibliothek suchen




Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.


Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.


Bot Zugriff