* Standard COBOL (file "DML019.SCO") calling SQL * procedures in file "DML019.MCO"
**************************************************************** * * COMMENT SECTION * * DATE 1987/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. * * DML019.SCO * WRITTEN BY: HU YANPING * TRANSLATED AUTOMATICALLY FROM EMBEDDED COBOL BY CHRIS SCHANZLE * * THIS ROUTINE TESTS THE GROUP BY CLAUSE IN THE SQL LANGUAGE * * REFERENCES * AMERICAN NATIONAL STANDARD database language - SQL * X3.135-1989 * * SECTION 5.22 <group by clause> * ****************************************************************
MOVE"HU"TO uid CALL"AUTHID"USING uid MOVE"not logged in, not"TO uidx CALL"AUTHCK"USINGSQLCODE uidx MOVESQLCODETO SQL-COD if (uid NOT = uidx) then DISPLAY"ERROR: User " uid " expected." DISPLAY"User " uidx " connected." DISPLAY" " STOPRUN END-IF
MOVE 0 TO errcnt DISPLAY "SQL Test Suite, V6.0, Module COBOL, dml019.sco" DISPLAY" " DISPLAY "59-byte ID" DISPLAY"TEd Version #" DISPLAY" " * date_time print * ACCEPT TO-DAY FROMDATE ACCEPT THE-TIME FROMTIME DISPLAY"Date run YYMMDD: " TO-DAY " at hhmmssff: " THE-TIME ******************** BEGIN TEST0074 *******************
DISPLAY" TEST0074 " DISPLAY" reference ANSI X3.135-1989 5.22 <group by clause>" DISPLAY" - - - - - - - - - - - - - - - - - - -" DISPLAY" *** SELECT PNUM, SUM(HOURS) " DISPLAY" *** FROM WORKS " DISPLAY" *** GROUP BY PNUM "
* EXEC SQL DECLARE WORKS1 CURSOR FOR * SELECT PNUM, SUM(HOURS) * FROM WORKS * GROUP BY PNUM END-EXEC * EXEC SQL OPEN WORKS1; CALL"SUB1"USINGSQLCODE MOVESQLCODETO SQL-COD MOVE 0 TO i MOVE 1 TO ii PERFORM P50 UNTIL ii > 19 * EXEC SQL CLOSE WORKS1; CALL"SUB2"USINGSQLCODE MOVESQLCODETO SQL-COD DISPLAY" "
DISPLAY" i should be 6, i=", i if (i = 6) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0074','pass','MCO') END-EXEC CALL"SUB3"USINGSQLCODE MOVESQLCODETO SQL-COD else DISPLAY" dml019.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0074','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB4"USINGSQLCODE MOVESQLCODETO SQL-COD END-IF
DISPLAY" *** SELECT * " DISPLAY" *** FROM WORKS " DISPLAY" *** GROUP BY EMPNUM,HOURS "
* EXEC SQL DECLARE WORKS4 CURSOR FOR * SELECT EMPNUM,HOURS * FROM WORKS * GROUP BY EMPNUM,HOURS END-EXEC
* EXEC SQL OPEN WORKS4; CALL"SUB11"USINGSQLCODE MOVESQLCODETO SQL-COD MOVE 0 TO i if (SQLCODE = 0) then DISPLAY" EMPNUM HOURS " END-IF MOVE 1 TO ii PERFORM P48 UNTIL ii > 19 * EXEC SQL CLOSE WORKS4; CALL"SUB12"USINGSQLCODE MOVESQLCODETO SQL-COD DISPLAY" "
DISPLAY" i should be 10, i=", i if (i = 10) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0076','pass','MCO') END-EXEC CALL"SUB13"USINGSQLCODE MOVESQLCODETO SQL-COD else DISPLAY" dml019.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0076','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB14"USINGSQLCODE MOVESQLCODETO SQL-COD END-IF
******************** END TEST0076 ******************* ******************** BEGIN TEST0077 *******************
DISPLAY" TEST0077 " DISPLAY" reference ANSI X3.135-1989 5.22 <group by clause>" DISPLAY" - - - - - - - - - - - - - - - - - - -" DISPLAY" *** SELECT * " DISPLAY" *** FROM WORKS " DISPLAY" *** GROUP BY PNUM,EMPNUM,HOURS "
* This query satisfies 5.25 SR 7), becuase table WORKS only * has three columns which are all in GROUP BY cluase. * (see 5.25 SR 4). about the <select list> "*".)
* EXEC SQL DECLARE WORKS5 CURSOR FOR * SELECT * * FROM WORKS * GROUP BY PNUM,EMPNUM,HOURS END-EXEC * EXEC SQL OPEN WORKS5; CALL"SUB16"USINGSQLCODE MOVESQLCODETO SQL-COD MOVE 0 TO i if (SQLCODE = 0) then DISPLAY" EMPNUM PNUM HOURS " END-IF MOVE 1 TO ii PERFORM P47 UNTIL ii > 19 * EXEC SQL CLOSE WORKS5; CALL"SUB17"USINGSQLCODE MOVESQLCODETO SQL-COD DISPLAY" "
DISPLAY" i should be 12, i=", i if (i = 12) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0077','pass','MCO') END-EXEC CALL"SUB18"USINGSQLCODE MOVESQLCODETO SQL-COD else DISPLAY" dml019.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0077','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB19"USINGSQLCODE MOVESQLCODETO SQL-COD END-IF
******************** END TEST0077 ******************* ******************** BEGIN TEST0078 *******************
DISPLAY" TEST0078 " DISPLAY" reference ANSI X3.135-1989 5.22 <group by clause>" DISPLAY" - - - - - - - - - - - - - - - - - - -" DISPLAY" *** SELECT PNUM,EMPNUM " DISPLAY" *** FROM WORKS " DISPLAY" *** GROUP BY EMPNUM,PNUM,HOURS "
* EXEC SQL DECLARE WORKS10 CURSOR FOR * SELECT PNUM,EMPNUM * FROM WORKS * GROUP BY EMPNUM,PNUM,HOURS END-EXEC * EXEC SQL OPEN WORKS10; CALL"SUB21"USINGSQLCODE MOVESQLCODETO SQL-COD MOVE 0 TO i if (SQLCODE = 0) then DISPLAY" PNUM EMPNUM " END-IF MOVE 1 TO ii PERFORM P46 UNTIL ii > 19 * EXEC SQL CLOSE WORKS10; CALL"SUB22"USINGSQLCODE MOVESQLCODETO SQL-COD DISPLAY" " DISPLAY" i shoud be 12, i=", i if (i = 12) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0078','pass','MCO') END-EXEC CALL"SUB23"USINGSQLCODE MOVESQLCODETO SQL-COD else DISPLAY" dml019.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0078','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB24"USINGSQLCODE MOVESQLCODETO SQL-COD END-IF
DISPLAY" *** SELECT SUM(GRADE) " DISPLAY" *** FROM STAFF " DISPLAY" *** WHERE CITY IS NULL " DISPLAY" *** GROUP BY CITY "
* EXEC SQL DECLARE WORKS11 CURSOR FOR * SELECT SUM(GRADE) * FROM STAFF * WHERE CITY IS NULL * GROUP BY CITY END-EXEC * EXEC SQL OPEN WORKS11; CALL"SUB28"USINGSQLCODE MOVESQLCODETO SQL-COD MOVE 0 TO i * EXEC SQL FETCH WORKS11 INTO :i; CALL"SUB29"USINGSQLCODE i MOVESQLCODETO SQL-COD * EXEC SQL CLOSE WORKS11; CALL"SUB30"USINGSQLCODE MOVESQLCODETO SQL-COD * EXEC SQL DELETE FROM STAFF WHERE CITY IS NULL; CALL"SUB31"USINGSQLCODE MOVESQLCODETO SQL-COD
DISPLAY" " DISPLAY" i shoud be 90, i=", i if (i = 90) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0079','pass','MCO') END-EXEC CALL"SUB32"USINGSQLCODE MOVESQLCODETO SQL-COD else DISPLAY" dml019.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0079','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB33"USINGSQLCODE MOVESQLCODETO SQL-COD END-IF
******************** END TEST0079 *******************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
* **** Procedures for PERFORM statements
P50. * EXEC SQL FETCH WORKS1 INTO * :PNO1,:HOURS1 END-EXEC CALL"SUB35"USINGSQLCODE PNO1 HOURS1 MOVESQLCODETO SQL-COD if (SQLCODE = 0) then COMPUTE i = i + 1 DISPLAY" PNUM=", PNO1 " HOURS=", HOURS1 END-IF ADD 1 TO ii
.
P49. * EXEC SQL FETCH WORKS2 INTO * :EMPNO1 END-EXEC CALL"SUB36"USINGSQLCODE EMPNO1 MOVESQLCODETO SQL-COD if (SQLCODE = 0) then COMPUTE i = i + 1 DISPLAY" WORKS.EMPNUM = ", EMPNO1 " " END-IF ADD 1 TO ii
.
P48. * EXEC SQL FETCH WORKS4 INTO * :EMPNO1,:HOURS1 END-EXEC CALL"SUB37"USINGSQLCODE EMPNO1 HOURS1 MOVESQLCODETO SQL-COD if (SQLCODE = 0) then COMPUTE i = i + 1 DISPLAY" ", EMPNO1 " ", HOURS1 " " END-IF ADD 1 TO ii
.
P47. * EXEC SQL FETCH WORKS5 INTO * :EMPNO1,:PNO1,:HOURS1 END-EXEC CALL"SUB38"USINGSQLCODE EMPNO1 PNO1 HOURS1 MOVESQLCODETO SQL-COD if (SQLCODE = 0) then COMPUTE i = i + 1 DISPLAY" ", EMPNO1 " ", PNO1 " ", HOURS1 END-IF ADD 1 TO ii
.
P46. * EXEC SQL FETCH WORKS10 INTO * :PNO1,:EMPNO1 END-EXEC CALL"SUB39"USINGSQLCODE PNO1 EMPNO1 MOVESQLCODETO SQL-COD if (SQLCODE = 0) then COMPUTE i = i + 1 DISPLAY" ", PNO1 " ", EMPNO1 " " END-IF ADD 1 TO ii
.
Messung V0.5 in Prozent
¤ 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.0.12Bemerkung:
(vorverarbeitet am 2026-04-27)
¤
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 und die Messung sind noch experimentell.