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: xts750.cob   Sprache: Cobol

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


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


      ****************************************************************
      *                                                              
      *                 COMMENT SECTION                              
      *                                                              
      * DATE 1994/6/20 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.
      *                                                              
      * DML124.SCO                                                    
      * WRITTEN BY:  David W. Flater                                 
      * TRANSLATED AUTOMATICALLY FROM EMBEDDED COBOL BY CHRIS SCHANZLE
      * Bug fixes & stronger pass criteria by Joan Sullivan 2/27/95  
      * Corrected in accordance with X3H2-95-105 5/9/95              
      *                                                              
      * This routine tests SQL descriptors, which is a feature of    
      * Dynamic SQL.                                                 
      *                                                              
      * 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  int3 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  int4 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  int5 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  int6 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  int7 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  flt1 PIC S9(4)V9(4) DISPLAY SIGN LEADING SEPARATE.
      *    OK to change the precision of smint1 to match SMALLINT
       01  smint1 PIC S9(2) BINARY.
      *    OK to change the precision of bin2 to match SMALLINT
       01  bin2 PIC S9(2) BINARY.
      *    OK to change the precision of bin9 to match INTEGER
       01  bin9 PIC S9(9) BINARY.
       01  dstmt PIC  X(50).
       01  longst PIC  X(240).
       01  cname PIC  X(20).
       01  indic1 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  c2 PIC  X(2).
       01  c4 PIC  X(4).
       01  c6 PIC  X(6).
       01  c7 PIC  X(7).
      *  EXEC SQL END DECLARE SECTION END-EXEC
       01  FLT-1  PIC -(5).9999.
       01  BIN-1  PIC -(5).
       01  intprc PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  relprc PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       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 "HU " 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, dml124.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

      *This test was converted from a FLATER test to a HU test.  We 
      *need CONCATBUF. 
             DISPLAY "CREATE TABLE CONCATBUF (ZZ CHAR(240));"
      *  EXEC SQL CREATE TABLE CONCATBUF (ZZ CHAR(240));
             CALL "SUB3" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB4" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

      ******************** BEGIN TEST0653 *******************
             MOVE 1 TO flag

             DISPLAY " TEST0653 "
             DISPLAY " Descriptors: DESCRIBE OUTPUT"
             DISPLAY "References:"
             DISPLAY " F# 1 -- Dynamic SQL"
             DISPLAY " 17.8 -- "
             DISPLAY " 17.1 -- Description of SQL item descriptor
      -    " areas"
             DISPLAY " 17.2 GR.3 -- limit on descriptor areas is"
             DISPLAY " implementation-defined"
             DISPLAY " 7.9 SR.10 -- nullability"
             DISPLAY " 6.1 -- "
             DISPLAY " - - - - - - - - - - - - - - - - - - -"

             COMPUTE SQLCODE = -1
             MOVE "xxxxx" TO SQLSTATE

             DISPLAY "CREATE TABLE CACHESTAT ("
             DISPLAY " HIT_RATIO FLOAT (17) NOT NULL,"
             DISPLAY " FRAGMENTATION_PCT FLOAT);"
      *  EXEC SQL CREATE TABLE CACHESTAT (
      *    HIT_RATIO FLOAT (17) NOT NULL,
      *    FRAGMENTATION_PCT FLOAT);
             CALL "SUB5" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

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

             DISPLAY "CREATE VIEW COMBINATIONS (INTTEST,"
             DISPLAY " REALTEST, SMALLTEST, DOUBLETEST, NUMTEST,"
             DISPLAY " DECTEST) AS SELECT * FROM HU.EE, HU.GG, HU.HH,"
             DISPLAY " HU.II, HU.LL, HU.PP;"
      *  EXEC SQL CREATE VIEW COMBINATIONS (INTTEST,
      *    REALTEST, SMALLTEST, DOUBLETEST, NUMTEST,
      *    DECTEST) AS SELECT * FROM HU.EE, HU.GG, HU.HH,
      *    HU.II, HU.LL, HU.PP;
             CALL "SUB7" USING SQLCODE SQLSTATE
             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  " "

             DISPLAY "ALLOCATE DESCRIPTOR 'D12411' WITH MAX 8;"
      *  EXEC SQL ALLOCATE DESCRIPTOR 'D12411' WITH MAX 8;
             CALL "SUB9" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             if (SQLSTATE   =   "07009")  then
               DISPLAY "Received SQLSTATE 07009!"
               DISPLAY "This test must be rewritten by NIST (in the
      -    " event of"
               DISPLAY "a validation) to accomodate
      -    " implementation-defined"
               DISPLAY "limit on ."
             END-IF
             DISPLAY  " "

             DISPLAY "dstmt=""SELECT * FROM HU.STAFF"""
             MOVE "SELECT * FROM HU.STAFF
      -    " " TO dstmt

             DISPLAY "PREPARE S12411 FROM :dstmt;"
      *  EXEC SQL PREPARE S12411 FROM :dstmt;
             CALL "SUB10" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DESCRIBE OUTPUT S12411 USING SQL DESCRIPTOR
      -    " 'D12411';"
      *  EXEC SQL DESCRIBE OUTPUT S12411 USING SQL DESCRIPTOR
      *  'D12411';
             CALL "SUB11" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "GET DESCRIPTOR 'D12411' :int1 = COUNT;"
      *  EXEC SQL GET DESCRIPTOR 'D12411' :int1 = COUNT;
             CALL "SUB12" 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

      *CHARACTER_SET_* and COLLATION_* are orphaned features 

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             COMPUTE int3 = -1
             COMPUTE int4 = -1
             COMPUTE int5 = -1
             MOVE "xxxxxxxxxxxxxxxxxxxx" TO cname

             DISPLAY "GET DESCRIPTOR 'D12411' VALUE 1"
             DISPLAY " :int1 = TYPE, :int2 = NULLABLE, :int3 =
      -    " UNNAMED,"
             DISPLAY " :cname = NAME, :int4 = LENGTH, :int5 =
      -    " OCTET_LENGTH;"
      *  EXEC SQL GET DESCRIPTOR 'D12411' VALUE 1
      *    :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
      *    :cname = NAME, :int4 = LENGTH, :int5 = OCTET_LENGTH
      * ;
             CALL "SUB13" USING SQLCODE SQLSTATE
                int1 int2 int3 cname int4 int5
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 1 (CHARACTER); its value is ", int1
             DISPLAY "int2 should be 0 (NOT NULL); its value is ", int2
             DISPLAY "int3 should be 0 (named); its value is ", int3
             DISPLAY "cname should be 'EMPNUM '; its value
      -    " is '", cname "'"
             DISPLAY "int4 should be 3; its value is ", int4
             DISPLAY "int5 should be > 2; its value is ", int5
             if (int1  NOT =  1  OR  int2  NOT =  0  OR  int3  NOT =  0)
             then
               MOVE 0 TO flag
             END-IF
             if (int4  NOT =  3  OR  int5  NOT >  2) then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "EMPNUM "then
               MOVE 0 TO flag
             END-IF

             COMPUTE bin9 = -1
             COMPUTE int2 = -1
             COMPUTE bin2 = -1
             COMPUTE int4 = -1
             COMPUTE int5 = -1
             MOVE "xxxxxxxxxxxxxxxxxxxx" TO cname

             DISPLAY "GET DESCRIPTOR 'D12411' VALUE 2"
             DISPLAY " :bin9 = TYPE, :int2 = NULLABLE, :bin2 =
      -    " UNNAMED,"
             DISPLAY " :cname = NAME, :int4 = LENGTH, :int5 =
      -    " OCTET_LENGTH;"
      *  EXEC SQL GET DESCRIPTOR 'D12411' VALUE 2
      *    :bin9 = TYPE, :int2 = NULLABLE, :bin2 = UNNAMED,
      *    :cname = NAME, :int4 = LENGTH, :int5 = OCTET_LENGTH
      * ;
             CALL "SUB14" USING SQLCODE SQLSTATE
                bin9 int2 bin2 cname int4 int5
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             MOVE bin9 TO BIN-1
             DISPLAY "bin9 should be 1 (CHARACTER); its value is " BIN-1
             DISPLAY "int2 should be 1 (NULLABLE); its value is ", int2
             MOVE bin2 TO BIN-1
             DISPLAY "bin2 should be 0 (named); its value is ", BIN-1
             DISPLAY "cname should be 'EMPNAME '; its value
      -    " is '", cname "'"
             DISPLAY "int4 should be 20; its value is ", int4
             DISPLAY "int5 should be > 14; its value is ", int5
             if (bin9  NOT =  1  OR  int2  NOT =  1  OR  bin2  NOT =  0)
             then
               MOVE 0 TO flag
             END-IF
             if (int4  NOT =  20  OR  int5  NOT >  14) then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "EMPNAME "then
               MOVE 0 TO flag
             END-IF

             COMPUTE bin2 = -1
             COMPUTE int2 = -1
             COMPUTE bin9 = -1
             COMPUTE int4 = -1
             COMPUTE int5 = -1
             MOVE "xxxxxxxxxxxxxxxxxxxx" TO cname

             DISPLAY "GET DESCRIPTOR 'D12411' VALUE 3"
             DISPLAY " :bin2 = TYPE, :int2 = NULLABLE, :bin9 =
      -    " UNNAMED,"
             DISPLAY " :cname = NAME, :int4 = PRECISION, :int5 =
      -    " SCALE;"
      *  EXEC SQL GET DESCRIPTOR 'D12411' VALUE 3
      *    :bin2 = TYPE, :int2 = NULLABLE, :bin9 = UNNAMED,
      *    :cname = NAME, :int4 = PRECISION, :int5 = SCALE;
             CALL "SUB15" USING SQLCODE SQLSTATE
                bin2 int2 bin9 cname int4 int5
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             MOVE bin2 TO BIN-1
             DISPLAY "bin2 should be 3 (DECIMAL); its value is ", BIN-1
             DISPLAY "int2 should be 1 (NULLABLE); its value is ", int2
             MOVE bin9 TO BIN-1
             DISPLAY "bin9 should be 0 (named); its value is ", BIN-1
             DISPLAY "cname should be 'GRADE '; its value
      -    " is '", cname "'"
             DISPLAY "int4 should be >= 4; its value is ", int4
             DISPLAY "int5 should be 0; its value is ", int5
             if (bin2  NOT =  3  OR  int2  NOT =  1  OR  bin9  NOT =  0)
             then
               MOVE 0 TO flag
             END-IF
             if (int4  <  4  OR  int5  NOT =  0) then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "GRADE "then
               MOVE 0 TO flag
             END-IF

             DISPLAY "GET DESCRIPTOR 'D12411' VALUE 4"
             DISPLAY " :int1 = TYPE, :int2 = NULLABLE, :bin2 =
      -    " UNNAMED,"
             DISPLAY " :cname = NAME, :bin9 = LENGTH, :int5 =
      -    " OCTET_LENGTH;"
      *  EXEC SQL GET DESCRIPTOR 'D12411' VALUE 4
      *    :int1 = TYPE, :int2 = NULLABLE, :bin2 = UNNAMED,
      *    :cname = NAME, :bin9 = LENGTH, :int5 = OCTET_LENGTH
      * ;
             CALL "SUB16" USING SQLCODE SQLSTATE
                int1 int2 bin2 cname bin9 int5
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 1 (CHARACTER); its value is ", int1
             DISPLAY "int2 should be 1 (NULLABLE); its value is ", int2
             MOVE bin2 TO BIN-1
             DISPLAY "bin2 should be 0 (named); its value is ", BIN-1
             DISPLAY "cname should be 'CITY '; its value
      -    " is '", cname "'"
             MOVE bin9 TO BIN-1
             DISPLAY "bin9 should be 15; its value is ", BIN-1
             DISPLAY "int5 should be > 11; its value is ", int5
             if (int1  NOT =  1  OR  int2  NOT =  1  OR  bin2  NOT =  0)
             then
               MOVE 0 TO flag
             END-IF
             if (bin9  NOT =  15  OR  int5  NOT >  11) then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "CITY "then
               MOVE 0 TO flag
             END-IF

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB17" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'SELECT * FROM CACHESTAT, COMBINATIONS' ||
      *    '  WHERE HIT_RATIO < .97'
      *    );
             CALL "SUB18" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL SELECT ZZ INTO :longst FROM CONCATBUF;
             CALL "SUB19" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY "PREPARE S12412 FROM :longst;"
      *  EXEC SQL PREPARE S12412 FROM :longst;
             CALL "SUB20" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DESCRIBE S12412 USING SQL DESCRIPTOR 'D12411';"
      *  EXEC SQL DESCRIBE S12412 USING SQL DESCRIPTOR 'D12411'
      * ;
             CALL "SUB21" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "GET DESCRIPTOR 'D12411' :int1 = COUNT;"
      *  EXEC SQL GET DESCRIPTOR 'D12411' :int1 = COUNT;
             CALL "SUB22" USING SQLCODE SQLSTATE int1
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 8; its value is ", int1
             if (int1  NOT =  8) then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             COMPUTE int3 = -1
             COMPUTE int4 = -1
             MOVE "xxxxxxxxxxxxxxxxxxxx" TO cname

             DISPLAY "GET DESCRIPTOR 'D12411' VALUE 1"
             DISPLAY " :int1 = TYPE, :int2 = NULLABLE, :int3 =
      -    " UNNAMED,"
             DISPLAY " :cname = NAME, :int4 = PRECISION;"
      *  EXEC SQL GET DESCRIPTOR 'D12411' VALUE 1
      *    :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
      *    :cname = NAME, :int4 = PRECISION;
             CALL "SUB23" USING SQLCODE SQLSTATE
                int1 int2 int3 cname int4
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 6 (FLOAT); its value is ", int1
             DISPLAY "int2 should be 0 (NOT NULL); its value is ", int2
             DISPLAY "int3 should be 0 (named); its value is ", int3
             DISPLAY "cname should be 'HIT_RATIO '; its value
      -    " is '", cname "'"
             DISPLAY "int4 should be > 0; its value is ", int4
             if (int1  NOT =  6  OR  int2  NOT =  0  OR  int3  NOT =  0)
             then
               MOVE 0 TO flag
             END-IF
             if (int4  NOT >  0) then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "HIT_RATIO "then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             COMPUTE int3 = -1
             COMPUTE int4 = -1
             MOVE "xxxxxxxxxxxxxxxxxxxx" TO cname

             DISPLAY "GET DESCRIPTOR 'D12411' VALUE 2"
             DISPLAY " :int1 = TYPE, :int2 = NULLABLE, :int3 =
      -    " UNNAMED,"
             DISPLAY " :cname = NAME, :int4 = PRECISION;"
      *  EXEC SQL GET DESCRIPTOR 'D12411' VALUE 2
      *    :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
      *    :cname = NAME, :int4 = PRECISION;
             CALL "SUB24" USING SQLCODE SQLSTATE
                int1 int2 int3 cname int4
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 6 (FLOAT); its value is ", int1
             DISPLAY "int2 should be 1 (NULLABLE); its value is ", int2
             DISPLAY "int3 should be 0 (named); its value is ", int3
             DISPLAY "cname should be 'FRAGMENTATION_PCT '; its value
      -    " is '", cname "'"
             DISPLAY "int4 should be > 0; its value is ", int4
             if (int1  NOT =  6  OR  int2  NOT =  1  OR  int3  NOT =  0)
             then
               MOVE 0 TO flag
             END-IF
             if (int4  <  1) then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "FRAGMENTATION_PCT "then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             COMPUTE int3 = -1
             COMPUTE int4 = -1
             COMPUTE int5 = -1
             MOVE "xxxxxxxxxxxxxxxxxxxx" TO cname

             DISPLAY "GET DESCRIPTOR 'D12411' VALUE 3"
             DISPLAY " :int1 = TYPE, :int2 = NULLABLE, :int3 =
      -    " UNNAMED,"
             DISPLAY " :cname = NAME, :int4 = PRECISION, :int5 =
      -    " SCALE;"
      *  EXEC SQL GET DESCRIPTOR 'D12411' VALUE 3
      *    :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
      *    :cname = NAME, :int4 = PRECISION, :int5 = SCALE;
             CALL "SUB25" USING SQLCODE SQLSTATE
                int1 int2 int3 cname int4 int5
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 4 (INTEGER); its value is ", int1
             DISPLAY "int2 should be 1 (NULLABLE); its value is ", int2
             DISPLAY "int3 should be 0 (named); its value is ", int3
             DISPLAY "cname should be 'INTTEST '; its value
      -    " is '", cname "'"
             DISPLAY "int4 should be > 0; its value is ", int4
             DISPLAY "int5 should be 0; its value is ", int5
             if (int1  NOT =  4  OR  int2  NOT =  1  OR  int3  NOT =  0)
             then
               MOVE 0 TO flag
             END-IF
             if (int4  <  1  OR  int5  NOT =  0) then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "INTTEST "then
               MOVE 0 TO flag
             END-IF
             MOVE int4 TO intprc

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             COMPUTE int3 = -1
             COMPUTE int4 = -1
             MOVE "xxxxxxxxxxxxxxxxxxxx" TO cname

             DISPLAY "GET DESCRIPTOR 'D12411' VALUE 4"
             DISPLAY " :int1 = TYPE, :int2 = NULLABLE, :int3 =
      -    " UNNAMED,"
             DISPLAY " :cname = NAME, :int4 = PRECISION;"
      *  EXEC SQL GET DESCRIPTOR 'D12411' VALUE 4
      *    :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
      *    :cname = NAME, :int4 = PRECISION;
             CALL "SUB26" USING SQLCODE SQLSTATE
                int1 int2 int3 cname int4
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 7 (REAL); its value is ", int1
             DISPLAY "int2 should be 1 (NULLABLE); its value is ", int2
             DISPLAY "int3 should be 0 (named); its value is ", int3
             DISPLAY "cname should be 'REALTEST '; its value
      -    " is '", cname "'"
             DISPLAY "int4 should be > 0; its value is ", int4
             if (int1  NOT =  7  OR  int2  NOT =  1  OR  int3  NOT =  0)
             then
               MOVE 0 TO flag
             END-IF
             if (int4  <  1) then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "REALTEST "then
               MOVE 0 TO flag
             END-IF
             MOVE int4 TO relprc

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             COMPUTE int3 = -1
             COMPUTE int4 = -1
             COMPUTE int5 = -1
             MOVE 5 TO int6
             DISPLAY "int6 = 5"
             MOVE "xxxxxxxxxxxxxxxxxxxx" TO cname

             DISPLAY "GET DESCRIPTOR 'D12411' VALUE :int6"
             DISPLAY " :int1 = TYPE, :int2 = NULLABLE, :int3 =
      -    " UNNAMED,"
             DISPLAY " :cname = NAME, :int4 = PRECISION, :int5 =
      -    " SCALE;"
      *  EXEC SQL GET DESCRIPTOR 'D12411' VALUE :int6
      *    :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
      *    :cname = NAME, :int4 = PRECISION, :int5 = SCALE;
             CALL "SUB27" USING SQLCODE SQLSTATE
                int6 int1 int2 int3 cname int4 int5
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 5 (SMALLINT); its value is ", int1
             DISPLAY "int2 should be 1 (NULLABLE); its value is ", int2
             DISPLAY "int3 should be 0 (named); its value is ", int3
             DISPLAY "cname should be 'SMALLTEST '; its value
      -    " is '", cname "'"
             DISPLAY "int4 should be 0 < int4 <= ", intprc "; its value
      -    " is ", int4
             DISPLAY "int5 should be 0; its value is ", int5
             if (int1  NOT =  4  OR  int2  NOT =  1  OR  int3  NOT =  0)
             then
               MOVE 0 TO flag
             END-IF
             if (int4  <  1  OR  int4  >  intprc  OR  int5  NOT =  0)
             then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "SMALLTEST "then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             COMPUTE int3 = -1
             COMPUTE int4 = -1
             MOVE "xxxxxxxxxxxxxxxxxxxx" TO cname

             DISPLAY "GET DESCRIPTOR 'D12411' VALUE 6"
             DISPLAY " :int1 = TYPE, :int2 = NULLABLE, :int3 =
      -    " UNNAMED,"
             DISPLAY " :cname = NAME, :int4 = PRECISION;"
      *  EXEC SQL GET DESCRIPTOR 'D12411' VALUE 6
      *    :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
      *    :cname = NAME, :int4 = PRECISION;
             CALL "SUB28" USING SQLCODE SQLSTATE
                int1 int2 int3 cname int4
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 8 (DOUBLE); its value is ", int1
             DISPLAY "int2 should be 1 (NULLABLE); its value is ", int2
             DISPLAY "int3 should be 0 (named); its value is ", int3
             DISPLAY "cname should be 'DOUBLETEST '; its value
      -    " is '", cname "'"
             DISPLAY "int4 should be > ", relprc "; its value is ", int4
             if (int1  NOT =  8  OR  int2  NOT =  1  OR  int3  NOT =  0)
             then
               MOVE 0 TO flag
             END-IF
             if (int4  <  1  OR  int4  NOT >  relprc) then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "DOUBLETEST "then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             COMPUTE int3 = -1
             COMPUTE int4 = -1
             COMPUTE int5 = -1
             MOVE "xxxxxxxxxxxxxxxxxxxx" TO cname

             DISPLAY "GET DESCRIPTOR 'D12411' VALUE 7"
             DISPLAY " :int1 = TYPE, :int2 = NULLABLE, :int3 =
      -    " UNNAMED,"
             DISPLAY " :cname = NAME, :int4 = PRECISION, :int5 =
      -    " SCALE;"
      *  EXEC SQL GET DESCRIPTOR 'D12411' VALUE 7
      *    :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
      *    :cname = NAME, :int4 = PRECISION, :int5 = SCALE;
             CALL "SUB29" USING SQLCODE SQLSTATE
                int1 int2 int3 cname int4 int5
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 2 (NUMERIC); its value is ", int1
             DISPLAY "int2 should be 1 (NULLABLE); its value is ", int2
             DISPLAY "int3 should be 0 (named); its value is ", int3
             DISPLAY "cname should be 'NUMTEST '; its value
      -    " is '", cname "'"
             DISPLAY "int4 should be 13; its value is ", int4
             DISPLAY "int5 should be 6; its value is ", int5
             if (int1  NOT =  2  OR  int2  NOT =  1  OR  int3  NOT =  0)
             then
               MOVE 0 TO flag
             END-IF
             if (int4  NOT =  13  OR  int5  NOT =  6) then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "NUMTEST "then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             COMPUTE int3 = -1
             COMPUTE int4 = -1
             COMPUTE int5 = -1
             MOVE "xxxxxxxxxxxxxxxxxxxx" TO cname

             DISPLAY "GET DESCRIPTOR 'D12411' VALUE 8"
             DISPLAY " :int1 = TYPE, :int2 = NULLABLE, :int3 =
      -    " UNNAMED,"
             DISPLAY " :cname = NAME, :int4 = PRECISION, :int5 =
      -    " SCALE;"
      *  EXEC SQL GET DESCRIPTOR 'D12411' VALUE 8
      *    :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
      *    :cname = NAME, :int4 = PRECISION, :int5 = SCALE;
             CALL "SUB30" USING SQLCODE SQLSTATE
                int1 int2 int3 cname int4 int5
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 3 (DECIMAL); its value is ", int1
             DISPLAY "int2 should be 1 (NULLABLE); its value is ", int2
             DISPLAY "int3 should be 0 (named); its value is ", int3
             DISPLAY "cname should be 'DECTEST '; its value
      -    " is '", cname "'"
             DISPLAY "int4 should be >= 13; its value is ", int4
             DISPLAY "int5 should be 6; its value is ", int5
             if (int1  NOT =  3  OR  int2  NOT =  1  OR  int3  NOT =  0)
             then
               MOVE 0 TO flag
             END-IF
             if (int4  <  13  OR  int5  NOT =  6) then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "DECTEST "then
               MOVE 0 TO flag
             END-IF

      *Unnamed columns 

             DISPLAY "dstmt=""SELECT USER, COUNT(*) FROM HU.ECCO"""
             MOVE "SELECT USER, COUNT(*) FROM HU.ECCO
      -    " " TO dstmt

             DISPLAY "PREPARE S12413 FROM :dstmt;"
      *  EXEC SQL PREPARE S12413 FROM :dstmt;
             CALL "SUB31" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DESCRIBE S12413 USING SQL DESCRIPTOR 'D12411';"
      *  EXEC SQL DESCRIBE S12413 USING SQL DESCRIPTOR 'D12411'
      * ;
             CALL "SUB32" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "GET DESCRIPTOR 'D12411' :int1 = COUNT;"
      *  EXEC SQL GET DESCRIPTOR 'D12411' :int1 = COUNT;
             CALL "SUB33" 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

      *Nullability of columns:  7.9 GR.10 

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             COMPUTE int3 = -1
             COMPUTE int4 = -1
             COMPUTE int5 = -1
             MOVE "xxxxxxxxxxxxxxxxxxxx" TO cname

             DISPLAY "GET DESCRIPTOR 'D12411' VALUE 1"
             DISPLAY " :int1 = TYPE, :int2 = NULLABLE, :int3 =
      -    " UNNAMED,"
             DISPLAY " :cname = NAME, :int4 = LENGTH, :int5 =
      -    " OCTET_LENGTH;"
      *  EXEC SQL GET DESCRIPTOR 'D12411' VALUE 1
      *    :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
      *    :cname = NAME, :int4 = LENGTH, :int5 = OCTET_LENGTH
      * ;
             CALL "SUB34" USING SQLCODE SQLSTATE
                int1 int2 int3 cname int4 int5
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 1 (CHARACTER); its value is ", int1
             DISPLAY "int2 should be 0 (NOT NULL); its value is ", int2
             DISPLAY "int3 should be 1 (unnamed); its value is ", int3
             DISPLAY "cname is '", cname "'"
             DISPLAY "int4 should be > 7; its value is ", int4
             DISPLAY "int5 should be > 4; its value is ", int5
             if (int1  NOT =  1  OR  int2  NOT =  0  OR  int3  NOT =  1)
             then
               MOVE 0 TO flag
             END-IF
             if (int4  NOT >  7  OR  int5  NOT >  4)  then
               DISPLAY "The correct values for int4 and int5 are
      -    " implementation-"
               DISPLAY "defined, but must be justified since they are
      -    " unexpectedly low."
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             COMPUTE int3 = -1
             COMPUTE int4 = -1
             COMPUTE int5 = -1
             MOVE "xxxxxxxxxxxxxxxxxxxx" TO cname

             DISPLAY "GET DESCRIPTOR 'D12411' VALUE 2"
             DISPLAY " :int1 = TYPE, :int2 = NULLABLE, :int3 =
      -    " UNNAMED,"
             DISPLAY " :cname = NAME, :int4 = PRECISION, :int5 =
      -    " SCALE;"
      *  EXEC SQL GET DESCRIPTOR 'D12411' VALUE 2
      *    :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
      *    :cname = NAME, :int4 = PRECISION, :int5 = SCALE;
             CALL "SUB35" USING SQLCODE SQLSTATE
                int1 int2 int3 cname int4 int5
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 2 <= int1 <= 5; its value is ",
             int1
             DISPLAY "int2 should be 0 (NOT NULL); its value is ", int2
             DISPLAY "int3 should be 1 (unnamed); its value is ", int3
             DISPLAY "cname is '", cname "'"
             DISPLAY "int4 should be > 0; its value is ", int4
             DISPLAY "int5 should be 0; its value is ", int5
             if (int1  <  2  OR  int1  >  5  OR  int2  NOT =  0) then
               MOVE 0 TO flag
             END-IF
             if (int3  NOT =  1  OR  int4  <  1  OR  int5  NOT =  0)
             then
               MOVE 0 TO flag
             END-IF

      *X3H2-95-103:  Question marks are possibly nullable 
      *17.9 GR.3.e.iii  Unnamed columns 

      *  EXEC SQL DELETE FROM CONCATBUF;
             CALL "SUB36" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO CONCATBUF VALUES (
      *    'SELECT HIT_RATIO AS HR, FRAGMENTATION_PCT * ?' ||
      *    '  FROM CACHESTAT'
      *    );
             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 "PREPARE S12414 FROM :longst;"
      *  EXEC SQL PREPARE S12414 FROM :longst;
             CALL "SUB39" USING SQLCODE SQLSTATE longst
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DESCRIBE S12414 USING SQL DESCRIPTOR 'D12411';"
      *  EXEC SQL DESCRIBE S12414 USING SQL DESCRIPTOR 'D12411'
      * ;
             CALL "SUB40" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             MOVE "xxxxxxxxxxxxxxxxxxxx" TO cname
             DISPLAY "GET DESCRIPTOR 'D12411' VALUE 1"
             DISPLAY " :int1 = NULLABLE, :int2 = UNNAMED, :cname =
      -    " NAME;"
      *  EXEC SQL GET DESCRIPTOR 'D12411' VALUE 1
      *    :int1 = NULLABLE, :int2 = UNNAMED, :cname = NAME;
             CALL "SUB41" USING SQLCODE SQLSTATE
                int1 int2 cname
             MOVE SQLCODE TO SQL-COD
             DISPLAY "int1 should be 0 (NOT NULL); its value is ", int1
             DISPLAY "int2 should be 0 (named); its value is ", int2
             DISPLAY "cname should be 'HR '; its value
      -    " is '", cname "'"
             if (int1  NOT =  0  OR  int2  NOT =  0) then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "HR "then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             DISPLAY "GET DESCRIPTOR 'D12411' VALUE 2"
             DISPLAY " :int1 = NULLABLE, :int2 = UNNAMED;"
      *  EXEC SQL GET DESCRIPTOR 'D12411' VALUE 2
      *    :int1 = NULLABLE, :int2 = UNNAMED;
             CALL "SUB42" USING SQLCODE SQLSTATE int1 int2
             MOVE SQLCODE TO SQL-COD
             DISPLAY "int1 should be 1 (NULLABLE); its value is ", int1
             DISPLAY "int2 should be 1 (unnamed); its value is ", int2
             if (int1  NOT =  1  OR  int2  NOT =  1) then
               MOVE 0 TO flag
             END-IF

             DISPLAY "DEALLOCATE DESCRIPTOR 'D12411';"
      *  EXEC SQL DEALLOCATE DESCRIPTOR 'D12411';
             CALL "SUB43" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

           .
        P199.
             DISPLAY "ROLLBACK WORK;"
      *  EXEC SQL ROLLBACK WORK;
             CALL "SUB44" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DROP TABLE CACHESTAT CASCADE;"
      *  EXEC SQL DROP TABLE CACHESTAT CASCADE;
             CALL "SUB45" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

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

             DISPLAY "DROP VIEW COMBINATIONS CASCADE;"
      *  EXEC SQL DROP VIEW COMBINATIONS CASCADE;
             CALL "SUB47" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

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

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

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

      *  EXEC SQL COMMIT WORK;
             CALL "SUB51" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      ******************** END TEST0653 ********************
      ******************** BEGIN TEST0654 *******************
             MOVE 1 TO flag

             DISPLAY " TEST0654 "
             DISPLAY " Descriptors: INTO SQL DESCRIPTOR"
             DISPLAY "References:"
             DISPLAY " F# 1 -- Dynamic SQL"
             DISPLAY " 17.9 -- "
             DISPLAY " 17.8 -- "
             DISPLAY " 17.1 -- Description of SQL item descriptor
      -    " areas"
             DISPLAY " 17.2 GR.3 -- limit on descriptor areas is"
             DISPLAY " implementation-defined"
             DISPLAY " 6.1 -- "
             DISPLAY " - - - - - - - - - - - - - - - - - - -"

             COMPUTE SQLCODE = -1
             MOVE "xxxxx" TO SQLSTATE

             DISPLAY "CREATE TABLE BANKTAB ("
             DISPLAY " NAAM CHAR (10), BALANCE NUMERIC (7, 2),"
             DISPLAY " INTEREST DECIMAL (3, 2), TRANSACTIONS INT,"
             DISPLAY " PAYMENTS SMALLINT, INTEREST_RATE FLOAT,"
             DISPLAY " ANNUAL_YIELD REAL, FRACTIONAL_CENTS DOUBLE
      -    " PRECISION);"
      *  EXEC SQL CREATE TABLE BANKTAB (
      *    NAAM CHAR (10), BALANCE NUMERIC (7, 2),
      *    INTEREST DECIMAL (3, 2), TRANSACTIONS INT,
      *    PAYMENTS SMALLINT, INTEREST_RATE FLOAT,
      *    ANNUAL_YIELD REAL, FRACTIONAL_CENTS DOUBLE PRECISION)
      * ;
             CALL "SUB52" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

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

             DISPLAY "INSERT INTO BANKTAB VALUES ("
             DISPLAY " 'Bubba', 524.07, 2.42, 13, 1, 3.0, 3.1, -.256);"
      *  EXEC SQL INSERT INTO BANKTAB VALUES (
      *    'Bubba', 524.07, 2.42, 13, 1, 3.0, 3.1, -.256);
             CALL "SUB54" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *Allocate one extra occurrence 

             DISPLAY "ALLOCATE DESCRIPTOR 'D12421' WITH MAX 9;"
      *  EXEC SQL ALLOCATE DESCRIPTOR 'D12421' WITH MAX 9;
             CALL "SUB55" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             if (SQLSTATE   =   "07009")  then
               DISPLAY "Received SQLSTATE 07009!"
               DISPLAY "This test must be rewritten by NIST (in the
      -    " event of"
               DISPLAY "a validation) to accomodate
      -    " implementation-defined"
               DISPLAY "limit on ."
             END-IF
             DISPLAY  " "

             DISPLAY "dstmt=""SELECT * FROM BANKTAB"""
             MOVE "SELECT * FROM BANKTAB
      -    " " TO dstmt

             DISPLAY "PREPARE S12421 FROM :dstmt;"
      *  EXEC SQL PREPARE S12421 FROM :dstmt;
             CALL "SUB56" USING SQLCODE SQLSTATE dstmt
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DESCRIBE OUTPUT S12421 USING SQL DESCRIPTOR
      -    " 'D12421';"
      *  EXEC SQL DESCRIBE OUTPUT S12421 USING SQL DESCRIPTOR
      *  'D12421';
             CALL "SUB57" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *Doctor results of describe to "match" host language variables 
      *Implementation-dependent precisions, etc. 

             DISPLAY "SET DESCRIPTOR 'D12421' VALUE 1"
             DISPLAY " LENGTH = 20;"
      *  EXEC SQL SET DESCRIPTOR 'D12421' VALUE 1
      *    LENGTH = 20;
             CALL "SUB58" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *      TYPE is already 2
             DISPLAY "SET DESCRIPTOR 'D12421' VALUE 2"
             DISPLAY " PRECISION = 8, SCALE = 4;"
      *  EXEC SQL SET DESCRIPTOR 'D12421' VALUE 2
      *    PRECISION = 8, SCALE = 4;
             CALL "SUB59" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "SET DESCRIPTOR 'D12421' VALUE 3"
             DISPLAY " TYPE = 2, PRECISION = 8, SCALE = 4;"
      *  EXEC SQL SET DESCRIPTOR 'D12421' VALUE 3
      *    TYPE = 2, PRECISION = 8, SCALE = 4;
             CALL "SUB60" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "SET DESCRIPTOR 'D12421' VALUE 6"
             DISPLAY " TYPE = 2, PRECISION = 8, SCALE = 4;"
      *  EXEC SQL SET DESCRIPTOR 'D12421' VALUE 6
      *    TYPE = 2, PRECISION = 8, SCALE = 4;
             CALL "SUB61" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "SET DESCRIPTOR 'D12421' VALUE 7"
             DISPLAY " TYPE = 2, PRECISION = 8, SCALE = 4;"
      *  EXEC SQL SET DESCRIPTOR 'D12421' VALUE 7
      *    TYPE = 2, PRECISION = 8, SCALE = 4;
             CALL "SUB62" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "SET DESCRIPTOR 'D12421' VALUE 8"
             DISPLAY " TYPE = 2, PRECISION = 8, SCALE = 4;"
      *  EXEC SQL SET DESCRIPTOR 'D12421' VALUE 8
      *    TYPE = 2, PRECISION = 8, SCALE = 4;
             CALL "SUB63" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "DECLARE C12421 CURSOR FOR S12421;"
      *  EXEC SQL DECLARE C12421 CURSOR FOR S12421 END-EXEC
             DISPLAY  " "

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

             DISPLAY "FETCH C12421 INTO SQL DESCRIPTOR 'D12421';"
      *  EXEC SQL FETCH C12421 INTO SQL DESCRIPTOR 'D12421';
             CALL "SUB65" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             DISPLAY "GET DESCRIPTOR 'D12421' :int1 = COUNT;"
      *  EXEC SQL GET DESCRIPTOR 'D12421' :int1 = COUNT;
             CALL "SUB66" USING SQLCODE SQLSTATE int1
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 8; its value is ", int1
             if (int1  NOT =  8) then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             MOVE "xxxxxxxxxxxxxxxxxxxx" TO cname
             DISPLAY "GET DESCRIPTOR 'D12421' VALUE 1"
             DISPLAY " :int1 = INDICATOR, :cname = DATA;"
      *  EXEC SQL GET DESCRIPTOR 'D12421' VALUE 1
      *    :int1 = INDICATOR, :cname = DATA;
             CALL "SUB67" USING SQLCODE SQLSTATE
                int1 cname
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 0; its value is ", int1
             DISPLAY "cname should be 'Bubba '; its value
      -    " is '", cname "'"
             if (int1  NOT =  0  OR  cname  NOT  =   "Bubba
      -    " "then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             COMPUTE flt1 = -1.0
             DISPLAY "GET DESCRIPTOR 'D12421' VALUE 2"
             DISPLAY " :int1 = INDICATOR, :flt1 = DATA;"
      *  EXEC SQL GET DESCRIPTOR 'D12421' VALUE 2
      *    :int1 = INDICATOR, :flt1 = DATA;
             CALL "SUB68" USING SQLCODE SQLSTATE int1 flt1
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 0; its value is ", int1
             MOVE flt1 TO FLT-1
             DISPLAY "flt1 should be 524.07 +-.005; its value is ",
               FLT-1
             if (int1  NOT =  0  OR  flt1  <  524.065  OR  flt1  > 
             524.075) then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             COMPUTE flt1 = -1.0
             DISPLAY "GET DESCRIPTOR 'D12421' VALUE 3"
             DISPLAY " :int1 = INDICATOR, :flt1 = DATA;"
      *  EXEC SQL GET DESCRIPTOR 'D12421' VALUE 3
      *    :int1 = INDICATOR, :flt1 = DATA;
             CALL "SUB69" USING SQLCODE SQLSTATE int1 flt1
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 0; its value is ", int1
             MOVE flt1 TO FLT-1
             DISPLAY "flt1 should be 2.42 +-.005; its value is ", FLT-1
             if (int1  NOT =  0  OR  flt1  <  2.415  OR  flt1  >  2.425)
             then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             MOVE "xxxxxxxxxxxxxxxxxxxx" TO cname
             DISPLAY "GET DESCRIPTOR 'D12421' VALUE 4"
             DISPLAY " :int1 = INDICATOR, :bin9 = DATA;"
      *  EXEC SQL GET DESCRIPTOR 'D12421' VALUE 4
      *    :int1 = INDICATOR, :bin9 = DATA;
             CALL "SUB70" USING SQLCODE SQLSTATE int1 bin9
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 0; its value is ", int1
             MOVE bin9 TO BIN-1
             DISPLAY "bin9 should be 13; its value is ", BIN-1
             if (int1  NOT =  0  OR  bin9  NOT =  13) then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             MOVE "xxxxxxxxxxxxxxxxxxxx" TO cname
             DISPLAY "GET DESCRIPTOR 'D12421' VALUE 5"
             DISPLAY " :int1 = INDICATOR, :bin2 = DATA;"
      *  EXEC SQL GET DESCRIPTOR 'D12421' VALUE 5
      *    :int1 = INDICATOR, :bin2 = DATA;
             CALL "SUB71" USING SQLCODE SQLSTATE int1 bin2
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 0; its value is ", int1
             MOVE bin2 TO BIN-1
             DISPLAY "bin2 should be 1; its value is ", BIN-1
             if (int1  NOT =  0  OR  bin2  NOT =  1) then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             COMPUTE flt1 = -1.0
             DISPLAY "GET DESCRIPTOR 'D12421' VALUE 6"
             DISPLAY " :int1 = INDICATOR, :flt1 = DATA;"
      *  EXEC SQL GET DESCRIPTOR 'D12421' VALUE 6
      *    :int1 = INDICATOR, :flt1 = DATA;
             CALL "SUB72" USING SQLCODE SQLSTATE int1 flt1
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 0; its value is ", int1
             MOVE flt1 TO FLT-1
             DISPLAY "flt1 should be 3.0 +-.05; its value is ", FLT-1
             if (int1  NOT =  0  OR  flt1  <  2.95  OR  flt1  >  3.05)
             then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             COMPUTE flt1 = -1.0
             DISPLAY "GET DESCRIPTOR 'D12421' VALUE 7"
             DISPLAY " :int1 = INDICATOR, :flt1 = DATA;"
      *  EXEC SQL GET DESCRIPTOR 'D12421' VALUE 7
      *    :int1 = INDICATOR, :flt1 = DATA;
             CALL "SUB73" USING SQLCODE SQLSTATE int1 flt1
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 0; its value is ", int1
             MOVE flt1 TO FLT-1
             DISPLAY "flt1 should be 3.1 +-.05; its value is ", FLT-1
             if (int1  NOT =  0  OR  flt1  <  3.05  OR  flt1  >  3.15)
             then
               MOVE 0 TO flag
             END-IF

             COMPUTE int1 = -1
             COMPUTE flt1 = -1.0
             DISPLAY "GET DESCRIPTOR 'D12421' VALUE 8"
             DISPLAY " :int1 = INDICATOR, :flt1 = DATA;"
      *  EXEC SQL GET DESCRIPTOR 'D12421' VALUE 8
      *    :int1 = INDICATOR, :flt1 = DATA;
             CALL "SUB74" USING SQLCODE SQLSTATE int1 flt1
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 0; its value is ", int1
             MOVE flt1 TO FLT-1
             DISPLAY "flt1 should be -.256 +-.0005; its value is ",
               FLT-1
             if (int1  NOT =  0  OR  flt1  <  -.2565  OR  flt1  > 
             -.2555) then
               MOVE 0 TO flag
             END-IF

      *17.4 GR 4, no data (SQLSTATE 02000) if <item number> > COUNT 

             COMPUTE int1 = -1
             DISPLAY "GET DESCRIPTOR 'D12421' VALUE 9"
             DISPLAY " :int1 = INDICATOR;"
      *  EXEC SQL GET DESCRIPTOR 'D12421' VALUE 9
      *    :int1 = INDICATOR;
             CALL "SUB75" USING SQLCODE SQLSTATE int1
             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  " "

      *Implicit casting:  17.9 GR.7 
      *Substitute integer for real 

             DISPLAY "SET DESCRIPTOR 'D12421' VALUE 2"
             DISPLAY " TYPE = 4;"
      *  EXEC SQL SET DESCRIPTOR 'D12421' VALUE 2
      *    TYPE = 4;
             CALL "SUB76" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

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

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

             DISPLAY "FETCH C12421 INTO SQL DESCRIPTOR 'D12421';"
      *  EXEC SQL FETCH C12421 INTO SQL DESCRIPTOR 'D12421';
             CALL "SUB79" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *Make sure it didn't munge the settings 

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             COMPUTE int3 = -1
             COMPUTE bin9 = -1
             COMPUTE int6 = -1
             MOVE "xxxxxxxxxxxxxxxxxxxx" TO cname

             DISPLAY "GET DESCRIPTOR 'D12421' VALUE 2"
             DISPLAY " :int1 = TYPE, :int2 = NULLABLE, :int3 =
      -    " UNNAMED,"
             DISPLAY " :cname = NAME, :int6 = INDICATOR, :bin9 = DATA;"
      *  EXEC SQL GET DESCRIPTOR 'D12421' VALUE 2
      *    :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
      *    :cname = NAME, :int6 = INDICATOR, :bin9 = DATA;
             CALL "SUB80" USING SQLCODE SQLSTATE
                int1 int2 int3 cname int6 bin9
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 4 (INTEGER); its value is ", int1
             DISPLAY "int2 should be 1 (NULLABLE); its value is ", int2
             DISPLAY "int3 should be 0 (named); its value is ", int3
             DISPLAY "cname should be 'BALANCE '; its value
      -    " is '", cname "'"
             MOVE bin9 TO BIN-1
             DISPLAY "bin9 should be 524; its value is ", BIN-1
             DISPLAY "int6 should be 0; its value is ", int6
             if (int1  NOT =  4  OR  int2  NOT =  1  OR  int3  NOT =  0)
             then
               MOVE 0 TO flag
             END-IF
             if (bin9  NOT =  524  OR  int6  NOT =  0) then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "BALANCE "then
               MOVE 0 TO flag
             END-IF

      *Test null 

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

             DISPLAY "UPDATE BANKTAB SET BALANCE = NULL;"
      *  EXEC SQL UPDATE BANKTAB SET BALANCE = NULL;
             CALL "SUB82" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

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

             DISPLAY "FETCH C12421 INTO SQL DESCRIPTOR 'D12421';"
      *  EXEC SQL FETCH C12421 INTO SQL DESCRIPTOR 'D12421';
             CALL "SUB84" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             COMPUTE int1 = -1
             COMPUTE int2 = -1
             COMPUTE int3 = -1
             COMPUTE int6 = -1
             COMPUTE bin9 = -1
             MOVE "xxxxxxxxxxxxxxxxxxxx" TO cname

             DISPLAY "GET DESCRIPTOR 'D12421' VALUE 2"
             DISPLAY " :int1 = TYPE, :int2 = NULLABLE, :int3 =
      -    " UNNAMED,"
             DISPLAY " :cname = NAME, :int6 = INDICATOR, :bin9 = DATA;"
      *  EXEC SQL GET DESCRIPTOR 'D12421' VALUE 2
      *    :int1 = TYPE, :int2 = NULLABLE, :int3 = UNNAMED,
      *    :cname = NAME, :int6 = INDICATOR, :bin9 = DATA;
             CALL "SUB85" USING SQLCODE SQLSTATE
                int1 int2 int3 cname int6 bin9
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY "int1 should be 4 (INTEGER); its value is ", int1
             DISPLAY "int2 should be 1 (NULLABLE); its value is ", int2
             DISPLAY "int3 should be 0 (named); its value is ", int3
             DISPLAY "cname should be 'BALANCE '; its value
      -    " is '", cname "'"
             DISPLAY "int6 should be -1; its value is ", int6
             if (int1  NOT =  4  OR  int2  NOT =  1  OR  int3  NOT =  0)
             then
               MOVE 0 TO flag
             END-IF
             if (int6  NOT =  -1) then
               MOVE 0 TO flag
             END-IF
             if (cname  NOT  =   "BALANCE "then
               MOVE 0 TO flag
             END-IF

           .
        P198.
             DISPLAY "ROLLBACK WORK;"
      *  EXEC SQL ROLLBACK WORK;
             CALL "SUB86" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *TEd Hook #1 
             DISPLAY "DROP TABLE BANKTAB CASCADE;"
      *  EXEC SQL DROP TABLE BANKTAB CASCADE;
             CALL "SUB87" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB88" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "
      *TEd Hook #2 

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

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

      *  EXEC SQL COMMIT WORK;
             CALL "SUB91" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      ******************** END TEST0654 ********************
      ******************** BEGIN TEST0655 *******************
             MOVE 1 TO flag

             DISPLAY " TEST0655 "
             DISPLAY " Descriptors: USING SQL DESCRIPTOR"
             DISPLAY "References:"
             DISPLAY " F# 1 -- Dynamic SQL"
             DISPLAY " 17.9 -- "
             DISPLAY " 17.10 -- "
             DISPLAY " 17.14 -- "
             DISPLAY " 17.1 -- Description of SQL item descriptor
      -    " areas"
             DISPLAY " 17.2 GR.3 -- limit on descriptor areas is"
             DISPLAY " implementation-defined"
             DISPLAY " 6.1 -- "
             DISPLAY " - - - - - - - - - - - - - - - - - - -"

             COMPUTE SQLCODE = -1
             MOVE "xxxxx" TO SQLSTATE

      *TEd Hook #1 
             DISPLAY "CREATE TABLE BANKTAB ("
             DISPLAY " NAAM CHAR (10), BALANCE NUMERIC (7, 2),"
             DISPLAY " INTEREST DECIMAL (3, 2), TRANSACTIONS INT,"
             DISPLAY " PAYMENTS SMALLINT, INTEREST_RATE FLOAT,"
             DISPLAY " ANNUAL_YIELD REAL, FRACTIONAL_CENTS DOUBLE
      -    " PRECISION);"
      *  EXEC SQL CREATE TABLE BANKTAB (
      *    NAAM CHAR (10), BALANCE NUMERIC (7, 2),
      *    INTEREST DECIMAL (3, 2), TRANSACTIONS INT,
      *    PAYMENTS SMALLINT, INTEREST_RATE FLOAT,
      *    ANNUAL_YIELD REAL, FRACTIONAL_CENTS DOUBLE PRECISION)
      * ;
             CALL "SUB92" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             DISPLAY "COMMIT WORK;"
      *  EXEC SQL COMMIT WORK;
             CALL "SUB93" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "
      *TEd Hook #2 

             DISPLAY "ALLOCATE DESCRIPTOR 'D12431' WITH MAX 8;"
      *  EXEC SQL ALLOCATE DESCRIPTOR 'D12431' WITH MAX 8;
             CALL "SUB94" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             if (SQLSTATE   =   "07009")  then
               DISPLAY "Received SQLSTATE 07009!"
               DISPLAY "This test must be rewritten by NIST (in the
      -    " event of"
               DISPLAY "a validation) to accomodate
      -    " implementation-defined"
               DISPLAY "limit on ."
             END-IF
             DISPLAY  " "

      *Now we're going to do implicit casting in the other direction 

             DISPLAY "SET DESCRIPTOR 'D12431' COUNT = 8;"
      *  EXEC SQL SET DESCRIPTOR 'D12431' COUNT = 8;
             CALL "SUB95" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *Name is NULL 

             DISPLAY "SET DESCRIPTOR 'D12431' VALUE 1"
             DISPLAY " TYPE = 2, PRECISION = 3, SCALE = 0, INDICATOR =
      -    " -1;"
      *  EXEC SQL SET DESCRIPTOR 'D12431' VALUE 1
      *    TYPE = 2, PRECISION = 3, SCALE = 0, INDICATOR = -1
      * ;
             CALL "SUB96" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             MOVE 3785.2 TO flt1
             DISPLAY "SET DESCRIPTOR 'D12431' VALUE 2"
             DISPLAY " DATA = :flt1, TYPE = 2,"
             DISPLAY " PRECISION = 8, SCALE = 4,"
             DISPLAY " INDICATOR = 0;"
      *  EXEC SQL SET DESCRIPTOR 'D12431' VALUE 2
      *    DATA = :flt1, TYPE = 2,
      *    PRECISION = 8, SCALE = 4,
      *    INDICATOR = 0;
             CALL "SUB97" USING SQLCODE SQLSTATE flt1
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             MOVE 1 TO int1
             MOVE 4 TO int2
             MOVE 0 TO int3
             DISPLAY "int1 = 1"
             DISPLAY "int2 = 4"
             DISPLAY "int3 = 0"
             MOVE "7.67" TO c4
             DISPLAY "SET DESCRIPTOR 'D12431' VALUE 3"
             DISPLAY " TYPE = :int1, LENGTH = :int2,"
             DISPLAY " INDICATOR = :int3, DATA = :c4;"
      *  EXEC SQL SET DESCRIPTOR 'D12431' VALUE 3
      *    TYPE = :int1, LENGTH = :int2,
      *    INDICATOR = :int3, DATA = :c4;
             CALL "SUB98" USING SQLCODE SQLSTATE int1 int2 int3 c4
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             MOVE 4 TO int1
             DISPLAY "int1 = 4"
             MOVE 5 TO int2
             DISPLAY "SET DESCRIPTOR 'D12431' VALUE :int1"
             DISPLAY " TYPE = 2, PRECISION = 9, INDICATOR = 0, "
             DISPLAY " DATA = :int2;"
      *  EXEC SQL SET DESCRIPTOR 'D12431' VALUE :int1 TYPE = 2,
      *      PRECISION = 9, INDICATOR = 0, DATA = :int2;
             CALL "SUB99" USING SQLCODE SQLSTATE int1 int2
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             MOVE 0 TO int2
             DISPLAY "SET DESCRIPTOR 'D12431' VALUE 5"
             DISPLAY " TYPE = 2, PRECISION = 9, "
             DISPLAY " INDICATOR = 0, DATA = :int2;"
      *  EXEC SQL SET DESCRIPTOR 'D12431' VALUE 5
      *    TYPE = 2, PRECISION = 9, SCALE = 0, INDICATOR = 0,
      *    DATA = :int2;
             CALL "SUB100" USING SQLCODE SQLSTATE int2
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             MOVE "010.95" TO c6
             DISPLAY "SET DESCRIPTOR 'D12431' VALUE 6"
             DISPLAY " TYPE = 1, LENGTH = 6,"
             DISPLAY " INDICATOR = 0, DATA = :c6"
      *  EXEC SQL SET DESCRIPTOR 'D12431' VALUE 6
      *    TYPE = 1, LENGTH = 6,
      *    INDICATOR = 0, DATA = :c6;
             CALL "SUB101" USING SQLCODE SQLSTATE c6
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *17.5 GR.5.a:  character set fields are automatically set 

             MOVE 2 TO int1
             DISPLAY "int1 = 2"
             MOVE "11" TO c2
             DISPLAY "c2 = '", c2 "'"
             DISPLAY "SET DESCRIPTOR 'D12431' VALUE 7"
             DISPLAY " TYPE = 1, INDICATOR = 0, LENGTH = :int1, DATA =
      -    " :c2;"
      *  EXEC SQL SET DESCRIPTOR 'D12431' VALUE 7
      *    TYPE = 1, INDICATOR = 0, LENGTH = :int1, DATA = :c2
      * ;
             CALL "SUB102" USING SQLCODE SQLSTATE int1 c2
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

             MOVE .3 TO flt1
             DISPLAY "SET DESCRIPTOR 'D12431' VALUE 8 TYPE = 2,"
             DISPLAY " PRECISION = 8, SCALE = 4,"
             DISPLAY " INDICATOR = 0, DATA = :flt1;"
      *  EXEC SQL SET DESCRIPTOR 'D12431' VALUE 8 TYPE = 2,
      *    PRECISION = 8, SCALE = 4,
      *    INDICATOR = 0, DATA = :flt1;
             CALL "SUB103" USING SQLCODE SQLSTATE flt1
             MOVE SQLCODE TO SQL-COD
           PERFORM CHCKOK
             DISPLAY  " "

      *Here goes nothing 

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

--> maximum size reached

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

¤ Dauer der Verarbeitung: 0.150 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