* Standard COBOL (file "DML064.SCO") calling SQL * procedures in file "DML064.MCO"
**************************************************************** * * COMMENT SECTION * * DATE 6/9/89 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. * * DML064.SCO * WRITTEN BY: KATHY HARVILL * TRANSLATED AUTOMATICALLY FROM EMBEDDED COBOL BY CHRIS SCHANZLE * * THIS ROUTINE TESTS THE RULES FOR UPDATING VIA CURSORS * * REFERENCES * AMERICAN NATIONAL STANDARD database language - SQL * X3.135-1989 * * 5.25 <query specification> 5.25<query spec.> SR 11, Sec * definition of "updatable" ****************************************************************
* EXEC SQL INSERT INTO UPDATE_VIEW2 VALUES (10, 'E9', 'P7') * END-EXEC CALL"SUB6"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL DECLARE C2 CURSOR FOR * SELECT HOURS, EMPNUM, PNUM FROM UPDATE_VIEW2 END-EXEC * EXEC SQL OPEN C2; CALL"SUB7"USING SQLCODE MOVE SQLCODE TO SQL-COD
MOVE 1 TO ii PERFORM P49 UNTIL ii > 14 * EXEC SQL CLOSE C2; CALL"SUB8"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT (*) INTO :COUNT2 FROM WORKS WHERE HOURS * = 10 END-EXEC CALL"SUB9"USING SQLCODE COUNT2 MOVE SQLCODE TO SQL-COD DISPLAY" COUNT2 should be 3, COUNT2=", COUNT2 " "
* EXEC SQL UPDATE UPDATE_VIEW3 SET EMPNUM = 'E7' WHERE EMPNUM = * 'E1' END-EXEC CALL"SUB11"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL DECLARE C3 CURSOR FOR * SELECT * FROM UPDATE_VIEW3 END-EXEC * EXEC SQL OPEN C3; CALL"SUB12"USING SQLCODE MOVE SQLCODE TO SQL-COD
MOVE 1 TO ii PERFORM P48 UNTIL ii > 14 * EXEC SQL CLOSE C3; CALL"SUB13"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT (*) INTO :COUNT3 FROM WORKS WHERE * EMPNUM = 'E7' END-EXEC CALL"SUB14"USING SQLCODE COUNT3 MOVE SQLCODE TO SQL-COD DISPLAY" COUNT3 should be 2, COUNT3=", COUNT3 " "
* EXEC SQL ROLLBACK WORK; CALL"SUB15"USING SQLCODE MOVE SQLCODE TO SQL-COD if (COUNT1 = 2 AND COUNT2 = 3 AND COUNT3 = 2) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0281','pass','MCO') END-EXEC CALL"SUB16"USING SQLCODE MOVE SQLCODE TO SQL-COD else DISPLAY" dml064.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0281','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB17"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF
******************** END TEST0281 *******************
******************** BEGIN TEST0282 *******************
DISPLAY" TEST0282 " DISPLAY" This routine tests the rules for updatable
- " views " DISPLAY" Reference X3.135-89 section 6.9 SR3
- " and" DISPLAY" 5.25 SR 11, definition of
- " 'updatable' " DISPLAY" Cursor with LIKE, IS NULL and comparison
- " predicates" DISPLAY" - - - - - - - - - - - - - - - - - - -"
* EXEC SQL DELETE FROM UPDATE_VIEW4 WHERE EMPNUM = 'E1' * END-EXEC CALL"SUB19"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL DECLARE C4 CURSOR FOR * SELECT PNUM, EMPNUM FROM UPDATE_VIEW4 END-EXEC
* EXEC SQL OPEN C4; CALL"SUB20"USING SQLCODE MOVE SQLCODE TO SQL-COD
MOVE 1 TO ii PERFORM P47 UNTIL ii > 14 * EXEC SQL CLOSE C4; CALL"SUB21"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT (*) INTO :COUNT1 * FROM WORKS END-EXEC CALL"SUB22"USING SQLCODE COUNT1 MOVE SQLCODE TO SQL-COD DISPLAY" COUNT1 should be 10,COUNT1=", COUNT1 " "
* EXEC SQL INSERT INTO UPDATE_VIEW8 VALUES ('E6','GEORGE') * END-EXEC CALL"SUB44"USING SQLCODE MOVE SQLCODE TO SQL-COD * EXEC SQL INSERT INTO UPDATE_VIEW8 VALUES ('E7','SHARA') * END-EXEC CALL"SUB45"USING SQLCODE MOVE SQLCODE TO SQL-COD * EXEC SQL INSERT INTO UPDATE_VIEW8 VALUES ('E8','DAVID') * END-EXEC CALL"SUB46"USING SQLCODE MOVE SQLCODE TO SQL-COD * EXEC SQL INSERT INTO UPDATE_VIEW8 VALUES ('E9','JOHNNY') * END-EXEC CALL"SUB47"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL DECLARE C8 CURSOR FOR * SELECT EMPNUM, EMPNAME FROM UPDATE_VIEW8 END-EXEC * EXEC SQL OPEN C8; CALL"SUB48"USING SQLCODE MOVE SQLCODE TO SQL-COD
MOVE 1 TO ii PERFORM P43 UNTIL ii > 9 * EXEC SQL CLOSE C8; CALL"SUB49"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT (*) INTO :COUNT2 FROM STAFF * WHERE GRADE IS NULL OR EMPNAME = 'Kathy' END-EXEC CALL"SUB50"USING SQLCODE COUNT2 MOVE SQLCODE TO SQL-COD DISPLAY" COUNT2 should be 6, COUNT2=", COUNT2 " "
******************** END TEST0283 *******************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
* **** Procedures for PERFORM statements
P50. * EXEC SQL FETCH C1 INTO :CITY1; CALL"SUB60"USING SQLCODE CITY1 MOVE SQLCODE TO SQL-COD if (SQLCODE = 0 AND CITY1 = "Deale") then * EXEC SQL DELETE FROM UPDATE_VIEW1 WHERE CURRENT OF C1 * END-EXEC CALL"SUB61"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF ADD 1 TO ii
.
P49. * EXEC SQL FETCH C2 INTO :HOURS1, :EMPNO, :PNUM1; CALL"SUB62"USING SQLCODE HOURS1 EMPNO PNUM1 MOVE SQLCODE TO SQL-COD if (SQLCODE = 0 AND EMPNO = "E4") then * EXEC SQL UPDATE UPDATE_VIEW2 SET HOURS = 10 WHERE CURRENT * OF C2 END-EXEC CALL"SUB63"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF ADD 1 TO ii
.
P48. * EXEC SQL FETCH C3 INTO :EMPNO, :PNUM1, :HOURS1; CALL"SUB64"USING SQLCODE EMPNO PNUM1 HOURS1 MOVE SQLCODE TO SQL-COD if (SQLCODE = 0 AND HOURS1 = 80) then * EXEC SQL DELETE FROM UPDATE_VIEW3 WHERE CURRENT OF C3 * END-EXEC CALL"SUB65"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF ADD 1 TO ii
.
P47. * EXEC SQL FETCH C4 INTO :PNUM1, :EMPNO; CALL"SUB66"USING SQLCODE PNUM1 EMPNO MOVE SQLCODE TO SQL-COD if (SQLCODE = 0 AND EMPNO = "E3") then * EXEC SQL DELETE FROM UPDATE_VIEW4 WHERE CURRENT OF C4 * END-EXEC CALL"SUB67"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF ADD 1 TO ii
.
P46. * EXEC SQL FETCH C5 INTO :EMPNO, :EMPNAM; CALL"SUB68"USING SQLCODE EMPNO EMPNAM MOVE SQLCODE TO SQL-COD if (SQLCODE = 0) then * EXEC SQL DELETE FROM UPDATE_VIEW5 WHERE CURRENT OF C5 * END-EXEC CALL"SUB69"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF ADD 1 TO ii
.
P45. * EXEC SQL FETCH C6 INTO :EMPNAM,:CITY1,:GRADE1; CALL"SUB70"USING SQLCODE EMPNAM CITY1 GRADE1 MOVE SQLCODE TO SQL-COD
if (SQLCODE = 0 AND GRADE1 = 10) then * EXEC SQL DELETE FROM UPDATE_VIEW6 WHERE CURRENT OF C6 * END-EXEC CALL"SUB71"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF ADD 1 TO ii
.
P44. * EXEC SQL FETCH C7 INTO :EMPNAM, :CITY1, :GRADE1; CALL"SUB72"USING SQLCODE EMPNAM CITY1 GRADE1 MOVE SQLCODE TO SQL-COD
if (SQLCODE = 0 AND CITY1 = "Akron") then * EXEC SQL DELETE FROM UPDATE_VIEW7 WHERE CURRENT OF C7 * END-EXEC CALL"SUB73"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF ADD 1 TO ii
.
P43. * EXEC SQL FETCH C8 INTO :EMPNO, :EMPNAM; CALL"SUB74"USING SQLCODE EMPNO EMPNAM MOVE SQLCODE TO SQL-COD if (SQLCODE = 0) then * EXEC SQL UPDATE UPDATE_VIEW8 SET EMPNAME = 'Kathy' WHERE * CURRENT OF C8 END-EXEC CALL"SUB75"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF ADD 1 TO ii
.
P42. * EXEC SQL FETCH C9 INTO :EMPNAM, :CITY1, :GRADE1; CALL"SUB76"USING SQLCODE EMPNAM CITY1 GRADE1 MOVE SQLCODE TO SQL-COD if (SQLCODE = 0) then * EXEC SQL UPDATE UPDATE_VIEW9 SET GRADE = 15 WHERE CURRENT * OF C9 END-EXEC CALL"SUB77"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF ADD 1 TO ii
.
¤ Dauer der Verarbeitung: 0.17 Sekunden
(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.