* Standard COBOL (file "DML054.SCO") calling SQL * procedures in file "DML054.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. * * DML054.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> SR 11, Section 13.5 * definition of "updatable" ****************************************************************
* EXEC SQL DECLARE C2 CURSOR FOR * SELECT HOURS, EMPNUM, PNUM FROM WORKS * WHERE HOURS IN (10, 20, 40) END-EXEC
* EXEC SQL OPEN C2; CALL"SUB5"USING SQLCODE MOVE SQLCODE TO SQL-COD
MOVE 1 TO ii PERFORM P49 UNTIL ii > 14 * EXEC SQL CLOSE C2; CALL"SUB6"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT (*) INTO :COUNT2 FROM WORKS WHERE HOURS * = 10 END-EXEC CALL"SUB7"USING SQLCODE COUNT2 MOVE SQLCODE TO SQL-COD DISPLAY" COUNT2 should be 2, COUNT2=", COUNT2 " "
* EXEC SQL DECLARE C3 CURSOR FOR * SELECT * FROM WORKS * WHERE PNUM BETWEEN 'P2' AND 'P4' * AND EMPNUM NOT BETWEEN 'E2' AND 'E3' END-EXEC * EXEC SQL OPEN C3; CALL"SUB9"USING SQLCODE MOVE SQLCODE TO SQL-COD
MOVE 1 TO ii PERFORM P48 UNTIL ii > 14 * EXEC SQL CLOSE C3; CALL"SUB10"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT (*) INTO :COUNT3 FROM WORKS; CALL"SUB11"USING SQLCODE COUNT3 MOVE SQLCODE TO SQL-COD DISPLAY" COUNT3 should be 7, COUNT3 =", COUNT3 " "
* EXEC SQL ROLLBACK WORK; CALL"SUB12"USING SQLCODE MOVE SQLCODE TO SQL-COD if (COUNT1 = 3 AND COUNT2 = 2 AND COUNT3 = 7) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0240','pass','MCO') END-EXEC CALL"SUB13"USING SQLCODE MOVE SQLCODE TO SQL-COD else DISPLAY" dml054.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0240','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB14"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF
******************** END TEST0240 *******************
******************** BEGIN TEST0241 *******************
DISPLAY" TEST0241 " DISPLAY" This routine tests the rules for updatable
- " tables " DISPLAY" Reference X3.135-89 section 5.25
- " specification> " DISPLAY" SR 11, definition of 'updatable' " DISPLAY" Cursor with LIKE, IS NULL and comparison
- " predicates" DISPLAY" - - - - - - - - - - - - - - - - - - -"
* EXEC SQL DECLARE C4 CURSOR FOR * SELECT PNUM, EMPNUM FROM WORKS * WHERE PNUM LIKE '_2%' END-EXEC
* EXEC SQL OPEN C4; CALL"SUB16"USING SQLCODE MOVE SQLCODE TO SQL-COD
MOVE 1 TO ii PERFORM P47 UNTIL ii > 14 * EXEC SQL CLOSE C4; CALL"SUB17"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT (*) INTO :COUNT1 * FROM WORKS END-EXEC CALL"SUB18"USING SQLCODE COUNT1 MOVE SQLCODE TO SQL-COD DISPLAY" COUNT1 should be 8, COUNT1=", COUNT1 " "
* EXEC SQL INSERT INTO STAFF VALUES ('E6',NULL,11,NULL) * END-EXEC CALL"SUB20"USING SQLCODE MOVE SQLCODE TO SQL-COD * EXEC SQL INSERT INTO STAFF VALUES ('E7',NULL,11,'Deale') * END-EXEC CALL"SUB21"USING SQLCODE MOVE SQLCODE TO SQL-COD * EXEC SQL INSERT INTO STAFF VALUES ('E8','Mary',11,NULL) * END-EXEC CALL"SUB22"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL DECLARE C5 CURSOR FOR * SELECT EMPNUM, EMPNAME FROM STAFF * WHERE EMPNAME IS NOT NULL AND CITY IS NULL END-EXEC * EXEC SQL OPEN C5; CALL"SUB23"USING SQLCODE MOVE SQLCODE TO SQL-COD
MOVE 1 TO ii PERFORM P46 UNTIL ii > 9 * EXEC SQL CLOSE C5; CALL"SUB24"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT (*) INTO :COUNT2 * FROM STAFF END-EXEC CALL"SUB25"USING SQLCODE COUNT2 MOVE SQLCODE TO SQL-COD DISPLAY" COUNT2 should be 7, COUNT2=", COUNT2 " "
* EXEC SQL DECLARE C6 CURSOR FOR * SELECT EMPNAME, CITY, GRADE FROM STAFF * WHERE EMPNAME >= 'Betty' AND EMPNUM < 'E35' * OR CITY <= 'Deale ' AND GRADE > 12 * OR GRADE = 13 AND CITY <> 'Akron' END-EXEC * EXEC SQL OPEN C6; CALL"SUB27"USING SQLCODE MOVE SQLCODE TO SQL-COD
MOVE 1 TO ii PERFORM P45 UNTIL ii > 9 * EXEC SQL CLOSE C6; CALL"SUB28"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT (*) INTO :COUNT3 * FROM STAFF END-EXEC CALL"SUB29"USING SQLCODE COUNT3 MOVE SQLCODE TO SQL-COD DISPLAY" COUNT3 should be 2, COUNT3=", COUNT3 " "
* EXEC SQL ROLLBACK WORK; CALL"SUB30"USING SQLCODE MOVE SQLCODE TO SQL-COD if (COUNT1 = 8 AND COUNT2 = 7 AND COUNT3 = 2) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0241','pass','MCO') END-EXEC CALL"SUB31"USING SQLCODE MOVE SQLCODE TO SQL-COD else DISPLAY" dml054.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0241','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB32"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF
******************** END TEST0241 *******************
******************** BEGIN TEST0242 *******************
DISPLAY" TEST0242 " DISPLAY" This routine tests the rules for updatable
- " tables " DISPLAY" Reference X3.135-89 section 5.25
- " specification> " DISPLAY" SR 11, definition of 'updatable' " DISPLAY" Cursor with view, correlation name, NOT" DISPLAY" - - - - - - - - - - - - - - - - - - -"
* EXEC SQL DECLARE C7 CURSOR FOR * SELECT EMPNAME, CITY, GRADE FROM STAFFV2 * WHERE EMPNAME >= 'Betty' AND EMPNUM < 'E35' * OR CITY <= 'Deale ' AND GRADE > 12 * OR GRADE = 13 AND CITY <> 'Akron' END-EXEC * EXEC SQL OPEN C7; CALL"SUB34"USING SQLCODE MOVE SQLCODE TO SQL-COD
MOVE 1 TO ii PERFORM P44 UNTIL ii > 9 * EXEC SQL CLOSE C7; CALL"SUB35"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT (*) INTO :COUNT1 * FROM STAFF END-EXEC CALL"SUB36"USING SQLCODE COUNT1 MOVE SQLCODE TO SQL-COD DISPLAY" COUNT1 should be 3, COUNT1=", COUNT1 " "
* EXEC SQL DECLARE C9 CURSOR FOR * SELECT EMPNAME, CITY, GRADE FROM STAFF * WHERE NOT EMPNAME >= 'Betty' AND EMPNUM < 'E35' * OR NOT (CITY <= 'Deale ') AND GRADE > 9 * AND NOT (GRADE = 13 AND CITY <> 'Akron') * OR NOT CITY IN ('Vienna','New York','Deale') END-EXEC * EXEC SQL OPEN C9; CALL"SUB42"USING SQLCODE MOVE SQLCODE TO SQL-COD
MOVE 1 TO ii PERFORM P42 UNTIL ii > 9 * EXEC SQL CLOSE C9; CALL"SUB43"USING SQLCODE MOVE SQLCODE TO SQL-COD
* EXEC SQL SELECT COUNT (*) INTO :COUNT3 * FROM STAFF END-EXEC CALL"SUB44"USING SQLCODE COUNT3 MOVE SQLCODE TO SQL-COD DISPLAY" COUNT3 should be 2, COUNT3=", COUNT3 " "
* EXEC SQL ROLLBACK WORK; CALL"SUB45"USING SQLCODE MOVE SQLCODE TO SQL-COD if (COUNT1 = 3 AND COUNT2 = 3 AND COUNT3 = 2) then DISPLAY" *** pass *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0242','pass','MCO') END-EXEC CALL"SUB46"USING SQLCODE MOVE SQLCODE TO SQL-COD else DISPLAY" dml054.sco *** fail *** " * EXEC SQL INSERT INTO TESTREPORT * VALUES('0242','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB47"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF
******************** END TEST0242 *******************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
* **** Procedures for PERFORM statements
P50. * EXEC SQL FETCH C1 INTO :CITY1; CALL"SUB49"USING SQLCODE CITY1 MOVE SQLCODE TO SQL-COD if (SQLCODE = 0 AND CITY1 = "Deale") then * EXEC SQL DELETE FROM PROJ WHERE CURRENT OF C1; CALL"SUB50"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF ADD 1 TO ii
.
P49. * EXEC SQL FETCH C2 INTO :HOURS1, :EMPNO, :PNUM1; CALL"SUB51"USING SQLCODE HOURS1 EMPNO PNUM1 MOVE SQLCODE TO SQL-COD if (SQLCODE = 0 AND EMPNO = "E4") then * EXEC SQL UPDATE WORKS SET HOURS = 10 WHERE CURRENT OF C2 * END-EXEC CALL"SUB52"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF ADD 1 TO ii
.
P48. * EXEC SQL FETCH C3 INTO :EMPNO, :PNUM1, :HOURS1; CALL"SUB53"USING SQLCODE EMPNO PNUM1 HOURS1 MOVE SQLCODE TO SQL-COD if(SQLCODE = 0) then * EXEC SQL DELETE FROM WORKS WHERE CURRENT OF C3; CALL"SUB54"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF ADD 1 TO ii
.
P47. * EXEC SQL FETCH C4 INTO :EMPNO, :PNUM1; CALL"SUB55"USING SQLCODE EMPNO PNUM1 MOVE SQLCODE TO SQL-COD if(SQLCODE = 0) then * EXEC SQL DELETE FROM WORKS WHERE CURRENT OF C4; CALL"SUB56"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF ADD 1 TO ii
.
P46. * EXEC SQL FETCH C5 INTO :EMPNO, :EMPNAM; CALL"SUB57"USING SQLCODE EMPNO EMPNAM MOVE SQLCODE TO SQL-COD if(SQLCODE = 0) then * EXEC SQL DELETE FROM STAFF WHERE CURRENT OF C5; CALL"SUB58"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF ADD 1 TO ii
.
P45. * EXEC SQL FETCH C6 INTO :EMPNAM,:CITY1,:GRADE1; CALL"SUB59"USING SQLCODE EMPNAM CITY1 GRADE1 MOVE SQLCODE TO SQL-COD
if(SQLCODE = 0) then * EXEC SQL DELETE FROM STAFF WHERE CURRENT OF C6; CALL"SUB60"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF ADD 1 TO ii
.
P44. * EXEC SQL FETCH C7 INTO :EMPNAM, :CITY1, :GRADE1; CALL"SUB61"USING SQLCODE EMPNAM CITY1 GRADE1 MOVE SQLCODE TO SQL-COD
if(SQLCODE = 0) then * EXEC SQL DELETE FROM STAFFV2 WHERE CURRENT OF C7; CALL"SUB62"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF ADD 1 TO ii
.
P43. * EXEC SQL FETCH C8 INTO :EMPNO, :EMPNAM; CALL"SUB63"USING SQLCODE EMPNO EMPNAM MOVE SQLCODE TO SQL-COD
if(SQLCODE = 0) then * EXEC SQL DELETE FROM STAFF WHERE CURRENT OF C8; CALL"SUB64"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF ADD 1 TO ii
.
P42. * EXEC SQL FETCH C9 INTO :EMPNAM, :CITY1, :GRADE1; CALL"SUB65"USING SQLCODE EMPNAM CITY1 GRADE1 MOVE SQLCODE TO SQL-COD if(SQLCODE = 0) then * EXEC SQL DELETE FROM STAFF WHERE CURRENT OF C9; CALL"SUB66"USING SQLCODE MOVE SQLCODE TO SQL-COD END-IF ADD 1 TO ii
.
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.17Angebot
Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können
¤
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.