* Standard COBOL (file "DML062.SCO") calling SQL * procedures in file "DML062.MCO"
**************************************************************** * * 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. * * DML062.SCO * WRITTEN BY: SUN DAJUN * TRANSLATED AUTOMATICALLY FROM EMBEDDED COBOL BY CHRIS SCHANZLE * * THIS ROUTINE TESTS COMMIT AND VIEW * * REFERENCES * AMERICAN NATIONAL STANDARD database language - SQL * X3.135-1989 * * SECTION 8.2 <commit statement> * SECTION 6.9 <view definition> * ****************************************************************
******************** END TEST0276 *******************
******************** BEGIN TEST0279 ******************* *IN is a 3-valued predicate, EXISTS is 2-valued
DISPLAY" IN is a 3-valued predicate, EXISTS is 2-valued" DISPLAY" Reference X3.135-1989 :" DISPLAY" section 5.13 General Rules " DISPLAY" section 5.17 General Rules " DISPLAY" ------------------------------------------ " DISPLAY" TEST0279 " DISPLAY" Reference 5.13 5.17 General Rules )" DISPLAY" - - - - - - - - - - - - - - - - - - - - - " DISPLAY" " DISPLAY" UPDATE WORKS" DISPLAY" SET HOURS = NULL" DISPLAY" WHERE PNUM = 'P5' OR EMPNUM = 'E4';" DISPLAY" " DISPLAY" SELECT COUNT(*) INTO :count1 FROM STAFF;" DISPLAY" " DISPLAY" SELECT COUNT(*) INTO :count2 FROM STAFF" DISPLAY" WHERE 40 IN (SELECT HOURS FROM WORKS" DISPLAY" WHERE STAFF.EMPNUM =
- " WORKS.EMPNUM);" DISPLAY" " DISPLAY" SELECT COUNT(*) INTO :count3 FROM STAFF" DISPLAY" WHERE 40 NOT IN (SELECT HOURS FROM WORKS" DISPLAY" WHERE STAFF.EMPNUM =
- " WORKS.EMPNUM);" DISPLAY" " DISPLAY" SELECT COUNT(*) INTO :count4 FROM STAFF" DISPLAY" WHERE EXISTS (SELECT * FROM WORKS" DISPLAY" WHERE HOURS = 40 AND STAFF.EMPNUM =
- " WORKS.EMPNUM);" DISPLAY" " DISPLAY" SELECT COUNT(*) INTO :count5 FROM STAFF" DISPLAY" WHERE NOT EXISTS (SELECT * FROM WORKS" DISPLAY" WHERE HOURS = 40 AND STAFF.EMPNUM =
- " WORKS.EMPNUM);" DISPLAY" " COMPUTE count1 = -1 COMPUTE count2 = -1 COMPUTE count3 = -1 COMPUTE count4 = -1 COMPUTE count5 = -1 * EXEC SQL UPDATE WORKS * SET HOURS = NULL * WHERE PNUM = 'P5' OR EMPNUM = 'E4' END-EXEC CALL"SUB48"USING SQLCODE MOVE SQLCODE TO SQL-COD * EXEC SQL SELECT COUNT(*) INTO :count1 FROM STAFF; CALL"SUB49"USING SQLCODE count1 MOVE SQLCODE TO SQL-COD * EXEC SQL SELECT COUNT(*) INTO :count2 FROM STAFF * WHERE 40 IN (SELECT HOURS FROM WORKS * WHERE STAFF.EMPNUM = WORKS.EMPNUM) END-EXEC CALL"SUB50"USING SQLCODE count2 MOVE SQLCODE TO SQL-COD * EXEC SQL SELECT COUNT(*) INTO :count3 FROM STAFF * WHERE 40 NOT IN (SELECT HOURS FROM WORKS * WHERE STAFF.EMPNUM = WORKS.EMPNUM) END-EXEC CALL"SUB51"USING SQLCODE count3 MOVE SQLCODE TO SQL-COD * EXEC SQL SELECT COUNT(*) INTO :count4 FROM STAFF * WHERE EXISTS (SELECT * FROM WORKS * WHERE HOURS = 40 AND STAFF.EMPNUM = WORKS.EMPNUM) END-EXEC CALL"SUB52"USING SQLCODE count4 MOVE SQLCODE TO SQL-COD * EXEC SQL SELECT COUNT(*) INTO :count5 FROM STAFF * WHERE NOT EXISTS (SELECT * FROM WORKS * WHERE HOURS = 40 AND STAFF.EMPNUM = WORKS.EMPNUM) END-EXEC CALL"SUB53"USING SQLCODE count5 MOVE SQLCODE TO SQL-COD * EXEC SQL ROLLBACK WORK; CALL"SUB54"USING SQLCODE MOVE SQLCODE TO SQL-COD DISPLAY" The correct answer is :" DISPLAY" count1 = 5" DISPLAY" count2 = 2" DISPLAY" count3 = 2" DISPLAY" count4 = 2" DISPLAY" count5 = 3" DISPLAY" Your answer is :" DISPLAY" count1 = ", count1 DISPLAY" count2 = ", count2 DISPLAY" count3 = ", count3 DISPLAY" count4 = ", count4 DISPLAY" count5 = ", count5 MOVE 0 TO flag if (count1 NOT = 5 OR count2 NOT = 2 OR count3 NOT =
2) then MOVE 1 TO flag END-IF if (count4 NOT = 2 OR count5 NOT = 3) then MOVE 1 TO flag END-IF if (flag = 0) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0279','pass','MCO') END-EXEC CALL"SUB55"USING SQLCODE MOVE SQLCODE TO SQL-COD else DISPLAY" dml062.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0279','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB56"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF DISPLAY"==============================================="
******************** END TEST0279 *******************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
* **** Procedures for PERFORM statements
¤ 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.5Bemerkung:
(vorverarbeitet)
¤
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 ist noch experimentell.