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

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


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


      ****************************************************************
      *                                                              
      *                 COMMENT SECTION                              
      *                                                              
      * DATE 1989/08/21 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.
      *                                                              
      * DML073.SCO                                                    
      * WRITTEN BY: SUN DAJUN                                        
      *                                                              
      *   THIS ROUTINE TESTS SUM, AVG, MAX ON JOINED TABLE           
      *                                                              
      * REFERENCES                                                   
      *       AMERICAN NATIONAL STANDARD database language -         
      *       X3.135-1989, 8.10, GR 9 c)                             
      *                                                              
      ****************************************************************



      * EXEC SQL BEGIN DECLARE SECTION END-EXEC
       01  EMPNO1 PIC  X(3).
       01  HOUR1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  HOUR2 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  uid PIC  X(18).
       01  uidx PIC X(18).
       01  GRD1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  GRD2 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  AVG1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  AVG2 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  SUM1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  CNT1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  MAX1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  MIN1 PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
      *  EXEC SQL END DECLARE SECTION END-EXEC

       01  SQLCODE PIC S9(9) COMP.
       01  errcnt PIC S9(4) DISPLAY SIGN LEADING SEPARATE.

       01  ifpass PIC S9(9) DISPLAY SIGN LEADING SEPARATE.
       01  lpcnt PIC S9(9) DISPLAY SIGN LEADING SEPARATE.

       01  SQL-COD PIC S9(9) 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, dml073.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 TEST0393 *******************


             DISPLAY " TEST0393 "
             DISPLAY " SUM, MAX on Cartesian product"
             DISPLAY " Reference: ANSI X3.135-1989 5.8"
             DISPLAY " 5.20 GR 2b"
             DISPLAY " - - - - - - - - - - - - - - - - - - - - - - -"
             DISPLAY  " "
             DISPLAY " SELECT SUM(HOURS), MAX(HOURS)"
             DISPLAY " INTO :HOUR1, :HOUR2"
             DISPLAY " FROM STAFF, WORKS;"

      *  EXEC SQL SELECT SUM(HOURS), MAX(HOURS)
      *    INTO :HOUR1, :HOUR2
      *    FROM  STAFF, WORKS END-EXEC
             CALL "SUB1" USING SQLCODE HOUR1 HOUR2
             MOVE SQLCODE TO SQL-COD

             DISPLAY "The correct answer is:"
             DISPLAY " 2320, 80"
             DISPLAY "Your answer is:"
             DISPLAY " ", HOUR1 ", ", HOUR2
             if (HOUR1  =  2320  AND  HOUR2  =  80) then
               DISPLAY " *** pass *** "
      *    EXEC SQL INSERT INTO TESTREPORT
      *      VALUES('0393','pass','MCO') END-EXEC
               CALL "SUB2" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
             else
               DISPLAY " dml073.sco *** fail *** "
      *    EXEC SQL INSERT INTO TESTREPORT
      *      VALUES('0393','fail','MCO') END-EXEC
             ADD 1 TO errcnt
               CALL "SUB3" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
             END-IF
             DISPLAY
             "===================================================="
      *  EXEC SQL COMMIT WORK END-EXEC
             CALL "SUB4" USING SQLCODE
             MOVE SQLCODE TO SQL-COD

      ******************** END TEST0393 *******************




      ******************** BEGIN TEST0394 *******************


             DISPLAY " TEST0394 "
             DISPLAY " AVG, MIN on joined table with WHERE without
      -    " GROUP"
             DISPLAY " Reference: ANSI X3.135-1989 5.8 5.21"
             DISPLAY " - - - - - - - - - - - - - - - - - - - - - - -"
             DISPLAY  " "
             DISPLAY " SELECT AVG(HOURS), MIN(HOURS)"
             DISPLAY " INTO :HOUR1, :HOUR2"
             DISPLAY " FROM STAFF, WORKS"
             DISPLAY " WHERE STAFF.EMPNUM = 'E2'"
             DISPLAY " AND STAFF.EMPNUM =
      -    " WORKS.EMPNUM;"

      *  EXEC SQL SELECT AVG(HOURS), MIN(HOURS)
      *    INTO :HOUR1, :HOUR2
      *    FROM  STAFF, WORKS
      *    WHERE STAFF.EMPNUM = 'E2'
      *    AND STAFF.EMPNUM = WORKS.EMPNUM END-EXEC
             CALL "SUB5" USING SQLCODE HOUR1 HOUR2
             MOVE SQLCODE TO SQL-COD

             DISPLAY "The correct answer is:"
             DISPLAY " 60, 40"
             DISPLAY "Your answer is:"
             DISPLAY " ", HOUR1 ", ", HOUR2
             if (HOUR1  =  60  AND  HOUR2  =  40) then
               DISPLAY " *** pass *** "
      *    EXEC SQL INSERT INTO TESTREPORT
      *      VALUES('0394','pass','MCO') END-EXEC
               CALL "SUB6" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
             else
               DISPLAY " dml073.sco *** fail *** "
      *    EXEC SQL INSERT INTO TESTREPORT
      *      VALUES('0394','fail','MCO') END-EXEC
             ADD 1 TO errcnt
               CALL "SUB7" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
             END-IF
             DISPLAY
             "===================================================="
      *  EXEC SQL COMMIT WORK END-EXEC
             CALL "SUB8" USING SQLCODE
             MOVE SQLCODE TO SQL-COD

      ******************** END TEST0394 *******************





      ******************** BEGIN TEST0395 *******************


             DISPLAY " TEST0395 "
             DISPLAY "SUM, MIN on joined table with GROUP without WHERE"
             DISPLAY " Reference: ANSI X3.135-1989 5.8 5.22"
             DISPLAY " - - - - - - - - - - - - - - - - - - - - - - -"
             DISPLAY  " "
             DISPLAY " DECLARE JUPITER CURSOR FOR "
             DISPLAY " SELECT STAFF.EMPNUM, SUM(HOURS),
      -    " MIN(HOURS)"
             DISPLAY " FROM STAFF, WORKS"
             DISPLAY " GROUP BY STAFF.EMPNUM"
             DISPLAY " ORDER BY 1;"
             DISPLAY  " "

      *  EXEC SQL DECLARE JUPITER CURSOR FOR 
      *    SELECT STAFF.EMPNUM, SUM(HOURS), MIN(HOURS)
      *    FROM  STAFF, WORKS
      *    GROUP BY STAFF.EMPNUM
      *    ORDER BY 1 END-EXEC

             DISPLAY "The correct answer is:"
             DISPLAY " E1, 464, 12"
             DISPLAY " E2, 464, 12"
             DISPLAY " E3, 464, 12"
             DISPLAY " E4, 464, 12"
             DISPLAY " E5, 464, 12"
             DISPLAY "Your answer is:"
             MOVE 1 TO ifpass
      *  EXEC SQL OPEN JUPITER END-EXEC
             CALL "SUB9" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL FETCH JUPITER INTO :EMPNO1, :HOUR1, :HOUR2
      *  END-EXEC
             CALL "SUB10" USING SQLCODE EMPNO1 HOUR1 HOUR2
             MOVE SQLCODE TO SQL-COD
             DISPLAY " ", EMPNO1 ", ", HOUR1 ", ", HOUR2
             if (HOUR1  NOT =  464  OR  HOUR2  NOT =  12  OR  EMPNO1 
             NOT  =   "E1"then
               MOVE 0 TO ifpass
             END-IF
      *  EXEC SQL FETCH JUPITER INTO :EMPNO1, :HOUR1, :HOUR2
      *  END-EXEC
             CALL "SUB11" USING SQLCODE EMPNO1 HOUR1 HOUR2
             MOVE SQLCODE TO SQL-COD
             DISPLAY " ", EMPNO1 ", ", HOUR1 ", ", HOUR2
             if (HOUR1  NOT =  464  OR  HOUR2  NOT =  12  OR  EMPNO1 
             NOT  =   "E2"then
               MOVE 0 TO ifpass
             END-IF
      *  EXEC SQL FETCH JUPITER INTO :EMPNO1, :HOUR1, :HOUR2
      *  END-EXEC
             CALL "SUB12" USING SQLCODE EMPNO1 HOUR1 HOUR2
             MOVE SQLCODE TO SQL-COD
             DISPLAY " ", EMPNO1 ", ", HOUR1 ", ", HOUR2
             if (HOUR1  NOT =  464  OR  HOUR2  NOT =  12  OR  EMPNO1 
             NOT  =   "E3"then
               MOVE 0 TO ifpass
             END-IF
      *  EXEC SQL FETCH JUPITER INTO :EMPNO1, :HOUR1, :HOUR2
      *  END-EXEC
             CALL "SUB13" USING SQLCODE EMPNO1 HOUR1 HOUR2
             MOVE SQLCODE TO SQL-COD
             DISPLAY " ", EMPNO1 ", ", HOUR1 ", ", HOUR2
             if (HOUR1  NOT =  464  OR  HOUR2  NOT =  12  OR  EMPNO1 
             NOT  =   "E4"then
               MOVE 0 TO ifpass
             END-IF
      *  EXEC SQL FETCH JUPITER INTO :EMPNO1, :HOUR1, :HOUR2
      *  END-EXEC
             CALL "SUB14" USING SQLCODE EMPNO1 HOUR1 HOUR2
             MOVE SQLCODE TO SQL-COD
             DISPLAY " ", EMPNO1 ", ", HOUR1 ", ", HOUR2
             if (HOUR1  NOT =  464  OR  HOUR2  NOT =  12  OR  EMPNO1 
             NOT  =   "E5"then
               MOVE 0 TO ifpass
             END-IF
      *  EXEC SQL FETCH JUPITER INTO :EMPNO1, :HOUR1, :HOUR2
      *  END-EXEC
             CALL "SUB15" USING SQLCODE EMPNO1 HOUR1 HOUR2
             MOVE SQLCODE TO SQL-COD
             if (SQLCODE  NOT =  0) then
      *    EXEC SQL CLOSE JUPITER END-EXEC
               CALL "SUB16" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
             END-IF
             if (ifpass  =  1) then
               DISPLAY " *** pass *** "
      *    EXEC SQL INSERT INTO TESTREPORT
      *      VALUES('0395','pass','MCO') END-EXEC
               CALL "SUB17" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
             else
               DISPLAY " dml073.sco *** fail *** "
      *    EXEC SQL INSERT INTO TESTREPORT
      *      VALUES('0395','fail','MCO') END-EXEC
             ADD 1 TO errcnt
               CALL "SUB18" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
             END-IF
             DISPLAY
             "===================================================="
      *  EXEC SQL COMMIT WORK END-EXEC
             CALL "SUB19" USING SQLCODE
             MOVE SQLCODE TO SQL-COD

      ******************** END TEST0395 *******************




      ******************** BEGIN TEST0396 *******************


             DISPLAY " TEST0396 "
             DISPLAY "SUM, MIN on joined table with WHERE,GROUP
      -    " BY,HAVING"
             DISPLAY " Reference: ANSI X3.135-1989 5.8 5.21 5.22 5.23"
             DISPLAY " - - - - - - - - - - - - - - - - - - - - - - -"
             DISPLAY  " "
             DISPLAY " DECLARE VENUS CURSOR FOR"
             DISPLAY " SELECT STAFF.EMPNUM, AVG(HOURS),
      -    " MIN(HOURS)"
             DISPLAY " FROM STAFF, WORKS"
             DISPLAY " WHERE STAFF.EMPNUM IN ('E1','E4','E3')
      -    " AND"
             DISPLAY " STAFF.EMPNUM = WORKS.EMPNUM"
             DISPLAY " GROUP BY STAFF.EMPNUM"
             DISPLAY " HAVING COUNT(*) > 1"
             DISPLAY " ORDER BY 1;"
             DISPLAY  " "

      *  EXEC SQL DECLARE VENUS CURSOR FOR
      *    SELECT STAFF.EMPNUM, AVG(HOURS), MIN(HOURS)
      *    FROM  STAFF, WORKS
      *    WHERE STAFF.EMPNUM IN ('E1','E4','E3') AND
      *    STAFF.EMPNUM = WORKS.EMPNUM
      *    GROUP BY STAFF.EMPNUM
      *    HAVING COUNT(*) > 1
      *    ORDER BY 1 END-EXEC

             DISPLAY "The correct answer is:"
             DISPLAY " E1, 30 or 31, 12"
             DISPLAY " E4, 46 or 47, 20"
             DISPLAY "Your answer is:"
             MOVE 1 TO ifpass
      *  EXEC SQL OPEN VENUS END-EXEC
             CALL "SUB20" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL FETCH VENUS INTO :EMPNO1, :HOUR1, :HOUR2 END-EXEC
             CALL "SUB21" USING SQLCODE EMPNO1 HOUR1 HOUR2
             MOVE SQLCODE TO SQL-COD
             DISPLAY " ", EMPNO1 ", ", HOUR1 ", ", HOUR2
             if (HOUR1  <  30  OR  HOUR1  >  31  OR  HOUR2  NOT =  12 
             OR  EMPNO1  NOT  =   "E1"then
               MOVE 0 TO ifpass
             END-IF
      *  EXEC SQL FETCH VENUS INTO :EMPNO1, :HOUR1, :HOUR2 END-EXEC
             CALL "SUB22" USING SQLCODE EMPNO1 HOUR1 HOUR2
             MOVE SQLCODE TO SQL-COD
             DISPLAY " ", EMPNO1 ", ", HOUR1 ", ", HOUR2
             if (HOUR1  <  46  OR  HOUR1  >  47  OR  HOUR2  NOT =  20 
             OR  EMPNO1  NOT  =   "E4"then
               MOVE 0 TO ifpass
             END-IF
      *  EXEC SQL FETCH VENUS INTO :EMPNO1, :HOUR1, :HOUR2 END-EXEC
             CALL "SUB23" USING SQLCODE EMPNO1 HOUR1 HOUR2
             MOVE SQLCODE TO SQL-COD
             if (SQLCODE  =  0) then
               MOVE 0 TO ifpass
             END-IF
      *  EXEC SQL CLOSE VENUS END-EXEC
             CALL "SUB24" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
             if (ifpass  =  1) then
               DISPLAY " *** pass *** "
      *    EXEC SQL INSERT INTO TESTREPORT
      *      VALUES('0396','pass','MCO') END-EXEC
               CALL "SUB25" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
             else
               DISPLAY " dml073.sco *** fail *** "
      *    EXEC SQL INSERT INTO TESTREPORT
      *      VALUES('0396','fail','MCO') END-EXEC
             ADD 1 TO errcnt
               CALL "SUB26" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
             END-IF
             DISPLAY
             "===================================================="
      *  EXEC SQL COMMIT WORK END-EXEC
             CALL "SUB27" USING SQLCODE
             MOVE SQLCODE TO SQL-COD

      ******************** END TEST0396 *******************




      ******************** BEGIN TEST0417 *******************


             DISPLAY " TEST0417 "
             DISPLAY " Cartesian product GROUP BY 2 columns with NULLs"
             DISPLAY " Reference: ANSI X3.135-1989 5.22 GR 2) 3)"
             DISPLAY " 5.11 GR 7)"
             DISPLAY " - - - - - - - - - - - - - - - - - - - - - - -"
             DISPLAY  " "
             DISPLAY " DECLARE PLUTO CURSOR FOR"
             DISPLAY " SELECT MAX(STAFF1.GRADE),
      -    " SUM(STAFF1.GRADE)"
             DISPLAY " FROM STAFF1, STAFF"
             DISPLAY " GROUP BY STAFF1.CITY, STAFF.CITY;"
             DISPLAY  " "

             MOVE 0 TO ifpass

      *  EXEC SQL DELETE FROM STAFF1 END-EXEC
             CALL "SUB28" USING SQLCODE
             MOVE SQLCODE TO SQL-COD

      *  EXEC SQL INSERT INTO STAFF
      *    VALUES ('E6', 'David', 17, NULL) END-EXEC
             CALL "SUB29" USING SQLCODE
             MOVE SQLCODE TO SQL-COD

      *  EXEC SQL INSERT INTO STAFF
      *    VALUES ('E7', 'Tony', 18, NULL) END-EXEC
             CALL "SUB30" USING SQLCODE
             MOVE SQLCODE TO SQL-COD

      *  EXEC SQL INSERT INTO STAFF1
      *    SELECT * FROM STAFF END-EXEC
             CALL "SUB31" USING SQLCODE
             MOVE SQLCODE TO SQL-COD

      *  EXEC SQL DECLARE PLUTO CURSOR FOR
      *    SELECT MAX(STAFF1.GRADE), SUM(STAFF1.GRADE)
      *    FROM STAFF1, STAFF
      *    GROUP BY STAFF1.CITY, STAFF.CITY END-EXEC

             DISPLAY "For groups containing MAX(GRADE) = 18,"
             DISPLAY "the correct answer is:"
             DISPLAY " 18, 35"
             DISPLAY " 18, 70"
             DISPLAY " 18, 70"
             DISPLAY " 18, 70"
             DISPLAY "Your answer is:"
      *  EXEC SQL OPEN PLUTO END-EXEC
             CALL "SUB32" USING SQLCODE
             MOVE SQLCODE TO SQL-COD

             MOVE 1 TO lpcnt
             PERFORM P50 UNTIL lpcnt > 19
      *  EXEC SQL CLOSE PLUTO END-EXEC
             CALL "SUB33" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
      *  EXEC SQL ROLLBACK WORK END-EXEC
             CALL "SUB34" USING SQLCODE
             MOVE SQLCODE TO SQL-COD
             if (ifpass  =  301) then
               DISPLAY " *** pass *** "
      *    EXEC SQL INSERT INTO TESTREPORT
      *      VALUES('0417','pass','MCO') END-EXEC
               CALL "SUB35" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
             else
               DISPLAY " dml073.sco *** fail *** "
      *    EXEC SQL INSERT INTO TESTREPORT
      *      VALUES('0417','fail','MCO') END-EXEC
             ADD 1 TO errcnt
               CALL "SUB36" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
             END-IF
             DISPLAY
             "===================================================="
      *  EXEC SQL COMMIT WORK END-EXEC
             CALL "SUB37" USING SQLCODE
             MOVE SQLCODE TO SQL-COD

      ******************** END TEST0417 *******************





      ******************** BEGIN TEST0418 *******************


             DISPLAY " TEST0418 "
             DISPLAY " AVG, SUM, COUNT on Cartesian product with NULL"
             DISPLAY " Reference: ANSI X3.135-1989 5.8 GR 2)"
             DISPLAY " 5.9 GR 1)"
             DISPLAY " 5.11 GR 7)"
             DISPLAY " - - - - - - - - - - - - - - - - - - - - - - -"
             DISPLAY  " "
             DISPLAY " SELECT AVG(T1.COL4), AVG(T1.COL4 +
      -    " T2.COL4),"
             DISPLAY " SUM(T2.COL4), COUNT(DISTINCT
      -    " T1.COL4)"
             DISPLAY " INTO :AVG1, :AVG2, :SUM1, :CNT1"
             DISPLAY " FROM VTABLE T1, VTABLE T2;"
             DISPLAY  " "

      *  EXEC SQL SELECT AVG(T1.COL4), AVG(T1.COL4 + T2.COL4),
      *    SUM(T2.COL4), COUNT(DISTINCT T1.COL4)
      *    INTO :AVG1, :AVG2, :SUM1, :CNT1
      *    FROM VTABLE T1, VTABLE T2 END-EXEC
             CALL "SUB38" USING SQLCODE AVG1 AVG2 SUM1 CNT1
             MOVE SQLCODE TO SQL-COD

             DISPLAY "The correct answer is:"
             DISPLAY " 147 or 148, 295 or 296, 1772, 3"
             DISPLAY "Your answer is:"
             DISPLAY " ", AVG1 ", ", AVG2 ", ", SUM1 ", ", CNT1
             MOVE 1 TO ifpass
             if (CNT1  NOT =  3  OR  SUM1  NOT =  1772) then
               MOVE 0 TO ifpass
             END-IF
             if (AVG1  <  147  OR  AVG1  >  148) then
               MOVE 0 TO ifpass
             END-IF
             if (AVG2  <  295  OR  AVG2  >  296) then
               MOVE 0 TO ifpass
             END-IF
             if (ifpass  =  1) then
               DISPLAY " *** pass *** "
      *    EXEC SQL INSERT INTO TESTREPORT
      *      VALUES('0418','pass','MCO') END-EXEC
               CALL "SUB39" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
             else
               DISPLAY " dml073.sco *** fail *** "
      *    EXEC SQL INSERT INTO TESTREPORT
      *      VALUES('0418','fail','MCO') END-EXEC
             ADD 1 TO errcnt
               CALL "SUB40" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
             END-IF
             DISPLAY
             "===================================================="
      *  EXEC SQL COMMIT WORK END-EXEC
             CALL "SUB41" USING SQLCODE
             MOVE SQLCODE TO SQL-COD

      ******************** END TEST0418 *******************





      ******************** BEGIN TEST0419 *******************


             DISPLAY " TEST0419 "
             DISPLAY " SUM,MAX,MIN on joined table view "
             DISPLAY " Reference: ANSI X3.135-1989 5.8 GR 2)"
             DISPLAY " 6.9 GR 1)"
             DISPLAY " - - - - - - - - - - - - - - - - - - - - - - -"
             DISPLAY  " "
             DISPLAY " SELECT SUM(COST), MAX(COST), MIN(COST)"
             DISPLAY " INTO :SUM1, :MAX1, :MIN1"
             DISPLAY " FROM STAFF_WORKS_DESIGN;"
             DISPLAY  " "

      *  EXEC SQL SELECT SUM(COST), MAX(COST), MIN(COST)
      *    INTO :SUM1, :MAX1, :MIN1
      *    FROM STAFF_WORKS_DESIGN END-EXEC
             CALL "SUB42" USING SQLCODE SUM1 MAX1 MIN1
             MOVE SQLCODE TO SQL-COD

             DISPLAY "The correct answer is:"
             DISPLAY " 3488, 960, 288"
             DISPLAY "Your answer is:"
             DISPLAY " ", SUM1 ", ", MAX1 ", ", MIN1
             MOVE 1 TO ifpass
             if (SUM1  NOT =  3488) then
               MOVE 0 TO ifpass
             END-IF
             if (MAX1  NOT =  960) then
               MOVE 0 TO ifpass
             END-IF
             if (MIN1  NOT =  288) then
               MOVE 0 TO ifpass
             END-IF
             if (ifpass  =  1) then
               DISPLAY " *** pass *** "
      *    EXEC SQL INSERT INTO TESTREPORT
      *      VALUES('0419','pass','MCO') END-EXEC
               CALL "SUB43" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
             else
               DISPLAY " dml073.sco *** fail *** "
      *    EXEC SQL INSERT INTO TESTREPORT
      *      VALUES('0419','fail','MCO') END-EXEC
             ADD 1 TO errcnt
               CALL "SUB44" USING SQLCODE
               MOVE SQLCODE TO SQL-COD
             END-IF
             DISPLAY
             "===================================================="
      *  EXEC SQL COMMIT WORK END-EXEC
             CALL "SUB45" USING SQLCODE
             MOVE SQLCODE TO SQL-COD

      ******************** END TEST0419 *******************






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

      *    ****  Procedures for PERFORM statements

        P50.
               MOVE 0 TO GRD1
      *    EXEC SQL FETCH PLUTO INTO :GRD1, :GRD2 END-EXEC
               CALL "SUB46" USING SQLCODE GRD1 GRD2
               MOVE SQLCODE TO SQL-COD
               if (GRD1  =  18  AND  GRD2  =  35) then
                 COMPUTE ifpass = ifpass + 1
                 DISPLAY " ", GRD1 ", ", GRD2
               END-IF
               if (GRD1  =  18  AND  GRD2  =  70) then
                 COMPUTE ifpass = ifpass + 100
                 DISPLAY " ", GRD1 ", ", GRD2
               END-IF

             ADD 1 TO lpcnt
           .

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