products/sources/formale sprachen/Cobol/Test-Suite/SQL M image not shown  

Quellcode-Bibliothek

© Kompilation durch diese Firma

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

Datei: mpb008.mco   Sprache: Cobol

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


      * Standard COBOL (file "DML113.SCO") calling SQL
      * procedures in file "DML113.MCO".


      ****************************************************************
      *                                                              
      *                 COMMENT SECTION                              
      *                                                              
      * DATE 1993/11/10 STANDARD 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.
      *                                                              
      * DML113.SCO                                                    
      * WRITTEN BY:  David W. Flater                                 
      * TRANSLATED AUTOMATICALLY FROM EMBEDDED COBOL BY CHRIS SCHANZLE
      *                                                              
      * This routine tests NULLs with DATETIME data types and in     
      * outer joins, datetimes in a <default clause>, TRIM, and also 
      * some schema manipulation statements.                         
      * This is the dynamic version of DML112.PC.                    
      *                                                              
      * 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  ind1 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  chtime PIC  X(8).
       01  ch1 PIC  X(11).
       01  ch2 PIC  X(14).
       01  ch3 PIC  X(14).
       01  dstmt PIC  X(50).
       01  longst PIC  X(240).
      *  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;
             CALL "SUB1" USING SQLCODE SQLSTATE uidx
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL ROLLBACK WORK;
             CALL "SUB2" USING SQLCODE SQLSTATE
             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, Module COBOL, dml113.sco"
             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 TEST0622 *******************
             MOVE 1 TO flag

             DISPLAY " TEST0622 "
             DISPLAY " DATETIME NULLs (dynamic)"
             DISPLAY "References:"
             DISPLAY " FIPS PUB 127-2 14.1 Transitional SQL features
      -    " 5,20"
             DISPLAY " - - - - - - - - - - - - - - - - - - -"

             COMPUTE SQLCODE = -1
             MOVE "xxxxx" TO SQLSTATE

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB3" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'CREATE TABLE MERCH ('  ||
      *    '  ITEMKEY INT,'        ||
      *    '  ORDERED DATE,'       ||
      *    '  RDATE DATE,'         ||
      *    '  RTIME TIME,'         ||
      *    '  SOLD TIMESTAMP)'
      *    );
             CALL "SUB4" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB5" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB6" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "EXECUTE IMMEDIATE :longst;"
      *  EXEC SQL EXECUTE IMMEDIATE :longst;
             CALL "SUB7" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB8" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB9" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'CREATE TABLE TURNAROUND ('     ||
      *    '  ITEMKEY INT,'                ||
      *    '  MWAIT INTERVAL MONTH,'       ||
      *    '  DWAIT INTERVAL DAY TO HOUR)'
      *    );
             CALL "SUB10" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB11" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB12" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "EXECUTE IMMEDIATE :longst;"
      *  EXEC SQL EXECUTE IMMEDIATE :longst;
             CALL "SUB13" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB14" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

      *Do this with an outer join in a combined test later. 
      *For FSQL, use SELECT DISTINCT (all that stuff)       

      *Statement too long for CONCATBUF; break into two views. 
      *Even now, this statement has whitespace removed to make it fit 

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB15" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'CREATE VIEW NULLINV AS'                               
      *  ||
      *    ' SELECT ITEMKEY,ORDERED,CAST'                         
      *  ||
      *    ' (NULL AS INTERVAL MONTH) AS MWAIT,CAST'              
      *  ||
      *    ' (NULL AS INTERVAL DAY TO HOUR) AS DWAIT FROM'        
      *  ||
      *    ' MERCH WHERE RDATE IS NOT NULL AND SOLD IS NULL'      
      *  ||
      *    ' AND MERCH.ITEMKEY NOT IN(SELECT ITEMKEY'             
      *  ||
      *    ' FROM TURNAROUND)'
      *    );
             CALL "SUB16" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB17" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB18" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "EXECUTE IMMEDIATE :longst;"
      *  EXEC SQL EXECUTE IMMEDIATE :longst;
             CALL "SUB19" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB20" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB21" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'CREATE VIEW INVENTORY AS'                              
      *  ||
      *    '  SELECT MERCH.ITEMKEY AS ITEMKEY, ORDERED,'           
      *  ||
      *    '  MWAIT, DWAIT FROM MERCH, TURNAROUND COR1 WHERE RDATE'
      *  ||
      *    '  IS NOT NULL AND SOLD IS NULL AND'                    
      *  ||
      *    '  MERCH.ITEMKEY = COR1.ITEMKEY'                        
      *  ||
      *    '    UNION'                                             
      *  ||
      *    '  SELECT * FROM NULLINV'
      *    );
             CALL "SUB22" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB23" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB24" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "EXECUTE IMMEDIATE :longst;"
      *  EXEC SQL EXECUTE IMMEDIATE :longst;
             CALL "SUB25" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB26" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

      *Something ordered but not received 

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB27" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'INSERT INTO MERCH VALUES (' ||
      *    '  0, DATE ''1993-11-23'','  ||
      *    '  NULL, NULL, NULL)'
      *    );
             CALL "SUB28" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB29" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "EXECUTE IMMEDIATE :longst;"
      *  EXEC SQL EXECUTE IMMEDIATE :longst;
             CALL "SUB30" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

      *Something we don't know what time it arrived 

             MOVE "12:34:56" TO chtime
             DISPLAY "chtime is 12:34:56"
             COMPUTE ind1 = -1
             DISPLAY "ind1 = -1;"

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB31" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'INSERT INTO MERCH VALUES (' ||
      *    '  1, DATE ''1993-12-10'','  ||
      *    '  DATE ''1994-01-03'','     ||
      *    '  CAST (? AS TIME), NULL)'
      *    );
             CALL "SUB32" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB33" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "PREPARE S11311 FROM :longst;"
      *  EXEC SQL PREPARE S11311 FROM :longst;
             CALL "SUB34" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "EXECUTE S11311 USING :chtime:ind1;"
      *  EXEC SQL EXECUTE S11311 USING :chtime:ind1;
             CALL "SUB35" USING SQLCODE SQLSTATE chtime ind1
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

      *Something back-ordered 

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB36" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'INSERT INTO MERCH VALUES (' ||
      *    '  2, DATE ''1993-12-11'','  ||
      *    '  NULL, NULL,'              ||
      *    '  CAST (''TIMESTAMP ''''1993-12-11 13:00:00'''''' AS
      *  TIMESTAMP))'
      *    );
             CALL "SUB37" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB38" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "EXECUTE IMMEDIATE :longst;"
      *  EXEC SQL EXECUTE IMMEDIATE :longst;
             CALL "SUB39" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB40" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'INSERT INTO MERCH VALUES ('                     ||
      *    '  4, DATE ''1993-01-26'', DATE ''1993-01-27'',' ||
      *    '  NULL, NULL)'
      *    );
             CALL "SUB41" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB42" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "EXECUTE IMMEDIATE :longst;"
      *  EXEC SQL EXECUTE IMMEDIATE :longst;
             CALL "SUB43" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB44" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'INSERT INTO TURNAROUND VALUES ('  ||
      *    '  2, INTERVAL ''1'' MONTH,'       ||
      *    '  INTERVAL ''20:0'' DAY TO HOUR)'
      *    );
             CALL "SUB45" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB46" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "EXECUTE IMMEDIATE :longst;"
      *  EXEC SQL EXECUTE IMMEDIATE :longst;
             CALL "SUB47" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

      *We have only a vague idea of the turnaround for this thing 

             DISPLAY "chtime is 20:0"
             MOVE "20:0 " TO chtime
             DISPLAY "ind1 = -1;"
             COMPUTE ind1 = -1

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB48" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'INSERT INTO TURNAROUND VALUES ('     ||
      *    '  5, INTERVAL ''5'' MONTH,'          ||
      *    '  CAST (? AS INTERVAL DAY TO HOUR))'
      *    );
             CALL "SUB49" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB50" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "PREPARE S11312 FROM :longst;"
      *  EXEC SQL PREPARE S11312 FROM :longst;
             CALL "SUB51" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "EXECUTE S11312 USING :chtime:ind1;"
      *  EXEC SQL EXECUTE S11312 USING :chtime:ind1;
             CALL "SUB52" USING SQLCODE SQLSTATE chtime ind1
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB53" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'INSERT INTO TURNAROUND VALUES' ||
      *    '  (6, INTERVAL ''2'' MONTH, NULL)'
      *    );
             CALL "SUB54" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB55" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "EXECUTE IMMEDIATE :longst;"
      *  EXEC SQL EXECUTE IMMEDIATE :longst;
             CALL "SUB56" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB57" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'SELECT COUNT(*) FROM' ||
      *    '  MERCH A, MERCH B WHERE A.SOLD = B.SOLD'
      *    );
             CALL "SUB58" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB59" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "PREPARE S11313 FROM :longst;"
      *  EXEC SQL PREPARE S11313 FROM :longst;
             CALL "SUB60" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C11313 CURSOR FOR S11313;"
      *  EXEC SQL DECLARE C11313 CURSOR FOR S11313 END-EXEC
             DISPLAY  " "

             DISPLAY "OPEN C11313;"
      *  EXEC SQL OPEN C11313;
             CALL "SUB61" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "FETCH C11313 INTO :int1;"
      *  EXEC SQL FETCH C11313 INTO :int1;
             CALL "SUB62" USING SQLCODE SQLSTATE int1
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 1; its value is ", int1
             if (int1  NOT =  1) then
               MOVE 0 TO flag
             END-IF

             DISPLAY "CLOSE C11313;"
      *  EXEC SQL CLOSE C11313;
             CALL "SUB63" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB64" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'SELECT COUNT(*) FROM' ||
      *    '  MERCH A, MERCH B WHERE A.RTIME = B.RTIME'
      *    );
             CALL "SUB65" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB66" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "PREPARE S11314 FROM :longst;"
      *  EXEC SQL PREPARE S11314 FROM :longst;
             CALL "SUB67" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C11314 CURSOR FOR S11314;"
      *  EXEC SQL DECLARE C11314 CURSOR FOR S11314 END-EXEC
             DISPLAY  " "

             DISPLAY "OPEN C11314;"
      *  EXEC SQL OPEN C11314;
             CALL "SUB68" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "FETCH C11314 INTO :int1;"
      *  EXEC SQL FETCH C11314 INTO :int1;
             CALL "SUB69" USING SQLCODE SQLSTATE int1
             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

             DISPLAY "CLOSE C11314;"
      *  EXEC SQL CLOSE C11314;
             CALL "SUB70" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "dstmt=""SELECT COUNT(*) FROM MERCH WHERE RDATE IS
      -    " NULL"""
             MOVE "SELECT COUNT(*) FROM MERCH WHERE RDATE IS
      -    " NULL " TO dstmt

             DISPLAY "PREPARE S11315 FROM :dstmt;"
      *  EXEC SQL PREPARE S11315 FROM :dstmt;
             CALL "SUB71" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C11315 CURSOR FOR S11315;"
      *  EXEC SQL DECLARE C11315 CURSOR FOR S11315 END-EXEC
             DISPLAY  " "

             DISPLAY "OPEN C11315;"
      *  EXEC SQL OPEN C11315;
             CALL "SUB72" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "FETCH C11315 INTO :int1;"
      *  EXEC SQL FETCH C11315 INTO :int1;
             CALL "SUB73" USING SQLCODE SQLSTATE int1
             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

             DISPLAY "CLOSE C11315;"
      *  EXEC SQL CLOSE C11315;
             CALL "SUB74" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB75" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'SELECT COUNT(*) FROM TURNAROUND' ||
      *    '  WHERE DWAIT IS NOT NULL'
      *    );
             CALL "SUB76" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB77" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "PREPARE S11316 FROM :longst;"
      *  EXEC SQL PREPARE S11316 FROM :longst;
             CALL "SUB78" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C11316 CURSOR FOR S11316;"
      *  EXEC SQL DECLARE C11316 CURSOR FOR S11316 END-EXEC
             DISPLAY  " "

             DISPLAY "OPEN C11316;"
      *  EXEC SQL OPEN C11316;
             CALL "SUB79" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "FETCH C11316 INTO :int1;"
      *  EXEC SQL FETCH C11316 INTO :int1;
             CALL "SUB80" USING SQLCODE SQLSTATE int1
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 1; its value is ", int1
             if (int1  NOT =  1) then
               MOVE 0 TO flag
             END-IF

             DISPLAY "CLOSE C11316;"
      *  EXEC SQL CLOSE C11316;
             CALL "SUB81" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB82" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'SELECT EXTRACT (DAY FROM RDATE)'                ||
      *    '  FROM MERCH, TURNAROUND WHERE MERCH.ITEMKEY =' ||
      *    '  TURNAROUND.ITEMKEY'
      *    );
             CALL "SUB83" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB84" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "PREPARE S11317 FROM :longst;"
      *  EXEC SQL PREPARE S11317 FROM :longst;
             CALL "SUB85" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C11317 CURSOR FOR S11317;"
      *  EXEC SQL DECLARE C11317 CURSOR FOR S11317 END-EXEC
             DISPLAY  " "

             DISPLAY "OPEN C11317;"
      *  EXEC SQL OPEN C11317;
             CALL "SUB86" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             MOVE 2 TO ind1
             DISPLAY "FETCH C11317 INTO :int1:ind1;"
      *  EXEC SQL FETCH C11317 INTO :int1:ind1;
             CALL "SUB87" USING SQLCODE SQLSTATE int1 ind1
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "ind1 should be -1; its value is ", ind1
             if (ind1  NOT =  -1) then
               MOVE 0 TO flag
             END-IF

             DISPLAY "CLOSE C11317;"
      *  EXEC SQL CLOSE C11317;
             CALL "SUB88" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "dstmt=""SELECT ITEMKEY FROM MERCH WHERE SOLD IS
      -    " NOT NULL"""
             MOVE "SELECT ITEMKEY FROM MERCH WHERE SOLD IS NOT NULL "
             TO dstmt

             DISPLAY "PREPARE S11318 FROM :dstmt;"
      *  EXEC SQL PREPARE S11318 FROM :dstmt;
             CALL "SUB89" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C11318 CURSOR FOR S11318;"
      *  EXEC SQL DECLARE C11318 CURSOR FOR S11318 END-EXEC
             DISPLAY  " "

             DISPLAY "OPEN C11318;"
      *  EXEC SQL OPEN C11318;
             CALL "SUB90" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "FETCH C11318 INTO :int1;"
      *  EXEC SQL FETCH C11318 INTO :int1;
             CALL "SUB91" USING SQLCODE SQLSTATE int1
             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

      *Cursor left open. 

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB92" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'SELECT EXTRACT (HOUR FROM AVG (DWAIT))'  ||
      *    '  FROM MERCH, TURNAROUND WHERE'          ||
      *    '  MERCH.ITEMKEY = TURNAROUND.ITEMKEY OR' ||
      *    '  TURNAROUND.ITEMKEY NOT IN'             ||
      *    '  (SELECT ITEMKEY FROM MERCH)'
      *    );
             CALL "SUB93" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB94" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "PREPARE S11319 FROM :longst;"
      *  EXEC SQL PREPARE S11319 FROM :longst;
             CALL "SUB95" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C11319 CURSOR FOR S11319;"
      *  EXEC SQL DECLARE C11319 CURSOR FOR S11319 END-EXEC
             DISPLAY  " "

             DISPLAY "OPEN C11319;"
      *  EXEC SQL OPEN C11319;
             CALL "SUB96" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

             DISPLAY "SQLCODE should be >= 0; its value is ", SQL-COD
             if (SQLCODE  <  0) then
               MOVE 0 TO flag
             END-IF
             DISPLAY "SQLSTATE can be 00000 or 01003; its value is ",
             SQLSTATE
           PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (NORMSQ  NOT  =   "00000"  AND  SQLSTATE  NOT  =  
             "01003"then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             DISPLAY "FETCH C11319 INTO :int1;"
      *  EXEC SQL FETCH C11319 INTO :int1;
             CALL "SUB97" USING SQLCODE SQLSTATE int1
             MOVE SQLCODE TO SQL-COD

      *DML083 set the precedent for requiring 01003 on the fetches. 
      *One might argue that it ought to be returned just on the     
      *open and never again.  DML083 is under dispute, so status    
      *codes are checked loosely here.                              

             DISPLAY "SQLCODE should be >= 0; its value is ", SQL-COD
             if (SQLCODE  <  0) then
               MOVE 0 TO flag
             END-IF
             DISPLAY "SQLSTATE can be 00000 or 01003; its value is ",
             SQLSTATE
           PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (NORMSQ  NOT  =   "00000"  AND  SQLSTATE  NOT  =  
             "01003"then
               MOVE 0 TO flag
             END-IF
             DISPLAY "int1 should be 0; its value is ", int1
             if (int1  NOT =  0) then
               MOVE 0 TO flag
             END-IF

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB98" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'SELECT COUNT(*)'                      ||
      *    '  FROM INVENTORY WHERE MWAIT IS NULL' ||
      *    '  AND DWAIT IS NULL'
      *    );
             CALL "SUB99" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB100" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "PREPARE S1131A FROM :longst;"
      *  EXEC SQL PREPARE S1131A FROM :longst;
             CALL "SUB101" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C1131A CURSOR FOR S1131A;"
      *  EXEC SQL DECLARE C1131A CURSOR FOR S1131A END-EXEC
             DISPLAY  " "

             DISPLAY "OPEN C1131A;"
      *  EXEC SQL OPEN C1131A;
             CALL "SUB102" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "FETCH C1131A INTO :int1;"
      *  EXEC SQL FETCH C1131A INTO :int1;
             CALL "SUB103" USING SQLCODE SQLSTATE int1
             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

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB104" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "dstmt=""DROP TABLE MERCH CASCADE"""
             MOVE "DROP TABLE MERCH CASCADE "
             TO dstmt

             DISPLAY "EXECUTE IMMEDIATE :dstmt;"
      *  EXEC SQL EXECUTE IMMEDIATE :dstmt;
             CALL "SUB105" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB106" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "dstmt=""DROP TABLE TURNAROUND CASCADE"""
             MOVE "DROP TABLE TURNAROUND CASCADE "
             TO dstmt

             DISPLAY "EXECUTE IMMEDIATE :dstmt;"
      *  EXEC SQL EXECUTE IMMEDIATE :dstmt;
             CALL "SUB107" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB108" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             if ( flag  =  1 ) then
               DISPLAY " *** pass *** "
      *    EXEC SQL INSERT INTO HU.TESTREPORT
      *      VALUES('0622','pass','MCO');
               CALL "SUB109" USING SQLCODE SQLSTATE
               MOVE SQLCODE TO SQL-COD
             else
               DISPLAY " dml113.sco *** fail *** "
      *    EXEC SQL INSERT INTO HU.TESTREPORT
      *      VALUES('0622','fail','MCO');
               CALL "SUB110" USING SQLCODE SQLSTATE
               MOVE SQLCODE TO SQL-COD
               COMPUTE errcnt = errcnt + 1
             END-IF

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

      *  EXEC SQL COMMIT WORK;
             CALL "SUB111" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      ******************** END TEST0622 ********************
      ******************** BEGIN TEST0624 *******************
             MOVE 1 TO flag

             DISPLAY " TEST0624 "
             DISPLAY "OUTER JOINs with NULLs and empty tables (dynamic)"
             DISPLAY "References:"
             DISPLAY " FIPS PUB 127-2 14.1 Transitional SQL features
      -    " 1,4"
             DISPLAY " - - - - - - - - - - - - - - - - - - -"

             COMPUTE SQLCODE = -1
             MOVE "xxxxx" TO SQLSTATE

             DISPLAY "dstmt=""CREATE TABLE JNULL1 (C1 INT, C2 INT)"""
             MOVE "CREATE TABLE JNULL1 (C1 INT, C2 INT) "
             TO dstmt

             DISPLAY "EXECUTE IMMEDIATE :dstmt;"
      *  EXEC SQL EXECUTE IMMEDIATE :dstmt;
             CALL "SUB112" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB113" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "dstmt=""CREATE TABLE JNULL2 (D1 INT, D2 INT)"""
             MOVE "CREATE TABLE JNULL2 (D1 INT, D2 INT) "
             TO dstmt

             DISPLAY "EXECUTE IMMEDIATE :dstmt;"
      *  EXEC SQL EXECUTE IMMEDIATE :dstmt;
             CALL "SUB114" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB115" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB116" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'CREATE VIEW JNULL3 AS'  ||
      *    '  SELECT C1, D1, D2 FROM JNULL1 LEFT OUTER JOIN JNULL2'
      *  ||
      *    '  ON C2 = D2'
      *    );
             CALL "SUB117" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB118" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB119" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "EXECUTE IMMEDIATE :longst;"
      *  EXEC SQL EXECUTE IMMEDIATE :longst;
             CALL "SUB120" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB121" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB122" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'CREATE VIEW JNULL4 AS' ||
      *    '  SELECT D1, D2 AS C2 FROM JNULL2'
      *    );
             CALL "SUB123" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB124" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB125" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "EXECUTE IMMEDIATE :longst;"
      *  EXEC SQL EXECUTE IMMEDIATE :longst;
             CALL "SUB126" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB127" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB128" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'CREATE VIEW JNULL5 AS' ||
      *    '  SELECT C1, D1, C2 FROM JNULL1 RIGHT OUTER JOIN JNULL4'
      *  ||
      *    '  USING (C2)'
      *    );
             CALL "SUB129" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB130" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB131" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "EXECUTE IMMEDIATE :longst;"
      *  EXEC SQL EXECUTE IMMEDIATE :longst;
             CALL "SUB132" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB133" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB134" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'CREATE VIEW JNULL6 AS' ||
      *    '  SELECT * FROM JNULL1 LEFT OUTER JOIN JNULL4' ||
      *    '  USING (C2)'
      *    );
             CALL "SUB135" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB136" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB137" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "EXECUTE IMMEDIATE :longst;"
      *  EXEC SQL EXECUTE IMMEDIATE :longst;
             CALL "SUB138" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB139" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "dstmt=""INSERT INTO JNULL1 VALUES (NULL, NULL)"""
             MOVE "INSERT INTO JNULL1 VALUES (NULL, NULL) "
             TO dstmt

             DISPLAY "EXECUTE IMMEDIATE :dstmt;"
      *  EXEC SQL EXECUTE IMMEDIATE :dstmt;
             CALL "SUB140" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "dstmt=""INSERT INTO JNULL1 VALUES (1, NULL)"""
             MOVE "INSERT INTO JNULL1 VALUES (1, NULL) "
             TO dstmt

             DISPLAY "EXECUTE IMMEDIATE :dstmt;"
      *  EXEC SQL EXECUTE IMMEDIATE :dstmt;
             CALL "SUB141" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "dstmt=""INSERT INTO JNULL1 VALUES (NULL, 1)"""
             MOVE "INSERT INTO JNULL1 VALUES (NULL, 1) "
             TO dstmt

             DISPLAY "EXECUTE IMMEDIATE :dstmt;"
      *  EXEC SQL EXECUTE IMMEDIATE :dstmt;
             CALL "SUB142" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "dstmt=""INSERT INTO JNULL1 VALUES (1, 1)"""
             MOVE "INSERT INTO JNULL1 VALUES (1, 1) "
             TO dstmt

             DISPLAY "EXECUTE IMMEDIATE :dstmt;"
      *  EXEC SQL EXECUTE IMMEDIATE :dstmt;
             CALL "SUB143" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "dstmt=""INSERT INTO JNULL1 VALUES (2, 2)"""
             MOVE "INSERT INTO JNULL1 VALUES (2, 2) "
             TO dstmt

             DISPLAY "EXECUTE IMMEDIATE :dstmt;"
      *  EXEC SQL EXECUTE IMMEDIATE :dstmt;
             CALL "SUB144" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "dstmt=""SELECT COUNT(*) FROM JNULL3"""
             MOVE "SELECT COUNT(*) FROM JNULL3
      -    " " TO dstmt

             DISPLAY "PREPARE S11321 FROM :dstmt;"
      *  EXEC SQL PREPARE S11321 FROM :dstmt;
             CALL "SUB145" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C11321 CURSOR FOR S11321;"
      *  EXEC SQL DECLARE C11321 CURSOR FOR S11321 END-EXEC
             DISPLAY  " "

             DISPLAY "OPEN C11321;"
      *  EXEC SQL OPEN C11321;
             CALL "SUB146" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "FETCH C11321 INTO :int1;"
      *  EXEC SQL FETCH C11321 INTO :int1;
             CALL "SUB147" USING SQLCODE SQLSTATE int1
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 5; its value is ", int1
             if (int1  NOT =  5) then
               MOVE 0 TO flag
             END-IF

             DISPLAY "CLOSE C11321;"
      *  EXEC SQL CLOSE C11321;
             CALL "SUB148" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB149" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'SELECT COUNT(*) FROM JNULL3' ||
      *    '  WHERE D2 IS NOT NULL OR D1 IS NOT NULL'
      *    );
             CALL "SUB150" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB151" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "PREPARE S11322 FROM :longst;"
      *  EXEC SQL PREPARE S11322 FROM :longst;
             CALL "SUB152" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C11322 CURSOR FOR S11322;"
      *  EXEC SQL DECLARE C11322 CURSOR FOR S11322 END-EXEC
             DISPLAY  " "

             DISPLAY "OPEN C11322;"
      *  EXEC SQL OPEN C11322;
             CALL "SUB153" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "FETCH C11322 INTO :int1;"
      *  EXEC SQL FETCH C11322 INTO :int1;
             CALL "SUB154" USING SQLCODE SQLSTATE int1
             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

             DISPLAY "CLOSE C11322;"
      *  EXEC SQL CLOSE C11322;
             CALL "SUB155" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB156" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'SELECT COUNT(*) FROM' ||
      *    '  JNULL5'
      *    );
             CALL "SUB157" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB158" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "PREPARE S11323 FROM :longst;"
      *  EXEC SQL PREPARE S11323 FROM :longst;
             CALL "SUB159" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C11323 CURSOR FOR S11323;"
      *  EXEC SQL DECLARE C11323 CURSOR FOR S11323 END-EXEC
             DISPLAY  " "

             DISPLAY "OPEN C11323;"
      *  EXEC SQL OPEN C11323;
             CALL "SUB160" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "FETCH C11323 INTO :int1;"
      *  EXEC SQL FETCH C11323 INTO :int1;
             CALL "SUB161" USING SQLCODE SQLSTATE int1
             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

             DISPLAY "CLOSE C11323;"
      *  EXEC SQL CLOSE C11323;
             CALL "SUB162" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB163" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'SELECT COUNT(*) FROM' ||
      *    '  JNULL6' ||
      *    '   WHERE C2 IS NOT NULL'
      *    );
             CALL "SUB164" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB165" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "PREPARE S11324 FROM :longst;"
      *  EXEC SQL PREPARE S11324 FROM :longst;
             CALL "SUB166" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C11324 CURSOR FOR S11324;"
      *  EXEC SQL DECLARE C11324 CURSOR FOR S11324 END-EXEC
             DISPLAY  " "

             DISPLAY "OPEN C11324;"
      *  EXEC SQL OPEN C11324;
             CALL "SUB167" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "FETCH C11324 INTO :int1;"
      *  EXEC SQL FETCH C11324 INTO :int1;
             CALL "SUB168" USING SQLCODE SQLSTATE int1
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 3; its value is ", int1
             if (int1  NOT =  3) then
               MOVE 0 TO flag
             END-IF

             DISPLAY "CLOSE C11324;"
      *  EXEC SQL CLOSE C11324;
             CALL "SUB169" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *Nonempty table 

             DISPLAY "dstmt=""INSERT INTO JNULL2 SELECT * FROM JNULL1"""
             MOVE "INSERT INTO JNULL2 SELECT * FROM JNULL1
      -    " " TO dstmt

             DISPLAY "EXECUTE IMMEDIATE :dstmt;"
      *  EXEC SQL EXECUTE IMMEDIATE :dstmt;
             CALL "SUB170" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "dstmt=""UPDATE JNULL2 SET D2 = 1 WHERE D2 = 2"""
             MOVE "UPDATE JNULL2 SET D2 = 1 WHERE D2 = 2 "
             TO dstmt

             DISPLAY "EXECUTE IMMEDIATE :dstmt;"
      *  EXEC SQL EXECUTE IMMEDIATE :dstmt;
             CALL "SUB171" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "OPEN C11321;"
      *  EXEC SQL OPEN C11321;
             CALL "SUB146" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "FETCH C11321 INTO :int1;"
      *  EXEC SQL FETCH C11321 INTO :int1;
             CALL "SUB173" USING SQLCODE SQLSTATE int1
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 9; its value is ", int1
             if (int1  NOT =  9) then
               MOVE 0 TO flag
             END-IF

             DISPLAY "CLOSE C11321;"
      *  EXEC SQL CLOSE C11321;
             CALL "SUB174" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "dstmt=""SELECT COUNT(*) FROM JNULL3 WHERE C1 IS
      -    " NULL"""
             MOVE "SELECT COUNT(*) FROM JNULL3 WHERE C1 IS
      -    " NULL " TO dstmt

             DISPLAY "PREPARE S11325 FROM :dstmt;"
      *  EXEC SQL PREPARE S11325 FROM :dstmt;
             CALL "SUB175" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C11325 CURSOR FOR S11325;"
      *  EXEC SQL DECLARE C11325 CURSOR FOR S11325 END-EXEC
             DISPLAY  " "

             DISPLAY "OPEN C11325;"
      *  EXEC SQL OPEN C11325;
             CALL "SUB176" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "FETCH C11325 INTO :int1;"
      *  EXEC SQL FETCH C11325 INTO :int1;
             CALL "SUB177" USING SQLCODE SQLSTATE int1
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 4; its value is ", int1
             if (int1  NOT =  4) then
               MOVE 0 TO flag
             END-IF

             DISPLAY "CLOSE C11325;"
      *  EXEC SQL CLOSE C11325;
             CALL "SUB178" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "dstmt=""SELECT COUNT(*) FROM JNULL3 WHERE D1 IS
      -    " NULL"""
             MOVE "SELECT COUNT(*) FROM JNULL3 WHERE D1 IS
      -    " NULL " TO dstmt

             DISPLAY "PREPARE S11326 FROM :dstmt;"
      *  EXEC SQL PREPARE S11326 FROM :dstmt;
             CALL "SUB179" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C11326 CURSOR FOR S11326;"
      *  EXEC SQL DECLARE C11326 CURSOR FOR S11326 END-EXEC
             DISPLAY  " "

             DISPLAY "OPEN C11326;"
      *  EXEC SQL OPEN C11326;
             CALL "SUB180" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "FETCH C11326 INTO :int1;"
      *  EXEC SQL FETCH C11326 INTO :int1;
             CALL "SUB181" USING SQLCODE SQLSTATE int1
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 5; its value is ", int1
             if (int1  NOT =  5) then
               MOVE 0 TO flag
             END-IF

             DISPLAY "CLOSE C11326;"
      *  EXEC SQL CLOSE C11326;
             CALL "SUB182" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "dstmt=""SELECT COUNT(*) FROM JNULL3 WHERE D2 IS
      -    " NULL"""
             MOVE "SELECT COUNT(*) FROM JNULL3 WHERE D2 IS
      -    " NULL " TO dstmt

             DISPLAY "PREPARE S11327 FROM :dstmt;"
      *  EXEC SQL PREPARE S11327 FROM :dstmt;
             CALL "SUB183" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C11327 CURSOR FOR S11327;"
      *  EXEC SQL DECLARE C11327 CURSOR FOR S11327 END-EXEC
             DISPLAY  " "

             DISPLAY "OPEN C11327;"
      *  EXEC SQL OPEN C11327;
             CALL "SUB184" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "FETCH C11327 INTO :int1;"
      *  EXEC SQL FETCH C11327 INTO :int1;
             CALL "SUB185" USING SQLCODE SQLSTATE int1
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 3; its value is ", int1
             if (int1  NOT =  3) then
               MOVE 0 TO flag
             END-IF

             DISPLAY "CLOSE C11327;"
      *  EXEC SQL CLOSE C11327;
             CALL "SUB186" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "dstmt=""SELECT AVG(D1) * 10 FROM JNULL3"""
             MOVE "SELECT AVG(D1) * 10 FROM JNULL3
      -    " " TO dstmt

             DISPLAY "PREPARE S11328 FROM :dstmt;"
      *  EXEC SQL PREPARE S11328 FROM :dstmt;
             CALL "SUB187" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C11328 CURSOR FOR S11328;"
      *  EXEC SQL DECLARE C11328 CURSOR FOR S11328 END-EXEC
             DISPLAY  " "

             DISPLAY "OPEN C11328;"
      *  EXEC SQL OPEN C11328;
             CALL "SUB188" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be >= 0; its value is ", SQL-COD
             if (SQLCODE  <  0) then
               MOVE 0 TO flag
             END-IF
             DISPLAY "SQLSTATE can be 00000 or 01003; its value is ",
             SQLSTATE
           PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (NORMSQ  NOT  =   "00000"  AND  SQLSTATE  NOT  =  
             "01003"then
               MOVE 0 TO flag
             END-IF
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "FETCH C11328 INTO :int1;"
      *  EXEC SQL FETCH C11328 INTO :int1;
             CALL "SUB189" USING SQLCODE SQLSTATE int1
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be >= 0; its value is ", SQL-COD
             if (SQLCODE  <  0) then
               MOVE 0 TO flag
             END-IF
             DISPLAY "SQLSTATE can be 00000 or 01003; its value is ",
             SQLSTATE
           PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (NORMSQ  NOT  =   "00000"  AND  SQLSTATE  NOT  =  
             "01003"then
               MOVE 0 TO flag
             END-IF
             DISPLAY "int1 should be 15; its value is ", int1
             if (int1  NOT =  15) then
               MOVE 0 TO flag
             END-IF

             DISPLAY "CLOSE C11328;"
      *  EXEC SQL CLOSE C11328;
             CALL "SUB190" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB191" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'SELECT COUNT(*)' ||
      *    '  FROM JNULL6' ||
      *    '   WHERE C2 = 1'
      *    );
             CALL "SUB192" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB193" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "PREPARE S11329 FROM :longst;"
      *  EXEC SQL PREPARE S11329 FROM :longst;
             CALL "SUB194" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C11329 CURSOR FOR S11329;"
      *  EXEC SQL DECLARE C11329 CURSOR FOR S11329 END-EXEC
             DISPLAY  " "

             DISPLAY "OPEN C11329;"
      *  EXEC SQL OPEN C11329;
             CALL "SUB195" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "FETCH C11329 INTO :int1;"
      *  EXEC SQL FETCH C11329 INTO :int1;
             CALL "SUB196" USING SQLCODE SQLSTATE int1
             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

             DISPLAY "CLOSE C11329;"
      *  EXEC SQL CLOSE C11329;
             CALL "SUB197" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB198" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'SELECT COUNT(*)' ||
      *    '  FROM JNULL6' ||
      *    '   WHERE C2 IS NULL'
      *    );
             CALL "SUB199" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB200" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "PREPARE S1132A FROM :longst;"
      *  EXEC SQL PREPARE S1132A FROM :longst;
             CALL "SUB201" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C1132A CURSOR FOR S1132A;"
      *  EXEC SQL DECLARE C1132A CURSOR FOR S1132A END-EXEC
             DISPLAY  " "

             DISPLAY "OPEN C1132A;"
      *  EXEC SQL OPEN C1132A;
             CALL "SUB202" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "FETCH C1132A INTO :int1;"
      *  EXEC SQL FETCH C1132A INTO :int1;
             CALL "SUB203" USING SQLCODE SQLSTATE int1
             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

             DISPLAY "CLOSE C1132A;"
      *  EXEC SQL CLOSE C1132A;
             CALL "SUB204" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB205" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'SELECT COUNT(*)' ||
      *    '  FROM JNULL6' ||
      *    '   WHERE C2 = C1 AND' ||
      *    '  D1 IS NULL'
      *    );
             CALL "SUB206" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB207" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "PREPARE S1132B FROM :longst;"
      *  EXEC SQL PREPARE S1132B FROM :longst;
             CALL "SUB208" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C1132B CURSOR FOR S1132B;"
      *  EXEC SQL DECLARE C1132B CURSOR FOR S1132B END-EXEC
             DISPLAY  " "

             DISPLAY "OPEN C1132B;"
      *  EXEC SQL OPEN C1132B;
             CALL "SUB209" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "FETCH C1132B INTO :int1;"
      *  EXEC SQL FETCH C1132B INTO :int1;
             CALL "SUB210" USING SQLCODE SQLSTATE int1
             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

             DISPLAY "CLOSE C1132B;"
      *  EXEC SQL CLOSE C1132B;
             CALL "SUB211" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB212" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "dstmt=""DROP TABLE JNULL1 CASCADE"""
             MOVE "DROP TABLE JNULL1 CASCADE "
             TO dstmt

             DISPLAY "EXECUTE IMMEDIATE :dstmt;"
      *  EXEC SQL EXECUTE IMMEDIATE :dstmt;
             CALL "SUB213" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB214" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "dstmt=""DROP TABLE JNULL2 CASCADE"""
             MOVE "DROP TABLE JNULL2 CASCADE "
             TO dstmt

             DISPLAY "EXECUTE IMMEDIATE :dstmt;"
      *  EXEC SQL EXECUTE IMMEDIATE :dstmt;
             CALL "SUB215" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB216" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

           PERFORM CHCKOK
             DISPLAY  " "

             if ( flag  =  1 ) then
               DISPLAY " *** pass *** "
      *    EXEC SQL INSERT INTO HU.TESTREPORT
      *      VALUES('0624','pass','MCO');
               CALL "SUB217" USING SQLCODE SQLSTATE
               MOVE SQLCODE TO SQL-COD
             else
               DISPLAY " dml113.sco *** fail *** "
      *    EXEC SQL INSERT INTO HU.TESTREPORT
      *      VALUES('0624','fail','MCO');
               CALL "SUB218" USING SQLCODE SQLSTATE
               MOVE SQLCODE TO SQL-COD
               COMPUTE errcnt = errcnt + 1
             END-IF

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

      *  EXEC SQL COMMIT WORK;
             CALL "SUB219" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      ******************** END TEST0624 ********************
      ******************** BEGIN TEST0626 *******************
             MOVE 1 TO flag

             DISPLAY " TEST0626 "
             DISPLAY " ADD COLUMN and DROP COLUMN (dynamic)"
--> --------------------

--> maximum size reached

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

¤ Dauer der Verarbeitung: 0.122 Sekunden  (vorverarbeitet)  ¤





vermutete Sprache:
Sekunden
vermutete Sprache:
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