* Standard COBOL (file "DML058.SCO") calling SQL * procedures in file "DML058.MCO"
**************************************************************** * * COMMENT SECTION * * DATE 1988/04/28 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. * * DML058.SCO * WRITTEN BY: SUN DAJUN * TRANSLATED AUTOMATICALLY FROM EMBEDDED COBOL BY CHRIS SCHANZLE * * THIS ROUTINE TESTS THE COMMIT,ROLLBACK AND UPDATE STATEMENT * IN THE LANGUAGE OF SQL. THE FORMAT: * COMMIT WORK * * ROLLBACK WORK * * UPDATE <table name> * SET <set clause:searched>({,<set clause>}...) * (WHERE <search condition>) * * REFERENCES * AMERICAN NATIONAL STANDARD database language - SQL * X3.135-1989 * * SECTION 6.6 <unique constraint definition> * SECTION 8.7 <insert statement> * SECTION 8.10 <select statement> * SECTION 8.12 <update statement: searched> * ****************************************************************
* See INSERTs in program BASETAB.SCO * INSERT INTO UPUNIQ VALUES(1,'A') * INSERT INTO UPUNIQ VALUES(2,'B') * INSERT INTO UPUNIQ VALUES(3,'C') * INSERT INTO UPUNIQ VALUES(4,'D') * INSERT INTO UPUNIQ VALUES(6,'F') * INSERT INTO UPUNIQ VALUES(8,'H')
******************** BEGIN TEST0253 *******************
*Comment -- This test does not requires deferred integrity * constraint checking, but has the same effect as * SET NUMKEY = NUMKEY + 1
DISPLAY" " DISPLAY" DECLARE SUN CURSOR " DISPLAY" FOR SELECT NUMKEY FROM UPUNIQ" DISPLAY" ORDER BY NUMKEY DESC;" DISPLAY" " DISPLAY" FETCH SUN INTO :jj;" DISPLAY" " DISPLAY" UPDATE UPUNIQ" DISPLAY" SET NUMKEY = :jj + 1 " DISPLAY" WHERE NUMKEY = :jj;" DISPLAY" " * EXEC SQL DECLARE SUN CURSOR * FOR SELECT NUMKEY FROM UPUNIQ * ORDER BY NUMKEY DESC END-EXEC
* EXEC SQL OPEN SUN; CALL"SUB26"USINGSQLCODE MOVESQLCODETO SQL-COD
MOVE 0 TO i PERFORM P50 UNTIL i > 9 * EXEC SQL CLOSE SUN; CALL"SUB27"USINGSQLCODE MOVESQLCODETO SQL-COD MOVE 0 TO i MOVE 0 TO ii * EXEC SQL SELECT MAX(NUMKEY), MIN(NUMKEY) * INTO :i,:ii * FROM UPUNIQ END-EXEC CALL"SUB28"USINGSQLCODE i ii MOVESQLCODETO SQL-COD DISPLAY" The max numkey in table UPUNIQ is ", i ". " DISPLAY" The min numkey in table UPUNIQ is ", ii ". "
******************** END TEST0253 *******************
******************** BEGIN TEST0254 *******************
DISPLAY" TEST0254 " DISPLAY" UPDATE -COLUMN SPEC. " DISPLAY" reference X3.135-1989 section 8.12, 5.9" DISPLAY" - - - - - - - - - - - - - - - - - - - - - " DISPLAY" " DISPLAY" UPDATE PROJ1" DISPLAY" SET CITY = PTYPE;" DISPLAY" " DISPLAY" SELECT CITY INTO :city1" DISPLAY" FROM PROJ1" DISPLAY" WHERE PNUM = 'P1';" COMPUTE iii = -1 MOVE"NV"TO city1 * EXEC SQL DELETE FROM PROJ1; CALL"SUB33"USINGSQLCODE MOVESQLCODETO SQL-COD * EXEC SQL INSERT INTO PROJ1 * SELECT * FROM PROJ END-EXEC CALL"SUB34"USINGSQLCODE MOVESQLCODETO SQL-COD * EXEC SQL UPDATE PROJ1 * SET CITY = PTYPE END-EXEC CALL"SUB35"USINGSQLCODE MOVESQLCODETO SQL-COD MOVESQLCODETO iii * EXEC SQL SELECT CITY INTO :city1 * FROM PROJ1 * WHERE PNUM = 'P1' END-EXEC CALL"SUB36"USINGSQLCODE city1 MOVESQLCODETO SQL-COD * EXEC SQL ROLLBACK WORK; CALL"SUB37"USINGSQLCODE MOVESQLCODETO SQL-COD DISPLAY" The correct answer is :" DISPLAY" iii is 0" DISPLAY" city1 = Design" DISPLAY" Your answer is :" DISPLAY" iii is ", iii DISPLAY" city1 = ", city1 if (city1 = "Design"AND iii = 0) then * EXEC SQL INSERT INTO TESTREPORT * VALUES('0254','pass','MCO') END-EXEC CALL"SUB38"USINGSQLCODE MOVESQLCODETO SQL-COD DISPLAY" *** pass *** " else * EXEC SQL INSERT INTO TESTREPORT * VALUES('0254','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB39"USINGSQLCODE MOVESQLCODETO SQL-COD DISPLAY" dml058.sco *** fail *** " END-IF DISPLAY"================================================"
DISPLAY" " * EXEC SQL COMMIT WORK; CALL"SUB40"USINGSQLCODE MOVESQLCODETO SQL-COD **************** END TEST 0254 **********
******************** BEGIN TEST0255 ******************* *For INSERT, UPDATE
DISPLAY" TEST0255 " DISPLAY" USER <value specification>. " DISPLAY" reference X3.135-1989 section 8.7,8.12 & 5.6" DISPLAY" - - - - - - - - - - - - - - - - - - - - - " DISPLAY" " DISPLAY" " DISPLAY" INSERT INTO T4" DISPLAY" VALUES (USER,100,'good','luck');" DISPLAY" " DISPLAY" SELECT STR110 INTO :tuser1 FROM T4" DISPLAY" WHERE NUM6 = 100;" DISPLAY" " DISPLAY" INSERT INTO T4" DISPLAY" VALUES ('Hello',101,'good','luck');" DISPLAY" " DISPLAY" UPDATE T4" DISPLAY" SET STR110 = USER" DISPLAY" WHERE NUM6 = 101;" DISPLAY" " DISPLAY" SELECT STR110 INTO :tuser2 FROM T4" DISPLAY" WHERE NUM6 = 101;" * EXEC SQL DELETE FROM T4; CALL"SUB41"USINGSQLCODE MOVESQLCODETO SQL-COD * EXEC SQL INSERT INTO T4 * VALUES (USER,100,'good','luck') END-EXEC CALL"SUB42"USINGSQLCODE MOVESQLCODETO SQL-COD * EXEC SQL SELECT STR110 INTO :tuser1 FROM T4 * WHERE NUM6 = 100 END-EXEC CALL"SUB43"USINGSQLCODE tuser1 MOVESQLCODETO SQL-COD * EXEC SQL INSERT INTO T4 * VALUES ('Hello',101,'good','luck') END-EXEC CALL"SUB44"USINGSQLCODE MOVESQLCODETO SQL-COD * EXEC SQL UPDATE T4 * SET STR110 = USER * WHERE NUM6 = 101 END-EXEC CALL"SUB45"USINGSQLCODE MOVESQLCODETO SQL-COD * EXEC SQL SELECT STR110 INTO :tuser2 FROM T4 * WHERE NUM6 = 101 END-EXEC CALL"SUB46"USINGSQLCODE tuser2 MOVESQLCODETO SQL-COD DISPLAY" The correct answer is :" DISPLAY" tuser1 = HU" DISPLAY" tuser2 = HU" DISPLAY" Your answer is :" DISPLAY" tuser1 = ", tuser1 DISPLAY" tuser2 = ", tuser2 * EXEC SQL ROLLBACK WORK; CALL"SUB47"USINGSQLCODE MOVESQLCODETO SQL-COD if (tuser1 = "HU"AND tuser2 = "HU") then * EXEC SQL INSERT INTO TESTREPORT * VALUES('0255','pass','MCO') END-EXEC CALL"SUB48"USINGSQLCODE MOVESQLCODETO SQL-COD DISPLAY" *** pass *** " else * EXEC SQL INSERT INTO TESTREPORT * VALUES('0255','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB49"USINGSQLCODE MOVESQLCODETO SQL-COD DISPLAY" dml058.sco *** fail *** " END-IF DISPLAY"================================================"
DISPLAY" " * EXEC SQL COMMIT WORK; CALL"SUB50"USINGSQLCODE MOVESQLCODETO SQL-COD **************** END TEST 0255 **********
******************** BEGIN TEST0256 ******************* *For WHERE
DISPLAY" TEST0256 " DISPLAY" USER in WHERE clause. " DISPLAY" reference X3.135-1989 section 8.7,8.12 " DISPLAY" - - - - - - - - - - - - - - - - - - - - - " DISPLAY" " DISPLAY" INSERT INTO T4" DISPLAY" VALUES ('HU',100,'good','luck');" DISPLAY" " DISPLAY" SELECT STR110 INTO :tuser1 FROM T4" DISPLAY" WHERE STR110 = USER;" DISPLAY" " DISPLAY" INSERT INTO T4" DISPLAY" VALUES ('Hello',101,'good','luck');" DISPLAY" " DISPLAY" DELETE FROM T4" DISPLAY" WHERE STR110 = USER;" DISPLAY" " DISPLAY" SELECT COUNT(*) INTO :ii FROM T4" DISPLAY" WHERE STR110 LIKE '%U%;" COMPUTE ii = -1 * EXEC SQL DELETE FROM T4; CALL"SUB51"USINGSQLCODE MOVESQLCODETO SQL-COD * EXEC SQL INSERT INTO T4 * VALUES ('HU',100,'good','luck') END-EXEC CALL"SUB52"USINGSQLCODE MOVESQLCODETO SQL-COD * EXEC SQL SELECT STR110 INTO :tuser1 FROM T4 * WHERE STR110 = USER END-EXEC CALL"SUB53"USINGSQLCODE tuser1 MOVESQLCODETO SQL-COD * EXEC SQL INSERT INTO T4 * VALUES ('Hello',101,'good','luck') END-EXEC CALL"SUB54"USINGSQLCODE MOVESQLCODETO SQL-COD * EXEC SQL DELETE FROM T4 * WHERE STR110 = USER END-EXEC CALL"SUB55"USINGSQLCODE MOVESQLCODETO SQL-COD * EXEC SQL SELECT COUNT(*) INTO :ii FROM T4 * WHERE STR110 LIKE '%HU%' END-EXEC CALL"SUB56"USINGSQLCODE ii MOVESQLCODETO SQL-COD DISPLAY" The correct answer is :" DISPLAY" tuser1 = HU" DISPLAY" ii = 0" DISPLAY" Your answer is :" DISPLAY" tuser1 = ", tuser1 DISPLAY" ii = ", ii * EXEC SQL ROLLBACK WORK; CALL"SUB57"USINGSQLCODE MOVESQLCODETO SQL-COD if (tuser1 = "HU"AND ii = 0) then * EXEC SQL INSERT INTO TESTREPORT * VALUES('0256','pass','MCO') END-EXEC CALL"SUB58"USINGSQLCODE MOVESQLCODETO SQL-COD DISPLAY" *** pass *** " else * EXEC SQL INSERT INTO TESTREPORT * VALUES('0256','fail','MCO') END-EXEC ADD 1 TO errcnt CALL"SUB59"USINGSQLCODE MOVESQLCODETO SQL-COD DISPLAY" dml058.sco *** fail *** " END-IF DISPLAY"================================================"
DISPLAY" " * EXEC SQL COMMIT WORK; CALL"SUB60"USINGSQLCODE MOVESQLCODETO SQL-COD **************** END TEST 0256 **********
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
* **** Procedures for PERFORM statements
P50. * EXEC SQL FETCH SUN INTO :jj; CALL"SUB61"USINGSQLCODE jj MOVESQLCODETO SQL-COD * EXEC SQL UPDATE UPUNIQ * SET NUMKEY = :jj + 1 * WHERE NUMKEY = :jj END-EXEC CALL"SUB62"USINGSQLCODE jj MOVESQLCODETO SQL-COD ADD 1 TO i
.
Messung V0.5 in Prozent
¤ 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.13Bemerkung:
(vorverarbeitet am 2026-05-06)
¤
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.