* Embedded SQL COBOL ("DML075.PCO") translated from * Embedded C on Mon Jul 15 13:48:11 1991.
* EMBEDDED COBOL (file "DML075.PCO")
**************************************************************** * * COMMENT SECTION * * DATE 1991/26/06 EMBEDDED 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.PCO * 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 EXECSQLSELECT
USER INTO :uidx FROM HU.ECCO END-EXEC 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, Embedded COBOL, dml075.pco" 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
EXECSQLSELECTCOUNT(*) INTO :count1 FROM STAFF WHERE EMPNUM IN
(SELECT EMPNUM FROM WORKS) END-EXEC MOVESQLCODETO SQL-COD
EXECSQLINSERTINTO STAFF1 SELECT * FROM STAFF END-EXEC MOVESQLCODETO SQL-COD
EXECSQLSELECTCOUNT(*) INTO :count2 FROM STAFF1 WHERE EMPNUM IN
(SELECT EMPNUM FROM WORKS) END-EXEC MOVESQLCODETO SQL-COD
EXECSQLROLLBACK WORK END-EXEC MOVESQLCODETO SQL-COD
EXECSQL 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
EXECSQLOPEN FIDO END-EXEC 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 *** " EXECSQLINSERTINTO TESTREPORT
VALUES('0434','pass','PCO') END-EXEC MOVESQLCODETO SQL-COD else DISPLAY" dml075.pco *** fail *** " EXECSQLINSERTINTO TESTREPORT
VALUES('0434','fail','PCO') END-EXEC ADD1TO errcnt MOVESQLCODETO SQL-COD END-IF
******************** END TEST0442 ******************* **** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
* **** Procedures for PERFORM statements
P50. EXECSQL FETCH FIDO INTO :NUM, :HRS END-EXEC 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
.
P49. EXECSQL FETCH YY INTO :PTPE, :CTY END-EXEC MOVESQLCODETO SQL-COD
if (SQLCODE = 0) then COMPUTE count1 = count1 + 1 if ((PTPE = "Code ") AND (CTY = "Vienna
- " ")) then MOVE0TO flag1 END-IF if ((PTPE = "Design") AND (CTY = "Deale
- " ")) then MOVE0TO flag2 END-IF if ((PTPE = "Test ") AND (CTY = "Tampa
- " ")) then MOVE0TO flag3 END-IF DISPLAY" PTPE = ", PTPE ", CTY = ", CTY END-IF ADD1TO i
.
P48. EXECSQL FETCH ZZ INTO :PTPE, :CTY END-EXEC MOVESQLCODETO SQL-COD
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. EXECSQL FETCH AA INTO :TOTAL1 END-EXEC 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.13 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.