* Standard COBOL (file "DML059.SCO") calling SQL * procedures in file "DML059.MCO". * STANDARD COBOL (file "DML059.SCO")
**************************************************************** * * COMMENT SECTION * * DATE 1989/07/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. * * DML059.SCO * WRITTEN BY: SUN DAJUN * TRANSLATED AUTOMATICALLY FROM STANDARD C BY CHRIS SCHANZLE * * THIS ROUTINE TESTS THE SET FUNCTION SPECIFICATION IN * COMMON ELEMENTS OF THE SQL LANGUAGE. * * REFERENCES * AMERICAN NATIONAL STANDARD database language - SQL * X3.135-1989 * * SECTION 5.8 <set function specification> * SECTION 8. Data manipulation language * ****************************************************************
******************** END TEST0257 *******************
******************** BEGIN TEST0258 *******************
DISPLAY" Set Function Specification " DISPLAY"Reference X3.135-1989 section 5.8 General Rules " DISPLAY" ------------------------------------------ " DISPLAY" TEST0258 " DISPLAY" Reference 5.8 General Rules 1)" DISPLAY" - - - - - - - - - - - - - - - - - - - - - " DISPLAY" " DISPLAY" " DISPLAY" INSERT INTO VTABLE" DISPLAY" VALUES (10,11,12,13,15);" DISPLAY" " DISPLAY" INSERT INTO VTABLE" DISPLAY" VALUES (100,111,1112,113,115);" DISPLAY" " DISPLAY" DECLARE UN CURSOR " DISPLAY" FOR SELECT COL1,SUM(:int3 * COL2 *
- " COL3)" DISPLAY" FROM VTABLE" DISPLAY" GROUP BY COL1" DISPLAY" HAVING SUM(COL2 * COL3) > 2000 " DISPLAY" OR SUM(COL2 * COL3) < -2000" DISPLAY" ORDER BY COL1;" DISPLAY" "
MOVE2TO int3
* EXEC SQL INSERT INTO VTABLE * VALUES (10,11,12,13,15); CALL"SUB14"USINGSQLCODE MOVESQLCODETO SQL-COD * EXEC SQL INSERT INTO VTABLE * VALUES (100,111,1112,113,115); CALL"SUB15"USINGSQLCODE MOVESQLCODETO SQL-COD * EXEC SQL DECLARE UN CURSOR * FOR SELECT COL1,SUM(:int3 * COL2 * COL3) * FROM VTABLE * GROUP BY COL1 * HAVING SUM(COL2 * COL3) > 2000 * OR SUM(COL2 * COL3) < -2000 * ORDER BY COL1 END-EXEC * EXEC SQL OPEN UN; CALL"SUB16"USINGSQLCODE int3 MOVESQLCODETO SQL-COD DISPLAY" The correct answer is :" DISPLAY" 100, 366864" DISPLAY" 1000, -12000000" DISPLAY" Your answer is :"
MOVE0TO flag
* EXEC SQL FETCH UN INTO :int1,:int2; CALL"SUB17"USINGSQLCODE int1 int2 MOVESQLCODETO SQL-COD DISPLAY" ", int1 ", ", int2 if (int1 = 100AND int2 = 366864) then MOVE flag TO flag else MOVE1TO flag END-IF
* EXEC SQL FETCH UN INTO :int1,:int2; CALL"SUB18"USINGSQLCODE int1 int2 MOVESQLCODETO SQL-COD DISPLAY" ", int1 ", ", int2 if (int1 = 1000AND int2 = -12000000) then MOVE flag TO flag else MOVE1TO flag END-IF
******************** END TEST0258 *******************
******************** BEGIN TEST0259 *******************
DISPLAY" ANY, SOME in HAVING Clause " DISPLAY"Reference X3.135-1989 section 5.23 General Rules " DISPLAY" ------------------------------------------ " DISPLAY" TEST0259 " DISPLAY" Reference 5.8 General Rules 1)" DISPLAY" - - - - - - - - - - - - - - - - - - - - - " DISPLAY" " DISPLAY" " DISPLAY" INSERT INTO VTABLE" DISPLAY" VALUES (10,11,12,13,15);" DISPLAY" " DISPLAY" INSERT INTO VTABLE" DISPLAY" VALUES (100,111,1112,113,115);" DISPLAY" " DISPLAY" DECLARE SUN1 CURSOR " DISPLAY" FOR SELECT COL1,MAX(COL2)" DISPLAY" FROM VTABLE" DISPLAY" GROUP BY COL1" DISPLAY" HAVING MAX(COL2) > ANY (SELECT GRADE FROM
- " STAFF) " DISPLAY" AND MAX(COL2) < SOME (SELECT HOURS FROM
- " WORKS)" DISPLAY" ORDER BY COL1;" DISPLAY" " * EXEC SQL INSERT INTO VTABLE * VALUES (10,11,12,13,15); CALL"SUB24"USINGSQLCODE MOVESQLCODETO SQL-COD * EXEC SQL INSERT INTO VTABLE * VALUES (100,111,1112,113,115); CALL"SUB25"USINGSQLCODE MOVESQLCODETO SQL-COD * EXEC SQL DECLARE SUN1 CURSOR * FOR SELECT COL1,MAX(COL2) * FROM VTABLE * GROUP BY COL1 * HAVING MAX(COL2) > ANY (SELECT GRADE FROM STAFF) * AND MAX(COL2) < SOME (SELECT HOURS FROM WORKS) * ORDER BY COL1 END-EXEC * EXEC SQL OPEN SUN1; CALL"SUB26"USINGSQLCODE MOVESQLCODETO SQL-COD DISPLAY" The correct answer is :" DISPLAY" 10, 20" DISPLAY" Your answer is :"
MOVE0TO flag
* EXEC SQL FETCH SUN1 INTO :int1,:int2; CALL"SUB27"USINGSQLCODE int1 int2 MOVESQLCODETO SQL-COD DISPLAY" ", int1 ", ", int2 if (int1 = 10AND int2 = 20) then MOVE flag TO flag else MOVE1TO flag END-IF
******************** END TEST0259 *******************
******************** BEGIN TEST0260 *******************
DISPLAY" EXISTS in HAVING Clause " DISPLAY"Reference X3.135-1989 section 5.8 General Rules " DISPLAY" ------------------------------------------ " DISPLAY" TEST0260 " DISPLAY" Reference 5.23 General Rules 3)" DISPLAY" - - - - - - - - - - - - - - - - - - - - - " DISPLAY" " DISPLAY" " DISPLAY" INSERT INTO VTABLE" DISPLAY" VALUES (10,11,12,13,15);" DISPLAY" " DISPLAY" INSERT INTO VTABLE" DISPLAY" VALUES (100,111,1112,113,115);" DISPLAY" " DISPLAY" DECLARE SUN2 CURSOR " DISPLAY" FOR SELECT COL1,MAX(COL2)" DISPLAY" FROM VTABLE" DISPLAY" GROUP BY COL1" DISPLAY" HAVING EXISTS (SELECT * FROM STAFF" DISPLAY" WHERE EMPNUM = 'E1')
- " " DISPLAY" AND MAX(COL2) BETWEEN 10 AND
- " 90" DISPLAY" ORDER BY COL1;" DISPLAY" " MOVE0TO int1 MOVE0TO int2 * EXEC SQL INSERT INTO VTABLE * VALUES (10,11,12,13,15); CALL"SUB33"USINGSQLCODE MOVESQLCODETO SQL-COD * EXEC SQL INSERT INTO VTABLE * VALUES (100,111,1112,113,115); CALL"SUB34"USINGSQLCODE MOVESQLCODETO SQL-COD * EXEC SQL DECLARE SUN2 CURSOR * FOR SELECT COL1,MAX(COL2) * FROM VTABLE * GROUP BY COL1 * HAVING EXISTS (SELECT * FROM STAFF * WHERE EMPNUM = 'E1') * AND MAX(COL2) BETWEEN 10 AND 90 * ORDER BY COL1 END-EXEC * EXEC SQL OPEN SUN2; CALL"SUB35"USINGSQLCODE MOVESQLCODETO SQL-COD DISPLAY" The correct answer is :" DISPLAY" 10, 20" DISPLAY" Your answer is :"
MOVE0TO flag
* EXEC SQL FETCH SUN2 INTO :int1,:int2; CALL"SUB36"USINGSQLCODE int1 int2 MOVESQLCODETO SQL-COD DISPLAY" ", int1 ", ", int2 if (int1 = 10AND int2 = 20) then MOVE flag TO flag else MOVE1TO flag END-IF
******************** END TEST0264 *******************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
* **** Procedures for PERFORM statements
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.14Bemerkung:
(vorverarbeitet am 2026-06-07)
¤
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.