* Standard COBOL (file "DML075.SCO") calling SQL * procedures in file "DML075.MCO".
* STANDARD COBOL (file "DML075.SCO")
**************************************************************** * * COMMENT SECTION * * DATE 1991/26/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. * * DML075.SCO * WRITTEN BY: YOLANDA HERD * * THIS ROUTINE TESTS MISCELLANEOUS FEATURES. * * REFERENCES * AMERICAN NATIONAL STANDARD database language - SQL * X3.135-1989 * ****************************************************************
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
MOVE0TO errcnt DISPLAY "SQL Test Suite, V6.0, Module COBOL, dml075.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 TEST0431 *******************
DISPLAY" TEST0431 " DISPLAY" Redundant rows in IN subquery" DISPLAY" reference X3.135-1989 5.13, GR2 " DISPLAY" -------------------------------------"
MOVE0TO count1 MOVE0TO count2
* EXEC SQL SELECT COUNT(*) INTO :count1 * FROM STAFF * WHERE EMPNUM IN * (SELECT EMPNUM FROM WORKS); CALL"SUB1"USINGSQLCODE count1 MOVESQLCODETO SQL-COD
* EXEC SQL INSERT INTO STAFF1 * SELECT * FROM STAFF; CALL"SUB2"USINGSQLCODE MOVESQLCODETO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count2 * FROM STAFF1 * WHERE EMPNUM IN * (SELECT EMPNUM FROM WORKS); CALL"SUB3"USINGSQLCODE count2 MOVESQLCODETO SQL-COD
* EXEC SQL UPDATE PROJ SET CITY = NULL * WHERE PNUM = 'P3'; CALL"SUB8"USINGSQLCODE MOVESQLCODETO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count1 * FROM STAFF * WHERE CITY = ALL (SELECT CITY * FROM PROJ * WHERE PNAME = 'SDP'); CALL"SUB9"USINGSQLCODE count1 MOVESQLCODETO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count2 * FROM STAFF * WHERE CITY <> ALL (SELECT CITY * FROM PROJ * WHERE PNAME = 'SDP'); CALL"SUB10"USINGSQLCODE count2 MOVESQLCODETO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count3 * FROM STAFF * WHERE CITY = ANY (SELECT CITY * FROM PROJ * WHERE PNAME = 'SDP'); CALL"SUB11"USINGSQLCODE count3 MOVESQLCODETO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count4 * FROM STAFF * WHERE CITY <> ANY (SELECT CITY * FROM PROJ * WHERE PNAME = 'SDP'); CALL"SUB12"USINGSQLCODE count4 MOVESQLCODETO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count5 * FROM STAFF * WHERE CITY = SOME (SELECT CITY * FROM PROJ * WHERE PNAME = 'SDP'); CALL"SUB13"USINGSQLCODE count5 MOVESQLCODETO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count6 * FROM STAFF * WHERE CITY <> SOME (SELECT CITY * FROM PROJ * WHERE PNAME = 'SDP'); CALL"SUB14"USINGSQLCODE count6 MOVESQLCODETO SQL-COD
******************** END TEST0432 *******************
******************** BEGIN TEST0433 *******************
DISPLAY" TEST0433 " DISPLAY" Empty subquery in ALL, SOME, ANY" DISPLAY" reference X3.135-1989 5.16, GR 2a and 2d empty
- " subquery" DISPLAY"------------------------------------------------
- "------------" MOVE0TO count1 MOVE0TO count2 MOVE0TO count3 MOVE0TO count4 MOVE0TO count5 MOVE0TO count6
* EXEC SQL SELECT COUNT(*) INTO :count1 * FROM PROJ * WHERE PNUM = ALL (SELECT PNUM * FROM WORKS * WHERE EMPNUM = 'E8'); CALL"SUB19"USINGSQLCODE count1 MOVESQLCODETO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count2 * FROM PROJ * WHERE PNUM <> ALL (SELECT PNUM * FROM WORKS * WHERE EMPNUM = 'E8'); CALL"SUB20"USINGSQLCODE count2 MOVESQLCODETO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count3 * FROM PROJ * WHERE PNUM = ANY (SELECT PNUM * FROM WORKS * WHERE EMPNUM = 'E8'); CALL"SUB21"USINGSQLCODE count3 MOVESQLCODETO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count4 * FROM PROJ * WHERE PNUM <> ANY (SELECT PNUM * FROM WORKS * WHERE EMPNUM = 'E8'); CALL"SUB22"USINGSQLCODE count4 MOVESQLCODETO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count5 * FROM PROJ * WHERE PNUM = SOME (SELECT PNUM * FROM WORKS * WHERE EMPNUM = 'E8'); CALL"SUB23"USINGSQLCODE count5 MOVESQLCODETO SQL-COD
* EXEC SQL SELECT COUNT(*) INTO :count6 * FROM PROJ * WHERE PNUM <> SOME (SELECT PNUM * FROM WORKS * WHERE EMPNUM = 'E8'); CALL"SUB24"USINGSQLCODE count6 MOVESQLCODETO SQL-COD
* EXEC SQL DECLARE FIDO CURSOR FOR * SELECT PNUM, SUM(HOURS) * FROM WORKS * GROUP BY PNUM * HAVING EXISTS (SELECT PNAME FROM PROJ * WHERE PROJ.PNUM = WORKS.PNUM AND * SUM(WORKS.HOURS) > PROJ.BUDGET/200) END-EXEC
* EXEC SQL OPEN FIDO; CALL"SUB28"USINGSQLCODE MOVESQLCODETO SQL-COD
MOVE0TO count1 MOVE1TO flag1 MOVE1TO flag2
DISPLAY"The correct answers are (in any order):" DISPLAY" NUM = P1, HRS = 80" DISPLAY" NUM = P5, HRS = 92" DISPLAY" 2 rows selected" DISPLAY" " DISPLAY"Your answers are:"
MOVE1TO i PERFORM P50 UNTIL i > 4
DISPLAY" ", count1 " rows selected" DISPLAY" "
if ((flag1 = 0) AND (flag2 = 0) AND (count1 = 2)) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0434','pass','MCO'); CALL"SUB29"USINGSQLCODE MOVESQLCODETO SQL-COD else DISPLAY" dml075.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0434','fail','MCO'); ADD1TO errcnt CALL"SUB30"USINGSQLCODE MOVESQLCODETO SQL-COD END-IF
******************** END TEST0442 ******************* **** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
* **** Procedures for PERFORM statements
P50. * EXEC SQL FETCH FIDO INTO :NUM, :HRS; CALL"SUB40"USINGSQLCODE NUM HRS MOVESQLCODETO SQL-COD
if (SQLCODE = 0) then COMPUTE count1 = count1 + 1 DISPLAY"NUM = ", NUM " and HRS = ", HRS if ((NUM = "P1 ") AND HRS = 80) then MOVE0TO flag1 END-IF if ((NUM = "P5 ") AND HRS = 92) then MOVE0TO flag2 END-IF END-IF ADD1TO i
.
if (SQLCODE = 0) then COMPUTE count2 = count2 + 1 if ((PTPE = "Code ") AND (CTY = "Vienna
- " ")) then MOVE0TO flag4 END-IF if ((PTPE = "Design") AND (CTY = "Deale
- " ")) then MOVE0TO flag5 END-IF if ((PTPE = "Test ") AND (CTY = "Tampa
- " ")) then MOVE0TO flag6 END-IF DISPLAY" PTPE = ", PTPE ", CTY = ", CTY END-IF ADD1TO i
.
P47. * EXEC SQL FETCH AA INTO :TOTAL1; CALL"SUB43"USINGSQLCODE TOTAL1 MOVESQLCODETO SQL-COD
if (SQLCODE = 0) then COMPUTE count3 = count3 + 1 DISPLAY"SUM(BUDGET) = ", TOTAL1 if (TOTAL1 = 30000) then MOVE0TO flag7 END-IF if (TOTAL1 = 80000) then MOVE0TO flag8 END-IF END-IF ADD1TO i
.
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet am 2026-06-08)
¤
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.