* Standard COBOL (file "DML022.SCO") calling SQL * procedures in file "DML022.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. * * DML022.SCO * WRITTEN BY: HU YANPING * TRANSLATED AUTOMATICALLY FROM EMBEDDED COBOL BY CHRIS SCHANZLE * * THIS ROUTINE TESTS THE SUBQUERY OF THE SQL LANGUAGE. * * REFERENCES * AMERICAN NATIONAL STANDARD database language - SQL * X3.135-1989 * * SECTION 5.24 <subquery> * ****************************************************************
DISPLAY" ***Subquery with multiple levels of
- " nesting. " DISPLAY" *** SELECT EMPNAME " DISPLAY" *** FROM STAFF " DISPLAY" *** WHERE EMPNUM IN " DISPLAY" *** (SELECT EMPNUM " DISPLAY" *** FROM WORKS " DISPLAY" *** WHERE PNUM IN " DISPLAY" *** (SELECT PNUM " DISPLAY" *** FROM PROJ " DISPLAY" *** WHERE PTYPE = 'Design')) " * EXEC SQL DECLARE S2 CURSOR FOR * SELECT EMPNAME * FROM STAFF * WHERE EMPNUM IN * (SELECT EMPNUM * FROM WORKS * WHERE PNUM IN * (SELECT PNUM * FROM PROJ * WHERE PTYPE = 'Design')) END-EXEC * EXEC SQL OPEN S2; CALL"SUB16"USINGSQLCODE MOVESQLCODETO SQL-COD MOVE 0 TO i if (SQLCODE = 0) then DISPLAY"EMPNAME " END-IF MOVE 1 TO ii PERFORM P47 UNTIL ii > 19 * EXEC SQL CLOSE S2; CALL"SUB17"USINGSQLCODE MOVESQLCODETO SQL-COD
DISPLAY" Here i should be 3; i=", i " " if (i = 3) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0099','pass','MCO') END-EXEC CALL"SUB18"USINGSQLCODE MOVESQLCODETO SQL-COD else DISPLAY" dml022.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0099','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB19"USINGSQLCODE MOVESQLCODETO SQL-COD END-IF
******************** END TEST0099 ******************* ******************** BEGIN TEST0100 *******************
DISPLAY" TEST0100 " DISPLAY" Reference ANSI X3.135-1989 5.24 <subquery> GR 2) " DISPLAY" - - - - - - - - - - - - - - - - - - -" DISPLAY"*** SELECT EMPNUM, EMPNAME " DISPLAY"*** FROM STAFF " DISPLAY"*** WHERE EMPNUM IN " DISPLAY"*** (SELECT EMPNUM " DISPLAY"*** FROM WORKS " DISPLAY"*** WHERE PNUM IN " DISPLAY"*** (SELECT PNUM " DISPLAY"*** FROM PROJ " DISPLAY"*** WHERE PTYPE IN " DISPLAY"*** (SELECT PTYPE " DISPLAY"*** FROM PROJ " DISPLAY"*** WHERE PNUM IN " DISPLAY"*** (SELECT PNUM " DISPLAY"*** FROM WORKS " DISPLAY"*** WHERE EMPNUM IN " DISPLAY"*** (SELECT EMPNUM " DISPLAY"*** FROM WORKS " DISPLAY"*** WHERE PNUM IN " DISPLAY"*** (SELECT PNUM " DISPLAY"*** FROM PROJ " DISPLAY"*** WHERE PTYPE =
- " 'Design')))))) " * EXEC SQL DECLARE S3 CURSOR FOR * SELECT EMPNUM, EMPNAME * FROM STAFF * WHERE EMPNUM IN * (SELECT EMPNUM * FROM WORKS * WHERE PNUM IN * (SELECT PNUM * FROM PROJ * WHERE PTYPE IN * (SELECT PTYPE * FROM PROJ * WHERE PNUM IN * (SELECT PNUM * FROM WORKS * WHERE EMPNUM IN * (SELECT EMPNUM * FROM WORKS * WHERE PNUM IN * (SELECT PNUM * FROM PROJ * WHERE PTYPE = 'Design')))))) END-EXEC * EXEC SQL OPEN S3; CALL"SUB21"USINGSQLCODE MOVESQLCODETO SQL-COD MOVE 0 TO i if (SQLCODE = 0) then DISPLAY"EMPNUM EMPNAME " END-IF MOVE 1 TO ii PERFORM P46 UNTIL ii > 19 * EXEC SQL CLOSE S3; CALL"SUB22"USINGSQLCODE MOVESQLCODETO SQL-COD
DISPLAY" Here i should be 4; i=", i " " if (i = 4) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0100','pass','MCO') END-EXEC CALL"SUB23"USINGSQLCODE MOVESQLCODETO SQL-COD else DISPLAY" dml022.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0100','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB24"USINGSQLCODE MOVESQLCODETO SQL-COD END-IF
******************** END TEST0100 ******************* ******************** BEGIN TEST0101 *******************
DISPLAY" TEST0101 " DISPLAY" Reference ANSI X3.135-1989 5.24 <subquery> GR 3) " DISPLAY" - - - - - - - - - - - - - - - - - - -" DISPLAY" *** use of GROUP BY in subquery. " DISPLAY" *** SELECT EMPNUM,PNUM " DISPLAY" *** FROM WORKS " DISPLAY" *** WHERE HOURS <= ALL " DISPLAY" *** (SELECT AVG(HOURS) " DISPLAY" *** FROM WORKS " DISPLAY" *** GROUP BY PNUM) "
* EXEC SQL DECLARE S22 CURSOR FOR * SELECT EMPNUM,PNUM * FROM WORKS * WHERE HOURS <= ALL * (SELECT AVG(HOURS) * FROM WORKS * GROUP BY PNUM) END-EXEC * EXEC SQL OPEN S22; CALL"SUB26"USINGSQLCODE MOVESQLCODETO SQL-COD MOVE 0 TO i if (SQLCODE = 0) then DISPLAY" EMPNUM PNUM " END-IF MOVE 1 TO ii PERFORM P45 UNTIL ii > 19 * EXEC SQL CLOSE S22; CALL"SUB27"USINGSQLCODE MOVESQLCODETO SQL-COD
DISPLAY" Here i should be 2; i=", i " " if (i = 2) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0101','pass','MCO') END-EXEC CALL"SUB28"USINGSQLCODE MOVESQLCODETO SQL-COD else DISPLAY" dml022.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0101','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB29"USINGSQLCODE MOVESQLCODETO SQL-COD END-IF
******************** END TEST0102 *******************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
* **** Procedures for PERFORM statements
P50. * EXEC SQL FETCH S5 INTO * :EMPNO1 END-EXEC CALL"SUB36"USINGSQLCODE EMPNO1 MOVESQLCODETO SQL-COD if (SQLCODE = 0) then DISPLAY" ", EMPNO1 COMPUTE i = i + 1 END-IF ADD 1 TO ii
.
P49. * EXEC SQL FETCH S6 INTO * :EMPNO1,:EMPNA1,:GRADE1,:SCITY END-EXEC CALL"SUB37"USINGSQLCODE EMPNO1 EMPNA1 GRADE1 SCITY MOVESQLCODETO SQL-COD if (SQLCODE = 0) then DISPLAY EMPNO1 " ", EMPNA1 " ", GRADE1 " ",
SCITY COMPUTE i = i + 1 END-IF ADD 1 TO ii
.
P48. * EXEC SQL FETCH S1 INTO * :EMPNA1 END-EXEC CALL"SUB38"USINGSQLCODE EMPNA1 MOVESQLCODETO SQL-COD if (SQLCODE = 0) then DISPLAY EMPNA1 COMPUTE i = i + 1 END-IF ADD 1 TO ii
.
P47. * EXEC SQL FETCH S2 INTO * :EMPNA1 END-EXEC CALL"SUB39"USINGSQLCODE EMPNA1 MOVESQLCODETO SQL-COD if (SQLCODE = 0) then DISPLAY EMPNA1 COMPUTE i = i + 1 END-IF ADD 1 TO ii
.
P46. * EXEC SQL FETCH S3 INTO * :EMPNO1,:EMPNA1 END-EXEC CALL"SUB40"USINGSQLCODE EMPNO1 EMPNA1 MOVESQLCODETO SQL-COD if (SQLCODE = 0) then DISPLAY EMPNO1 " ", EMPNA1 COMPUTE i = i + 1 END-IF ADD 1 TO ii
.
P45. * EXEC SQL FETCH S22 INTO :WEMP,:WPNUM; CALL"SUB41"USINGSQLCODE WEMP WPNUM MOVESQLCODETO SQL-COD if (SQLCODE = 0) then DISPLAY" ", WEMP " ", WPNUM COMPUTE i = i + 1 END-IF ADD 1 TO ii
.
P44. * EXEC SQL FETCH S11 INTO * :EMPNO1 END-EXEC CALL"SUB42"USINGSQLCODE EMPNO1 MOVESQLCODETO SQL-COD if (SQLCODE = 0) then DISPLAY EMPNO1 COMPUTE i = i + 1 END-IF ADD 1 TO ii
.
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet am 2026-04-28)
¤
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.