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: Vector_Spaces.thy   Sprache: Cobol

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


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

      ****************************************************************
      *                                                              
      *                 COMMENT SECTION                              
      *                                                              
      * DATE 1992/07/06 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.
      *                                                              
      * DML081.SCO                                                    
      * WRITTEN BY: DAVID W. FLATER                                  
      *                                                              
      *   THIS ROUTINE TESTS THE SQLSTATE STATUS CODE.               
      *                                                              
      * REFERENCES                                                   
      *   ANSI SQL-1992                                              
      *     22.1  SQLSTATE                                           
      *                                                              
      ****************************************************************



      * EXEC SQL BEGIN DECLARE SECTION END-EXEC
       01  uid PIC  X(18).
       01  uidx PIC  X(18).
       01  tmpcnt PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  xgrade PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  zeero PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
      *  EXEC SQL END DECLARE SECTION END-EXEC

       01  ii PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  SQLCODE PIC S9(9) COMP.
       01  SQLSTATE PIC  X(5).
       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  NR-TAB.
           05  NORMSQ 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 "SCHANZLE" 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
             if (uid  NOT  =   uidx) then
               DISPLAY "ERROR: User ", uid " expected. User ", uidx "
      -    " connected"
             STOP RUN
             END-IF
             MOVE 0 TO errcnt
             MOVE 1 TO flag
           DISPLAY
              "SQL Test Suite, V6.0, Standard COBOL, dml081.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 TEST0487 *******************
             MOVE 1 TO flag

             DISPLAY " TEST0487 "
             DISPLAY "SQLSTATE = 00000: successful completion"
             DISPLAY "Note: VALID implementation-defined subclass will
      -    " be"
             DISPLAY " accepted instead of no-subclass value of 000
      -    " "
             DISPLAY "SQLSTATE = 01xxx will also be accepted, provided "
             DISPLAY " xxx is a valid implementation-defined subclass
      -    " value "
             DISPLAY "Reference ANSI SQL-1992 section 22.1 SQLSTATE"
             DISPLAY " - - - - - - - - - - - - - - - - - - -"

             COMPUTE SQLCODE = -55
             MOVE "x" TO SQLSTATE
             DISPLAY "SELECT COUNT (*) FROM HU.WORKS;"
      *  EXEC SQL SELECT COUNT (*) INTO :tmpcnt FROM HU.WORKS
      * ;
             CALL "SUB2" USING SQLCODE SQLSTATE tmpcnt
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be 00000; its value is ", SQLSTATE

             PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT = 0 OR NR-TAB NOT = "00000"  OR 
             tmpcnt  NOT =  12) then
               MOVE 0 TO flag
             END-IF


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

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

      *  EXEC SQL COMMIT WORK;
             CALL "SUB5" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      ******************** END TEST0487 ********************

      ******************** BEGIN TEST0488 *******************
             MOVE 1 TO flag

             DISPLAY " TEST0488 "
             DISPLAY "SQLSTATE = 21000: cardinality violation"
             DISPLAY "Note: VALID implementation-defined subclass will
      -    " be"
             DISPLAY " accepted instead of no-subclass value of 000
      -    " "
             DISPLAY "Reference ANSI SQL-1992 section 22.1 SQLSTATE"
             DISPLAY " - - - - - - - - - - - - - - - - - - -"

      *7.11 <scalar subquery> GR1 
             MOVE 33 TO SQLCODE
             MOVE "x" TO SQLSTATE
             DISPLAY "SELECT COUNT(*) INTO :tmpcnt FROM HU.WORKS"
             DISPLAY "WHERE PNUM = (SELECT PNUM FROM HU.WORKS WHERE
      -    " HOURS = 80);"
      *  EXEC SQL SELECT COUNT(*) INTO :tmpcnt FROM HU.WORKS
      *    WHERE PNUM = (SELECT PNUM FROM HU.WORKS WHERE HOURS = 80)
      * ;
             CALL "SUB6" USING SQLCODE SQLSTATE tmpcnt
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be < 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be 21000; its value is ", SQLSTATE

             PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT <  0  OR  NR-TAB  NOT  =   "21000"then
               MOVE 0 TO flag
             END-IF


      *13.5 <select statement: single row> GR2a 
      *more than one row, with WHERE clause 
             MOVE 33 TO SQLCODE
             MOVE "x" TO SQLSTATE
             DISPLAY  " "
             DISPLAY "SELECT HOURS INTO :tmpcnt FROM HU.WORKS WHERE
      -    " HOURS = 40;"
      *  EXEC SQL SELECT HOURS INTO :tmpcnt FROM HU.WORKS WHERE
      *  HOURS = 40;
             CALL "SUB7" USING SQLCODE SQLSTATE tmpcnt
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be < 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be 21000; its value is ", SQLSTATE

             PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT <  0  OR  NR-TAB  NOT  =   "21000"then
               MOVE 0 TO flag
             END-IF


      *13.5 <select statement: single row> GR2a 
      *more than one row, full-table select 
             MOVE 33 TO SQLCODE
             MOVE "x" TO SQLSTATE
             DISPLAY  " "
             DISPLAY "SELECT HOURS INTO :tmpcnt FROM HU.WORKS;"
      *  EXEC SQL SELECT HOURS INTO :tmpcnt FROM HU.WORKS;
             CALL "SUB8" USING SQLCODE SQLSTATE tmpcnt
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be < 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be 21000; its value is ", SQLSTATE

             PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT <  0  OR  NR-TAB  NOT  =   "21000"then
               MOVE 0 TO flag
             END-IF


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

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

      *  EXEC SQL COMMIT WORK;
             CALL "SUB11" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      ******************** END TEST0488 ********************

      ******************** BEGIN TEST0489 *******************
             MOVE 1 TO flag

             DISPLAY " TEST0489 "
             DISPLAY "SQLSTATE = 02000: no data"
             DISPLAY "Note: VALID implementation-defined subclass will
      -    " be"
             DISPLAY " accepted instead of no-subclass value of 000
      -    " "
             DISPLAY "Reference ANSI SQL-1992 section 22.1 SQLSTATE"
             DISPLAY " - - - - - - - - - - - - - - - - - - -"

      *13.3 <fetch statement> GR 5b  - no data 
      *  EXEC SQL DECLARE FATZERO CURSOR FOR
      *    SELECT GRADE FROM HU.STAFF WHERE GRADE < :xgrade END-EXEC

             MOVE 12 TO xgrade
             DISPLAY "Open cursor"
      *  EXEC SQL OPEN FATZERO;
             CALL "SUB12" USING SQLCODE SQLSTATE xgrade
             MOVE SQLCODE TO SQL-COD
             COMPUTE SQLCODE = -55
             MOVE "x" TO SQLSTATE

      *one row in cursor - no data on second fetch 
             DISPLAY "first FETCH gets data"
      *  EXEC SQL FETCH FATZERO INTO :tmpcnt;
             CALL "SUB13" USING SQLCODE SQLSTATE tmpcnt
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be 00000; its value is ", SQLSTATE
             PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT = 0 OR NR-TAB NOT = "00000"then
               MOVE 0 TO flag
             END-IF

             DISPLAY "next FETCH is past end of cursor"
      *  EXEC SQL FETCH FATZERO INTO :tmpcnt;
             CALL "SUB14" USING SQLCODE SQLSTATE tmpcnt
             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  NR-TAB  NOT  =   "02000"then
               MOVE 0 TO flag
             END-IF
      *  EXEC SQL CLOSE FATZERO;
             CALL "SUB15" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

             DISPLAY  " "
             MOVE 9 TO xgrade
             DISPLAY "Open cursor"
      *  EXEC SQL OPEN FATZERO;
             CALL "SUB12" USING SQLCODE SQLSTATE xgrade
             MOVE SQLCODE TO SQL-COD
             COMPUTE SQLCODE = -55
             MOVE "x" TO SQLSTATE

      *no rows in cursor - no data on first fetch 
             DISPLAY "First FETCH on empty cursor"
      *  EXEC SQL FETCH FATZERO INTO :tmpcnt;
             CALL "SUB17" USING SQLCODE SQLSTATE tmpcnt
             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  NR-TAB  NOT  =   "02000"then
               MOVE 0 TO flag
             END-IF
      *  EXEC SQL CLOSE FATZERO;
             CALL "SUB18" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD


      *13.5 <select statement: single row> GR 2b - no data 
             DISPLAY  " "
             COMPUTE SQLCODE = -55
             MOVE "x" TO SQLSTATE
             DISPLAY "SELECT GRADE INTO :tmpcnt FROM HU.STAFF WHERE
      -    " EMPNUM = 'xx';"
      *  EXEC SQL SELECT GRADE INTO :tmpcnt FROM HU.STAFF WHERE
      *  EMPNUM = 'xx';
             CALL "SUB19" USING SQLCODE SQLSTATE tmpcnt
             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  NR-TAB  NOT  =   "02000"then
               MOVE 0 TO flag
             END-IF


      *13.7 <delete statement: searched> GR 5 - no data 
             DISPLAY  " "
             COMPUTE SQLCODE = -55
             MOVE "x" TO SQLSTATE
             DISPLAY "DELETE FROM HU.STAFF WHERE GRADE = 11;"
      *  EXEC SQL DELETE FROM HU.STAFF WHERE GRADE = 11;
             CALL "SUB20" USING SQLCODE SQLSTATE
             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  NR-TAB  NOT  =   "02000"then
               MOVE 0 TO flag
             END-IF


      *13.8 <insert statement> GR 4a - no data 
             DISPLAY  " "
             COMPUTE SQLCODE = -55
             MOVE "x" TO SQLSTATE
             DISPLAY "INSERT INTO HU.STAFF (EMPNUM,GRADE)"
             DISPLAY " SELECT EMPNUM, 9 FROM HU.WORKS WHERE PNUM =
      -    " 'x9';"
      *  EXEC SQL INSERT INTO HU.STAFF (EMPNUM,GRADE)
      *    SELECT EMPNUM, 9 FROM HU.WORKS WHERE PNUM = 'x9';
             CALL "SUB21" USING SQLCODE SQLSTATE
             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  NR-TAB  NOT  =   "02000"then
               MOVE 0 TO flag
             END-IF


      *13.10 <update statement: searched> GR 4 - no data 
             DISPLAY  " "
             COMPUTE SQLCODE = -55
             MOVE "x" TO SQLSTATE
             DISPLAY "UPDATE HU.STAFF SET CITY = 'Ho' WHERE GRADE = 15;"
      *  EXEC SQL UPDATE HU.STAFF SET CITY = 'Ho' WHERE GRADE = 15
      * ;
             CALL "SUB22" USING SQLCODE SQLSTATE
             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  NR-TAB  NOT  =   "02000"then
               MOVE 0 TO flag
             END-IF

      *  EXEC SQL ROLLBACK WORK;
             CALL "SUB23" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

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

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

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

      ******************** BEGIN TEST0490 *******************
             MOVE 1 TO flag
             MOVE 0 TO zeero

             DISPLAY " TEST0490 "
             DISPLAY "SQLSTATE = 22012: data exception (division by
      -    " zero)"
             DISPLAY "Reference ANSI SQL-1992 section 22.1 SQLSTATE"
             DISPLAY " - - - - - - - - - - - - - - - - - - -"

             DISPLAY "INSERT INTO HU.STAFF VALUES"
             DISPLAY " ('E6','Fidel',0,'Havana');"
      *  EXEC SQL INSERT INTO HU.STAFF
      *    VALUES ('E6','Fidel',0,'Havana');
             CALL "SUB27" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be 0; its value is ", SQL-COD
             if (SQLCODE  NOT =  0) then
               MOVE 0 TO flag
             END-IF


      *column reference in WHERE clause - divide by zero 
             DISPLAY  " "
             MOVE 33 TO SQLCODE
             MOVE "x" TO SQLSTATE
             DISPLAY "SELECT COUNT(*) FROM HU.STAFF"
             DISPLAY "WHERE EMPNAME = 'Fidel' AND 16/GRADE > 2;"
      *  EXEC SQL SELECT COUNT(*) INTO :tmpcnt
      *    FROM HU.STAFF WHERE EMPNAME = 'Fidel' AND 16/GRADE > 2
      * ;
             CALL "SUB28" USING SQLCODE SQLSTATE tmpcnt
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be < 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be 22012; its value is ", SQLSTATE
             if (SQLCODE  NOT <  0  OR  SQLSTATE  NOT  =   "22012"then
               MOVE 0 TO flag
             END-IF


      *column reference in SELECT list - divide by zero 
             DISPLAY  " "
             MOVE 33 TO SQLCODE
             MOVE "x" TO SQLSTATE
             DISPLAY "SELECT 16/GRADE FROM HU.STAFF "
             DISPLAY "WHERE EMPNAME = 'Fidel';"
      *  EXEC SQL SELECT 16/GRADE INTO :tmpcnt
      *    FROM HU.STAFF WHERE EMPNAME = 'Fidel';
             CALL "SUB29" USING SQLCODE SQLSTATE tmpcnt
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be < 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be 22012; its value is ", SQLSTATE
             if (SQLCODE  NOT <  0  OR  SQLSTATE  NOT  =   "22012"then
               MOVE 0 TO flag
             END-IF


      *set function - divide by zero 
             DISPLAY  " "
             MOVE 33 TO SQLCODE
             MOVE "x" TO SQLSTATE
             DISPLAY "Cursor SELECT COUNT(*) FROM HU.STAFF"
             DISPLAY "GROUP BY CITY HAVING SUM(GRADE/:zeero) > 44;"
      *  EXEC SQL Cursor SELECT COUNT(*) INTO :tmpcnt FROM HU.STAFF
      *    GROUP BY CITY HAVING SUM(GRADE/:zeero) > 44;
             CALL "OPENM" USING SQLCODE SQLSTATE zeero
             if (SQLCODE = 0) then
               CALL "SUB30" USING SQLCODE SQLSTATE tmpcnt zeero
             END-IF
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be < 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be 22012; its value is ", SQLSTATE
             if (SQLCODE  NOT <  0  OR  SQLSTATE  NOT  =   "22012"then
               MOVE 0 TO flag
             END-IF


      *subquery - divide by zero 
             DISPLAY  " "
             MOVE 33 TO SQLCODE
             MOVE "x" TO SQLSTATE
             DISPLAY "SELECT COUNT(*) FROM HU.STAFF WHERE GRADE = "
             DISPLAY "(SELECT 16/GRADE FROM HU.STAFF WHERE EMPNUM =
      -    " 'E6');"
      *  EXEC SQL SELECT COUNT(*) INTO :tmpcnt FROM HU.STAFF WHERE
      *  GRADE = 
      *    (SELECT 16/GRADE FROM HU.STAFF WHERE EMPNUM = 'E6')
      * ;
             CALL "SUB31" USING SQLCODE SQLSTATE tmpcnt
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be < 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be 22012; its value is ", SQLSTATE
             if (SQLCODE  NOT <  0  OR  SQLSTATE  NOT  =   "22012"then
               MOVE 0 TO flag
             END-IF


      *UPDATE with parameter value - divide by zero 
             DISPLAY  " "
             MOVE 33 TO SQLCODE
             MOVE "x" TO SQLSTATE
             DISPLAY "UPDATE HU.STAFF SET GRADE = GRADE/:zeero WHERE
      -    " GRADE = 12"
      *  EXEC SQL UPDATE HU.STAFF SET GRADE = GRADE/:zeero WHERE
      *  GRADE = 12;
             CALL "SUB32" USING SQLCODE SQLSTATE zeero
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be < 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be 22012; its value is ", SQLSTATE
             if (SQLCODE  NOT <  0  OR  SQLSTATE  NOT  =   "22012"then
               MOVE 0 TO flag
             END-IF


      *INSERT with parameter value - divide by zero 
             DISPLAY  " "
             MOVE 33 TO SQLCODE
             MOVE "x" TO SQLSTATE
             DISPLAY "INSERT INTO HU.STAFF SELECT"
             DISPLAY "'X','Y',HOURS/:zeero,'z' FROM HU.WORKS WHERE PNUM
      -    " = 'P6' "
      *  EXEC SQL INSERT INTO HU.STAFF SELECT
      *    'X','Y',HOURS/:zeero,'z' FROM HU.WORKS WHERE PNUM = 'P6'
      * ;
             CALL "SUB33" USING SQLCODE SQLSTATE zeero
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be < 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be 22012; its value is ", SQLSTATE
             if (SQLCODE  NOT <  0  OR  SQLSTATE  NOT  =   "22012"then
               MOVE 0 TO flag
             END-IF

      *  EXEC SQL ROLLBACK WORK;
             CALL "SUB34" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD

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

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

      *  EXEC SQL COMMIT WORK;
             CALL "SUB37" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      ******************** END TEST0490 ********************

      ******************** BEGIN TEST0502 *******************
             MOVE 1 TO flag

             DISPLAY " TEST0502 "
             DISPLAY "SQLSTATE = 24000: invalid cursor state"
             DISPLAY "Note: VALID implementation-defined subclass will
      -    " be"
             DISPLAY " accepted instead of no-subclass value of 000
      -    " "
             DISPLAY "Reference ANSI SQL-1992 section 22.1 SQLSTATE"
             DISPLAY " - - - - - - - - - - - - - - - - - - -"

             DISPLAY "DECLARE COLUMBIA CURSOR FOR SELECT GRADE FROM
      -    " HU.STAFF;"
      *  EXEC SQL DECLARE COLUMBIA CURSOR FOR
      *    SELECT GRADE FROM HU.STAFF END-EXEC

      *13.2 <open statement> GR1 
             DISPLAY "OPEN COLUMBIA;"
      *  EXEC SQL OPEN COLUMBIA;
             CALL "SUB38" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
             DISPLAY "FETCH COLUMBIA INTO :tmpcnt;"
      *  EXEC SQL FETCH COLUMBIA INTO :tmpcnt;
             CALL "SUB39" USING SQLCODE SQLSTATE tmpcnt
             MOVE SQLCODE TO SQL-COD
             MOVE 33 TO SQLCODE
             MOVE "x" TO SQLSTATE
             DISPLAY "OPEN COLUMBIA;"
      *  EXEC SQL OPEN COLUMBIA;
             CALL "SUB38" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be < 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be '24000'; its value is ",
             SQLSTATE
             PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT <  0  OR  NR-TAB  NOT  =   "24000"then
               MOVE 0 TO flag
             END-IF
      *  EXEC SQL COMMIT WORK;
             CALL "SUB41" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
             DISPLAY "COMMIT WORK;"


      *13.3 <fetch statement> GR1 
             DISPLAY  " "
             MOVE 33 TO SQLCODE
             MOVE "x" TO SQLSTATE
             DISPLAY "FETCH COLUMBIA INTO :tmpcnt;"
      *  EXEC SQL FETCH COLUMBIA INTO :tmpcnt;
             CALL "SUB42" USING SQLCODE SQLSTATE tmpcnt
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be < 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be '24000'; its value is ",
             SQLSTATE
             PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT <  0  OR  NR-TAB  NOT  =   "24000"then
               MOVE 0 TO flag
             END-IF
      *  EXEC SQL COMMIT WORK;
             CALL "SUB43" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
             DISPLAY "COMMIT WORK;"

      *13.4 <close statement> GR1 
             DISPLAY  " "
             MOVE 33 TO SQLCODE
             MOVE "x" TO SQLSTATE
             DISPLAY "CLOSE COLUMBIA;"
      *  EXEC SQL CLOSE COLUMBIA;
             CALL "SUB44" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be < 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be '24000'; its value is ",
             SQLSTATE
             PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT <  0  OR  NR-TAB  NOT  =   "24000"then
               MOVE 0 TO flag
             END-IF
      *  EXEC SQL COMMIT WORK;
             CALL "SUB45" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
             DISPLAY "COMMIT WORK;"


      *13.6 <delete statement: positioned> GR2 - before first row
             DISPLAY  " "
             DISPLAY "OPEN COLUMBIA;"
      *  EXEC SQL OPEN COLUMBIA;
             CALL "SUB38" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
             MOVE 33 TO SQLCODE
             MOVE "x" TO SQLSTATE
             DISPLAY "DELETE FROM HU.STAFF WHERE CURRENT OF COLUMBIA;"
      *  EXEC SQL DELETE FROM HU.STAFF WHERE CURRENT OF COLUMBIA
      * ;
             CALL "SUB47" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be < 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be '24000'; its value is ",
             SQLSTATE
             PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT <  0  OR  NR-TAB  NOT  =   "24000"then
               MOVE 0 TO flag
             END-IF
      *  EXEC SQL ROLLBACK WORK;
             CALL "SUB48" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
             DISPLAY "ROLLBACK WORK;"


      *13.6 <delete statement: positioned> GR2 - after last row 
             DISPLAY  " "
             DISPLAY "OPEN COLUMBIA;"
      *  EXEC SQL OPEN COLUMBIA;
             CALL "SUB38" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
             DISPLAY "FETCH COLUMBIA cursor 13 times. Now positioned
      -    " past end."
             MOVE 0 TO ii
             PERFORM P50 UNTIL ii > 12
             MOVE 33 TO SQLCODE
             MOVE "x" TO SQLSTATE
             DISPLAY "DELETE FROM HU.STAFF WHERE CURRENT OF COLUMBIA;"
      *  EXEC SQL DELETE FROM HU.STAFF WHERE CURRENT OF COLUMBIA
      * ;
             CALL "SUB50" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be < 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be '24000'; its value is ",
             SQLSTATE
             PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT <  0  OR  NR-TAB  NOT  =   "24000"then
               MOVE 0 TO flag
             END-IF
      *  EXEC SQL ROLLBACK WORK;
             CALL "SUB51" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
             DISPLAY "ROLLBACK WORK;"


      *13.9 <update statement: positioned> GR2 - deleted row 
             DISPLAY  " "
             DISPLAY "OPEN COLUMBIA;"
      *  EXEC SQL OPEN COLUMBIA;
             CALL "SUB38" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
             DISPLAY "FETCH COLUMBIA INTO :tmpcnt;"
      *  EXEC SQL FETCH COLUMBIA INTO :tmpcnt;
             CALL "SUB53" USING SQLCODE SQLSTATE tmpcnt
             MOVE SQLCODE TO SQL-COD
             MOVE 33 TO SQLCODE
             MOVE "x" TO SQLSTATE
             DISPLAY  " "
             DISPLAY "DELETE FROM HU.STAFF WHERE CURRENT OF COLUMBIA;"
      *  EXEC SQL DELETE FROM HU.STAFF WHERE CURRENT OF COLUMBIA
      * ;
             CALL "SUB54" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be '00000'; its value is ",
             SQLSTATE
             PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT = 0 OR NR-TAB NOT = "00000"then
               MOVE 0 TO flag
             END-IF
             MOVE 33 TO SQLCODE
             MOVE "x" TO SQLSTATE
             DISPLAY "UPDATE HU.STAFF ... WHERE CURRENT OF COLUMBIA;"
      *  EXEC SQL UPDATE HU.STAFF SET GRADE = :tmpcnt WHERE CURRENT
      *  OF COLUMBIA;
             CALL "SUB55" USING SQLCODE SQLSTATE tmpcnt
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be < 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be '24000'; its value is ",
             SQLSTATE
             PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT <  0  OR  NR-TAB  NOT  =   "24000"then
               MOVE 0 TO flag
             END-IF
      *  EXEC SQL ROLLBACK WORK;
             CALL "SUB56" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
             DISPLAY "ROLLBACK WORK;"


      *13.9 <update statement: positioned> GR2 - after last row 
             DISPLAY  " "
             DISPLAY "OPEN COLUMBIA;"
      *  EXEC SQL OPEN COLUMBIA;
             CALL "SUB38" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
             DISPLAY "FETCH COLUMBIA cursor 13 times. Now positioned
      -    " past end."
             MOVE 0 TO ii
             PERFORM P49 UNTIL ii > 12
             MOVE 33 TO SQLCODE
             MOVE "x" TO SQLSTATE
             DISPLAY "UPDATE HU.STAFF ... WHERE CURRENT OF COLUMBIA;"
      *  EXEC SQL UPDATE HU.STAFF SET GRADE = :tmpcnt WHERE CURRENT
      *  OF COLUMBIA;
             CALL "SUB58" USING SQLCODE SQLSTATE tmpcnt
             MOVE SQLCODE TO SQL-COD
             DISPLAY "SQLCODE should be < 0; its value is ", SQL-COD
             DISPLAY "SQLSTATE should be '24000'; its value is ",
             SQLSTATE
             PERFORM NOSUBCLASS THRU EXIT-NOSUBCLASS
             if (SQLCODE  NOT <  0  OR  NR-TAB  NOT  =   "24000"then
               MOVE 0 TO flag
             END-IF
      *  EXEC SQL ROLLBACK WORK;
             CALL "SUB59" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD



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

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

      *  EXEC SQL COMMIT WORK;
             CALL "SUB62" USING SQLCODE SQLSTATE
             MOVE SQLCODE TO SQL-COD
      ******************** END TEST0502 ********************

      **** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0
           STOP RUN.

      *    ****  Procedures for PERFORM statements

        P50.
      *    EXEC SQL FETCH COLUMBIA INTO :tmpcnt;
               CALL "SUB63" USING SQLCODE SQLSTATE tmpcnt
               MOVE SQLCODE TO SQL-COD
             ADD 1 TO ii
           .

        P49.
      *    EXEC SQL FETCH COLUMBIA INTO :tmpcnt;
               CALL "SUB64" USING SQLCODE SQLSTATE tmpcnt
               MOVE SQLCODE TO SQL-COD
             ADD 1 TO ii
           .
       NOSUBCLASS.

      *This routine replaces valid implementation-defined       
      *subclasses with 000.  This replacement equates valid     
      *implementation-defined subclasses with the 000 value     
      *expected by the test case; otherwise the test will fail. 
      *After calling NOSUBCLASS, NORMSQ will be tested          
      *                          SQLSTATE will be printed.      

           MOVE SQLSTATE TO NR-TAB

           MOVE 3 TO norm1
      *subclass begins in position 3 of char array NORMSQ 
           MOVE 14 TO norm2
           PERFORM P90 UNTIL norm2 > 36
           
           if (NR-TAB   =   SQLSTATE) then
             GO TO EXIT-NOSUBCLASS
           END-IF
      *Quit if NORMSQ is unchanged.  Subclass is not impl.-def. 
      *Changed NORMSQ means implementation-defined subclass,    
      *so proceed to zero it out, if valid (0-9,A-Z)            

           MOVE 4 TO norm1
      *examining position 4 of char array NORMSQ 
           MOVE 1 TO norm2
           PERFORM P89 UNTIL norm2 > 36
          
           MOVE 5 TO norm1
      *examining position 5 of char array NORMSQ 
           MOVE 1 TO norm2
           PERFORM P88 UNTIL norm2 > 36
   

      *implementation-defined subclasses are allowed for warnings 
      *(class = 01).  These equate to successful completion 
      *SQLSTATE values of 00000. 
      *Reference SQL-92 4.28 SQL-transactions, paragraph 2 

           if (NORMSQ(1)  =  "0"  AND  NORMSQ(2)  =  "1"then
             MOVE "0" TO NORMSQ(2)
           END-IF
           GO TO EXIT-NOSUBCLASS
           .

       P90.
      *valid subclass begins with 5-9, I-Z, end of ALPNUM table 
           if (NORMSQ(norm1)  =  ALPNUM(norm2)) then
             MOVE "0" TO NORMSQ(norm1)
           END-IF
           ADD 1 TO norm2
           .

       P89.
      *valid characters are 0-9, A-Z 
           if (NORMSQ(norm1)  =  ALPNUM(norm2)) then
             MOVE "0" TO NORMSQ(norm1)
           END-IF
           ADD 1 TO norm2
           .

       P88.
      *valid characters are 0-9, A-Z 
           if (NORMSQ(norm1)  =  ALPNUM(norm2)) then
             MOVE "0" TO NORMSQ(norm1)
           END-IF
           ADD 1 TO norm2
           .

       EXIT-NOSUBCLASS.
           EXIT.


¤ Dauer der Verarbeitung: 0.60 Sekunden  (vorverarbeitet)  ¤





Druckansicht
unsichere Verbindung
Druckansicht
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