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

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


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


      * STANDARD COBOL (file "DML076.SCO")     

      *********************************************************
      *                                                       
      *             COMMENT SECTION                           
      *                                                       
      * DATE 1991/06/18 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.
      *                                                       
      * DML076.SCO                                             
      * WRITTEN BY: YOLANDA HERD                              
      *                                                       
      * THIS ROUTINE TESTS NULLS AND CURSORS                  
      *                                                       
      * REFERENCES                                            
      *  AMERICAN NATIONAL STANDARD database language - SQL   
      *                               X3.135-1989             
      *                                                       
      *                SECTION 4.2                            
      *                  DATA TYPES, DEFINITION OF NULL       
      *                  SECTION 8.10, GR 8                   
      *                                                       
      *********************************************************


      * EXEC SQL BEGIN DECLARE SECTION END-EXEC
       01  CHARTP PIC  X(1).
       01  INTTP PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  REALTP-SUB PIC S9(6)V99 DISPLAY SIGN LEADING SEPARATE.
       01  SMLTP PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  NUMTP PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  DECTP PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  GRDE PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  NME1 PIC  X(20).
       01  NME2 PIC  X(20).
       01  CITY1 PIC  X(15).
       01  VAR1 PIC  X(3).
       01  indic1 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  indic2 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  indic3 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  indic4 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  indic5 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  indic6 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  indic7 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  indic8 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  indic9 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  indicx PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  count1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  count2 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  count3 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  count4 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  count5 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  count6 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  count7 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  count8 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  count9 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  countx PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
      *  EXEC SQL END DECLARE SECTION END-EXEC

       01  uid PIC  X(18).
       01  uidx PIC X(18).
       01  flag1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  flag2 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  flag3 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  SQLCODE PIC S9(9) COMP.
       01  errcnt PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  i PIC S9(9) DISPLAY SIGN LEADING SEPARATE.

       01  SQL-COD PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  DISP1 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  DISP2 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  DISP4 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  DISP7 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.
       01  DISP8 PIC S9(4) DISPLAY SIGN LEADING SEPARATE.

      * date_time declaration *
       01  TO-DAY PIC 9(6).
       01  THE-TIME PIC 9(8).
    
       PROCEDURE DIVISION.
       P0.
             MOVE "HU" TO uid
             CALL "AUTHID" USING uid
           MOVE "not logged in, not" TO uidx
           CALL "AUTHCK" USING SQLCODE uidx
           MOVE SQLCODE TO SQL-COD
           if (uid NOT = uidx) then
            DISPLAY "ERROR: User " uid " expected."
            DISPLAY "User " uidx " connected."
            DISPLAY " "
            STOP RUN
           END-IF

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


      ********************** BEGIN TEST0410 *********************
      *This program tests NULL values in OPEN CURSORS           
      *                                                         

             DISPLAY " TEST0410 "
             DISPLAY " NULL value in OPEN CURSOR "
             DISPLAY " reference X3.135-1989 5.11 GR2 and 5.21 GR2
      -    " "
             DISPLAY "
      -    " -------------------------------------------------"

             MOVE "IRM" TO NME1
             MOVE "XXX" TO VAR1
             MOVE -1 TO indic1 
             MOVE 0 TO indic2
             MOVE 10000 TO count1
             MOVE 0 TO count3

      *  EXEC SQL DECLARE X CURSOR
      *    FOR SELECT PNUM
      *    FROM PROJ
      *    WHERE PNAME = :NME1:indic1 OR BUDGET > :count1:indic2
      *  END-EXEC

      *  EXEC SQL OPEN X;
             CALL "SUB1" USING SQLCODE NME1 indic1 count1 indic2
             MOVE SQLCODE TO SQL-COD

             MOVE 1 TO i
             PERFORM P50 UNTIL i > 6

             MOVE "MXSS" TO NME1
             MOVE "XXXXXX" TO CITY1
             MOVE 50000 TO count1
             MOVE 0 TO count2
             MOVE -1 TO indic1 
             MOVE 0 TO indic2

      *  EXEC SQL DECLARE Y CURSOR
      *    FOR SELECT CITY
      *    FROM PROJ
      *    WHERE PNAME = :NME1:indic2 OR BUDGET < :count1:indic1
      *  END-EXEC

      *  EXEC SQL OPEN Y;
             CALL "SUB2" USING SQLCODE NME1 indic2 count1 indic1
             MOVE SQLCODE TO SQL-COD

             MOVE 1 TO i
             PERFORM P49 UNTIL i > 6

             DISPLAY " The correct answers are:"
             DISPLAY " count3 = 4 and count2 = 1 "
             DISPLAY  " "
             DISPLAY " Your answers are:"
             DISPLAY " count3 = ", count3 " and count2 = ", count2 " "

             if ((count3  =  4)  AND  (count2  =  1)) then
      *    EXEC SQL INSERT INTO TESTREPORT 
      *      VALUES('0410','pass','MCO');
               CALL "SUB3" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
               DISPLAY " *** pass *** "
             else
      *    EXEC SQL INSERT INTO TESTREPORT 
      *      VALUES('0410','fail','MCO');
             ADD 1 TO errcnt
               CALL "SUB4" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
               DISPLAY " dml076.sco *** fail *** "
             END-IF

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

             DISPLAY  " "


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

      ********************** END TEST0410 *********************

      ********************** BEGIN TEST0435 *********************
      *This program tests UPDATES WHERE CURRENT                 
      *                                                         

             DISPLAY " TEST0435 "
             DISPLAY " Host variables in UPDATE WHERE CURRENT"
             DISPLAY " reference X3.135-1989 8.11, value expression"
             DISPLAY "
      -    " --------------------------------------------------"

      *  EXEC SQL DECLARE DINO CURSOR 
      *    FOR SELECT EMPNUM, CITY
      *    FROM STAFF
      *    WHERE CITY > 'Dino' END-EXEC

      *  EXEC SQL OPEN DINO;
             CALL "SUB6" USING SQLCODE
             MOVE SQLCODE TO SQL-COD

             MOVE 0 TO GRDE
             MOVE "XXXXX" TO CITY1
             MOVE "XXX" TO NME1
             MOVE "XXX" TO VAR1

             MOVE 1 TO i
             PERFORM P48 UNTIL i > 5

             MOVE -1 TO GRDE 
             MOVE "Joan" TO NME1

      *  EXEC SQL SELECT SUM(GRADE) INTO :GRDE
      *    FROM STAFF
      *    WHERE CITY = :CITY1;
             CALL "SUB7" USING SQLCODE GRDE CITY1
             MOVE SQLCODE TO SQL-COD

      *  EXEC SQL SELECT EMPNAME INTO :NME1
      *    FROM STAFF
      *    WHERE EMPNAME > 'Ed';
             CALL "SUB8" USING SQLCODE NME1
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY  " "
             DISPLAY " The correct answers are:"
             DISPLAY " GRDE = 35 and NME1 = Smith"
             DISPLAY  " "
             DISPLAY " Your answers are:"
             DISPLAY " GRDE = ", GRDE " and NME1 = ", NME1

             if ((GRDE  =  35)  AND  (NME1   =   "Smith
      -    " "))  then
      *    EXEC SQL INSERT INTO TESTREPORT 
      *      VALUES('0435','pass','MCO');
               CALL "SUB10" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
               DISPLAY " *** pass *** "
             else
      *    EXEC SQL INSERT INTO TESTREPORT 
      *      VALUES('0435','fail','MCO');
             ADD 1 TO errcnt
               CALL "SUB11" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
               DISPLAY " dml076.sco *** fail *** "
             END-IF

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

             DISPLAY  " "


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

      ********************** END TEST0435 *********************



      ********************** BEGIN TEST0436 *********************
      *This program tests the NULL values for various           
      *SQL Data Types                                           

             DISPLAY " TEST0436 "
             DISPLAY " NULL values for various SQL Data Types
      -    " "
             DISPLAY " reference X3.135-1989 section 4.2, 8.10 GR 8
      -    " "
             DISPLAY "
      -    " -------------------------------------------------"


             MOVE "X" TO CHARTP
             MOVE 0 TO indic1
             MOVE 0 TO indic2
             MOVE 0 TO indic3
             MOVE 0 TO indic4
             MOVE 0 TO indic5
             MOVE 0 TO indic6
             MOVE 0 TO indic7
             MOVE 0 TO indic8
             MOVE 0 TO count1
             MOVE 0 TO count2
             MOVE 0 TO count3
             MOVE 99999 TO INTTP
             MOVE 99 TO SMLTP
             MOVE 999 TO NUMTP
             MOVE 999 TO DECTP

      *  EXEC SQL INSERT INTO BB VALUES(NULL);
             CALL "SUB13" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO EE VALUES(NULL);
             CALL "SUB14" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO GG VALUES(NULL);
             CALL "SUB15" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO HH VALUES(NULL);
             CALL "SUB16" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO II VALUES(NULL);
             CALL "SUB17" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO JJ VALUES(NULL);
             CALL "SUB18" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO MM VALUES(NULL);
             CALL "SUB19" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO SS VALUES(NULL);
             CALL "SUB20" USING SQLCODE
             MOVE SQLCODE TO SQL-COD

      *  EXEC SQL SELECT CHARTEST INTO :CHARTP:indic1 
      *    FROM BB;
             CALL "SUB21" USING SQLCODE CHARTP indic1
             MOVE SQLCODE TO SQL-COD
             MOVE indic1 TO DISP1

      *  EXEC SQL SELECT INTTEST INTO :INTTP:indic2 
      *    FROM EE;
             CALL "SUB22" USING SQLCODE INTTP indic2
             MOVE SQLCODE TO SQL-COD
             MOVE indic2 TO DISP2
 
      *  EXEC SQL SELECT COUNT(*) INTO :count1 
      *    FROM GG 
      *    WHERE REALTEST IS NULL;
             CALL "SUB24" USING SQLCODE count1
             MOVE SQLCODE TO SQL-COD
          
      *  EXEC SQL SELECT SMALLTEST INTO :SMLTP:indic4 
      *    FROM HH;
             CALL "SUB25" USING SQLCODE SMLTP indic4
             MOVE SQLCODE TO SQL-COD
             MOVE indic4 TO DISP4

      *  EXEC SQL SELECT COUNT(*) INTO :count2 
      *    FROM II 
      *    WHERE DOUBLETEST IS NULL;
             CALL "SUB27" USING SQLCODE count2
             MOVE SQLCODE TO SQL-COD


      *  EXEC SQL SELECT COUNT(*) INTO :count3 
      *    FROM JJ 
      *    WHERE FLOATTEST IS NULL;
             CALL "SUB29" USING SQLCODE count3
             MOVE SQLCODE TO SQL-COD

      *  EXEC SQL SELECT NUMTEST INTO :NUMTP:indic7 
      *    FROM MM;
             CALL "SUB30" USING SQLCODE NUMTP indic7
             MOVE SQLCODE TO SQL-COD
             MOVE indic7 TO DISP7

      *  EXEC SQL SELECT NUMTEST INTO :DECTP:indic8 
      *    FROM SS;
             CALL "SUB31" USING SQLCODE DECTP indic8
             MOVE SQLCODE TO SQL-COD
             MOVE indic8 TO DISP8

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

             DISPLAY " The correct answers are:"
             DISPLAY " All indicator variables should be -1"
             DISPLAY " count1, count2, and count3 = 1"
             DISPLAY  " "
             DISPLAY " Your answers are:"
             DISPLAY " indic1 = ", DISP1 ", indic2 = ", DISP2
             DISPLAY " indic4 = ", DISP4
             DISPLAY " indic7 = ", DISP7 ", indic8 = ", DISP8
             DISPLAY " count1 = ", count1 ", count2 = ", count2 ",
      -    " count3 = ", count3

             MOVE 0 TO flag1

             MOVE 0 TO flag2

             if (indic1  NOT =  -1  OR  indic2  NOT =  -1  OR  
               indic4  NOT =  -1)  then
               MOVE 1 TO flag1
             END-IF

             if (indic7 NOT =  -1  OR  indic8  NOT =  -1)   then
               MOVE 1 TO flag1
             END-IF

             if (count1  NOT =  1  OR  count2  NOT =  1  OR  count3  NOT
             =  1)  then
               MOVE 1 TO flag2
             END-IF


             if (flag1  =  0  AND  flag2  =  0)  then
      *    EXEC SQL INSERT INTO TESTREPORT 
      *      VALUES('0436','pass','MCO');
               CALL "SUB33" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
               DISPLAY " *** pass *** "
             else
      *    EXEC SQL INSERT INTO TESTREPORT 
      *      VALUES('0436','fail','MCO');
             ADD 1 TO errcnt
               CALL "SUB34" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
               DISPLAY " dml076.sco *** fail *** "
             END-IF

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

             DISPLAY  " "

      *  EXEC SQL COMMIT WORK;
             CALL "SUB35" USING SQLCODE
             MOVE SQLCODE TO SQL-COD

      ********************** END TEST0436 *********************


      ********************** BEGIN TEST0437 *******************

             DISPLAY " TEST0437 "
             DISPLAY " NULL values for various host variables
      -    " "
             DISPLAY " reference X3.135-1989 section 4.2, 8.7, 5.6 GR
      -    " 1 or 2 "
             DISPLAY "
      -    " -------------------------------------------------- "

             MOVE -1 TO indic1 
             MOVE -1 TO indic2 
             MOVE -1 TO indic3 
             MOVE 0 TO indic4
             MOVE 0 TO indic5
             MOVE 0 TO indic6
             MOVE 0 TO count1
             MOVE 0 TO count2
             MOVE 0 TO count3
             MOVE 0 TO count4

             MOVE "2" TO CHARTP
             MOVE -23 TO DECTP
             MOVE 99 TO REALTP-SUB
      *  EXEC SQL INSERT INTO BB VALUES(:CHARTP :indic1);
             CALL "SUB36" USING SQLCODE CHARTP indic1
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO SS VALUES(:DECTP  :indic2);
             CALL "SUB37" USING SQLCODE DECTP indic2
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO GG VALUES(:REALTP-SUB :indic3);
             CALL "SUB38" USING SQLCODE REALTP-SUB indic3
             MOVE SQLCODE TO SQL-COD


             MOVE "X" TO CHARTP
             MOVE 23 TO DECTP
             MOVE 45 TO REALTP-SUB
      *  EXEC SQL INSERT INTO BB VALUES(:CHARTP :indic4);
             CALL "SUB39" USING SQLCODE CHARTP indic4
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO SS VALUES(:DECTP  :indic5);
             CALL "SUB40" USING SQLCODE DECTP indic5
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO GG VALUES(:REALTP-SUB :indic6);
             CALL "SUB41" USING SQLCODE REALTP-SUB indic6
             MOVE SQLCODE TO SQL-COD

      *  EXEC SQL INSERT INTO DD SELECT * FROM BB;
             CALL "SUB42" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO PP SELECT NUMTEST FROM SS;
             CALL "SUB43" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL INSERT INTO JJ SELECT REALTEST FROM GG
      *    WHERE REALTEST IS NULL OR REALTEST > 0;
             CALL "SUB44" USING SQLCODE
             MOVE SQLCODE TO SQL-COD

      *  EXEC SQL SELECT CHARTEST INTO :CHARTP 
      *    FROM DD 
      *    WHERE CHARTEST IS NOT NULL;
             CALL "SUB45" USING SQLCODE CHARTP
             MOVE SQLCODE TO SQL-COD

      *  EXEC SQL SELECT NUMTEST INTO :DECTP 
      *    FROM PP 
      *    WHERE NUMTEST IS NOT NULL;
             CALL "SUB46" USING SQLCODE DECTP
             MOVE SQLCODE TO SQL-COD

      *  EXEC SQL SELECT COUNT(*) INTO :REALTP-SUB
      *    FROM JJ 
      *    WHERE FLOATTEST BETWEEN 44 AND 46;
             CALL "SUB47" USING SQLCODE REALTP-SUB
             MOVE SQLCODE TO SQL-COD

      *  EXEC SQL SELECT COUNT(*) INTO :count1
      *    FROM JJ 
      *    WHERE FLOATTEST IS NOT NULL;
             CALL "SUB48" USING SQLCODE count1
             MOVE SQLCODE TO SQL-COD

      *  EXEC SQL SELECT COUNT(*) INTO :count2
      *    FROM DD
      *    WHERE CHARTEST IS NULL;
             CALL "SUB49" USING SQLCODE count2
             MOVE SQLCODE TO SQL-COD

      *  EXEC SQL SELECT COUNT(*) INTO :count3
      *    FROM PP
      *    WHERE NUMTEST IS NULL;
             CALL "SUB50" USING SQLCODE count3
             MOVE SQLCODE TO SQL-COD

      *  EXEC SQL SELECT COUNT(*) INTO :count4
      *    FROM JJ
      *    WHERE FLOATTEST IS NULL;
             CALL "SUB51" USING SQLCODE count4
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY " The correct answers are:"
             DISPLAY " CHARTP = X, DECTP = 23, REALTP-SUB = 1"
             DISPLAY " count1 = 1, count2 = 1"
             DISPLAY " count3 = 1, count4 = 1"
             DISPLAY  " "
             DISPLAY " Your answers are:"
             DISPLAY " CHARTP = ", CHARTP ", DECTP = ", DECTP ",
      -    " REALTP-SUB = ", REALTP-SUB
             DISPLAY " count1 = ", count1 ", count2 = ", count2
             DISPLAY " count3 = ", count3 ", count4 = ", count4

             MOVE 0 TO flag1

             if ((CHARTP  NOT  =   "X")  OR  DECTP  NOT =  23) then
               MOVE 1 TO flag1
             END-IF

             MOVE 0 TO flag2

             if (REALTP-SUB  NOT =  1) then
               MOVE 1 TO flag2
             END-IF

             MOVE 0 TO flag3

             if (count1  NOT =  1  OR  count2  NOT =  1  OR  count3  NOT
             =  1  OR  count4  NOT =  1) then
               MOVE 1 TO flag3
             END-IF

             if (flag1  =  0  AND  flag2  =  0  AND  flag3  =  0) then
      *    EXEC SQL INSERT INTO TESTREPORT
      *      VALUES('0437','pass','MCO');
               CALL "SUB53" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
               DISPLAY " *** pass *** "
             else
      *    EXEC SQL INSERT INTO TESTREPORT
      *      VALUES('0437','fail','MCO');
             ADD 1 TO errcnt
               CALL "SUB54" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
               DISPLAY " dml076.sco *** fail *** "
             END-IF

             DISPLAY
             "====================================================="
      *  EXEC SQL COMMIT WORK;
             CALL "SUB5" USING SQLCODE

             DISPLAY  " "
      ********************** END TEST0437 *********************

      ********************** BEGIN TEST0441 *******************

             DISPLAY " TEST0441 "
             DISPLAY " NULL values for various predicates"
             DISPLAY " reference 5.6 GR 1 or 2"
             DISPLAY
             "----------------------------------------------------"

             MOVE 0 TO count1
             MOVE -1 TO count2 
             MOVE 0 TO count3
             MOVE -1 TO count4 
             MOVE 0 TO count5
             MOVE -1 TO count6 
             MOVE 0 TO count7
             MOVE -1 TO count8 
             MOVE 0 TO count9
             MOVE -1 TO countx 
             MOVE 0 TO indic1
             MOVE -1 TO indic2 
             MOVE 0 TO indic3
             MOVE -1 TO indic4 
             MOVE 0 TO indic5
             MOVE -1 TO indic6 
             MOVE 0 TO indic7
             MOVE -1 TO indic8 
             MOVE 0 TO indic9
             MOVE -1 TO indicx 

             MOVE 11 TO DECTP
             MOVE "V___na%" TO CITY1
             MOVE "S_P%" TO NME1

      *  EXEC SQL SELECT COUNT(*) INTO :count1 
      *    FROM STAFF 
      *    WHERE GRADE BETWEEN 9 AND :DECTP :indic1;
             CALL "SUB55" USING SQLCODE count1 DECTP indic1
             MOVE SQLCODE TO SQL-COD

      *  EXEC SQL SELECT COUNT(*) INTO :count2 
      *    FROM STAFF 
      *    WHERE GRADE BETWEEN 9 AND :DECTP :indic2;
             CALL "SUB56" USING SQLCODE count2 DECTP indic2
             MOVE SQLCODE TO SQL-COD

             MOVE 39999 TO DECTP

      *  EXEC SQL SELECT COUNT(*) INTO :count3 
      *    FROM PROJ 
      *    WHERE BUDGET NOT BETWEEN 9999 AND :DECTP :indic3;
             CALL "SUB57" USING SQLCODE count3 DECTP indic3
             MOVE SQLCODE TO SQL-COD

      *  EXEC SQL SELECT COUNT(*) INTO :count4  
      *    FROM PROJ 
      *    WHERE BUDGET NOT BETWEEN 999 AND :DECTP :indic4;
             CALL "SUB58" USING SQLCODE count4 DECTP indic4
             MOVE SQLCODE TO SQL-COD

      *  EXEC SQL SELECT COUNT(*) INTO :count5 
      *    FROM  PROJ 
      *    WHERE PNAME LIKE :NME1 :indic5;
             CALL "SUB59" USING SQLCODE count5 NME1 indic5
             MOVE SQLCODE TO SQL-COD

      *  EXEC SQL SELECT COUNT(*) INTO :count6 
      *    FROM PROJ 
      *    WHERE PNAME LIKE :NME1 :indic6;
             CALL "SUB60" USING SQLCODE count6 NME1 indic6
             MOVE SQLCODE TO SQL-COD

      *  EXEC SQL SELECT COUNT(*) INTO :count7 
      *    FROM STAFF 
      *    WHERE CITY NOT LIKE :CITY1 :indic7;
             CALL "SUB61" USING SQLCODE count7 CITY1 indic7
             MOVE SQLCODE TO SQL-COD

      *  EXEC SQL SELECT COUNT(*) INTO :count8 
      *    FROM STAFF 
      *    WHERE CITY NOT LIKE :CITY1 :indic8;
             CALL "SUB62" USING SQLCODE count8 CITY1 indic8
             MOVE SQLCODE TO SQL-COD

             MOVE 20 TO DECTP

      *  EXEC SQL SELECT COUNT(*) INTO :count9
      *    FROM WORKS
      *    WHERE HOURS <> :DECTP :indic9;
             CALL "SUB63" USING SQLCODE count9 DECTP indic9
             MOVE SQLCODE TO SQL-COD

      *  EXEC SQL SELECT COUNT(*) INTO :countx
      *    FROM WORKS
      *    WHERE HOURS <> :DECTP :indicx;
             CALL "SUB64" USING SQLCODE countx DECTP indicx
             MOVE SQLCODE TO SQL-COD

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

             DISPLAY " The correct answers are:"
             DISPLAY " count1 = 1, count2 = 0"
             DISPLAY " count3 = 1, count4 = 0"
             DISPLAY " count5 = 2, count6 = 0"
             DISPLAY " count7 = 3, count8 = 0"
             DISPLAY " count9 = 8, countx = 0"
             DISPLAY  " "
             DISPLAY " Your answers are:"
             DISPLAY " count1 = ", count1 ", count2 = ", count2
             DISPLAY " count3 = ", count3 ", count4 = ", count4
             DISPLAY " count5 = ", count5 ", count6 = ", count6
             DISPLAY " count7 = ", count7 ", count8 = ", count8
             DISPLAY " count9 = ", count9 ", countx = ", countx

             MOVE 0 TO flag1
             MOVE 0 TO flag2
             MOVE 0 TO flag3

             if ((count1  NOT =  1)  OR  (count2  NOT =  0)  OR  (count3
              NOT =  1)  OR  (count4  NOT =  0))  then
               MOVE 1 TO flag1
             END-IF

             if ((count5  NOT =  2)  OR  (count6  NOT =  0)  OR  (count7
              NOT =  3)  OR  (count8  NOT =  0))  then
               MOVE 1 TO flag2
             END-IF

             if ((count9  NOT =  8)  OR  (countx  NOT =  0)) then
               MOVE 1 TO flag3
             END-IF

             if ((flag1  =  0)  AND  (flag2  =  0)  AND  (flag3  =  0))
             then
      *    EXEC SQL INSERT INTO TESTREPORT 
      *      VALUES('0441','pass','MCO');
               CALL "SUB66" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
               DISPLAY " *** pass *** "
             else
      *    EXEC SQL INSERT INTO TESTREPORT 
      *      VALUES('0441','fail','MCO');
             ADD 1 TO errcnt
               CALL "SUB67" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
               DISPLAY " dml076.sco *** fail *** "
             END-IF

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

             DISPLAY  " "


      *  EXEC SQL COMMIT WORK;
             CALL "SUB68" USING SQLCODE
             MOVE SQLCODE TO SQL-COD

      ********************** END TEST0441 *********************





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

      *    ****  Procedures for PERFORM statements

        P50.
      *    EXEC SQL FETCH X INTO :VAR1;
               CALL "SUB69" USING SQLCODE VAR1
               MOVE SQLCODE TO SQL-COD
               if (SQLCODE  =  0) then
                 COMPUTE count3 = count3 + 1
               END-IF
               DISPLAY "VAR1 = ", VAR1
             ADD 1 TO i
           .

        P49.
      *    EXEC SQL FETCH Y INTO :CITY1;
               CALL "SUB70" USING SQLCODE CITY1
               MOVE SQLCODE TO SQL-COD
               if (SQLCODE  =  0) then
                 COMPUTE count2 = count2 + 1
               END-IF
               DISPLAY "CITY1 = ", CITY1
             ADD 1 TO i
           .

        P48.
               MOVE i TO GRDE
      *    EXEC SQL FETCH DINO INTO :VAR1, :CITY1;
               CALL "SUB71" USING SQLCODE VAR1 CITY1
               MOVE SQLCODE TO SQL-COD

               if (SQLCODE  =  0) then
                 DISPLAY " VAR1 = ", VAR1 ", CITY1 = ", CITY1
                 MOVE "Dinoville" TO CITY1
      *      EXEC SQL UPDATE STAFF
      *        SET GRADE = :GRDE + 10, CITY = :CITY1
      *        WHERE CURRENT OF DINO;
                 CALL "SUB72" USING SQLCODE GRDE CITY1
                 MOVE SQLCODE TO SQL-COD
               END-IF


               if (i  =  2) then
                 MOVE "Smith" TO NME1
      *      EXEC SQL UPDATE STAFF
      *        SET GRADE = GRADE * :GRDE, EMPNAME = :NME1
      *        WHERE CURRENT OF DINO;
                 CALL "SUB73" USING SQLCODE GRDE NME1
                 MOVE SQLCODE TO SQL-COD
                 DISPLAY " VAR1 = ", VAR1 ", GRDE = ", GRDE
               END-IF
             ADD 1 TO i
           .

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