* Standard COBOL (file "MPB009.SCO") calling SQL * procedures in file "MPB009.MCO".
**************************************************************** * * COMMENT SECTION * * DATE 1995/03/23 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. * * MPB009.SCO * WRITTEN BY: David W. Flater * TRANSLATED AUTOMATICALLY FROM EMBEDDED COBOL BY CHRIS SCHANZLE * * THIS PROGRAM IS PART B OF A TWO-PART PROGRAM(A & B) THAT * TESTS THE CONCURRENCY OF DYNAMIC SQL * ****************************************************************
if (knum = 0) then DISPLAY" PLEASE start program MPA009!!! " GOTO P105 END-IF
.
P106. MOVE 0 TO code1 * EXEC SQL INSERT INTO MP9_NEXTKEY (KEYNUM,AUTHOR) * VALUES(2, 'B'); CALL"SUB5"USING SQLCODE SQLSTATE MOVE SQLCODE TO SQL-COD if (SQLCODE < 0) then MOVE 1 TO code1 END-IF * EXEC SQL COMMIT WORK; CALL"SUB6"USING SQLCODE SQLSTATE MOVE SQLCODE TO SQL-COD if (SQLCODE < 0) then MOVE 1 TO code1 END-IF if (code1 NOT = 0) then * EXEC SQL ROLLBACK WORK; CALL"SUB7"USING SQLCODE SQLSTATE MOVE SQLCODE TO SQL-COD DISPLAY"Retrying synchronization logic." GOTO P106 END-IF
*YES, we are in sync!
DISPLAY"Transaction B Starts!! " *date_time print ACCEPT TO-DAY FROMDATE ACCEPT THE-TIME FROMTIME DISPLAY"Date run YYMMDD: " TO-DAY " at hhmmssff: " THE-TIME DISPLAY" " DISPLAY"IF this test lasts too long, DEADLOCK" DISPLAY"has taken place, STOP this test!"
MOVE 1 TO i
MOVE"SELECT ANUM FROM MP9_AA " TO dstmt * EXEC SQL PREPARE ERTY FROM :dstmt; CALL"SUB8"USING SQLCODE SQLSTATE dstmt MOVE SQLCODE TO SQL-COD MOVE"SELECT BNUM FROM MP9_BB " TO dstmt * EXEC SQL PREPARE ZERTY FROM :dstmt; CALL"SUB9"USING SQLCODE SQLSTATE dstmt MOVE SQLCODE TO SQL-COD
.
P101. *Move all data into table AA for application Zook. * EXEC SQL DECLARE ZOOK CURSOR FOR ZERTY END-EXEC * EXEC SQL OPEN ZOOK; CALL"SUB10"USING SQLCODE SQLSTATE MOVE SQLCODE TO SQL-COD if (SQLCODE < 0) then GOTO P120 END-IF MOVE 0 TO count1
.
P104. * EXEC SQL FETCH ZOOK INTO :tmpint; CALL"SUB11"USING SQLCODE SQLSTATE tmpint MOVE SQLCODE TO SQL-COD if (SQLCODE < 0) then GOTO P120 END-IF if (SQLCODE = 100) then * EXEC SQL COMMIT WORK; CALL"SUB12"USING SQLCODE SQLSTATE MOVE SQLCODE TO SQL-COD DISPLAY count1 " rows moved from MP9_BB to MP9_AA." *date_time print ACCEPT TO-DAY FROMDATE ACCEPT THE-TIME FROMTIME DISPLAY"Date run YYMMDD: " TO-DAY " at hhmmssff: " THE-TIME if (SQLCODE < 0) then GOTO P120 END-IF GOTO P103 END-IF * EXEC SQL INSERT INTO MP9_AA VALUES (:tmpint); CALL"SUB13"USING SQLCODE SQLSTATE tmpint MOVE SQLCODE TO SQL-COD if (SQLCODE < 0) then GOTO P120 END-IF * EXEC SQL DELETE FROM MP9_BB WHERE CURRENT OF ZOOK; CALL"SUB14"USING SQLCODE SQLSTATE MOVE SQLCODE TO SQL-COD if (SQLCODE < 0) then GOTO P120 END-IF COMPUTE count1 = count1 + 1 GOTO P104
.
P120. COMPUTE flcnt = flcnt + 1 if (flcnt > mxfail) then GOTO P180 END-IF DISPLAY"!+!+!+!+!+!+!+!+ DEADLOCK? !+!+!+!+!+!+!+!+!+!+!" DISPLAY"Negative SQLCODE (Deadlock?) was returned earlier" DISPLAY"!+!+!+!+!+!+!+!+ DEADLOCK? !+!+!+!+!+!+!+!+!+!+!" *date_time print ACCEPT TO-DAY FROMDATE ACCEPT THE-TIME FROMTIME DISPLAY"Date run YYMMDD: " TO-DAY " at hhmmssff: " THE-TIME DISPLAY"Restarting transaction ", i "A." * EXEC SQL ROLLBACK WORK; CALL"SUB15"USING SQLCODE SQLSTATE MOVE SQLCODE TO SQL-COD GOTO P101
.
P103. *Move all data into table BB for application Yook. * EXEC SQL DECLARE YOOK CURSOR FOR ERTY END-EXEC * EXEC SQL OPEN YOOK; CALL"SUB16"USING SQLCODE SQLSTATE MOVE SQLCODE TO SQL-COD if (SQLCODE < 0) then GOTO P110 END-IF MOVE 0 TO count1
.
P102. * EXEC SQL FETCH YOOK INTO :tmpint; CALL"SUB17"USING SQLCODE SQLSTATE tmpint MOVE SQLCODE TO SQL-COD if (SQLCODE < 0) then GOTO P110 END-IF if (SQLCODE = 100) then * EXEC SQL COMMIT WORK; CALL"SUB18"USING SQLCODE SQLSTATE MOVE SQLCODE TO SQL-COD DISPLAY count1 " rows moved from MP9_AA to MP9_BB." *date_time print ACCEPT TO-DAY FROMDATE ACCEPT THE-TIME FROMTIME DISPLAY"Date run YYMMDD: " TO-DAY " at hhmmssff: " THE-TIME if (SQLCODE < 0) then GOTO P110 END-IF GOTO P166 END-IF * EXEC SQL INSERT INTO MP9_BB VALUES (:tmpint); CALL"SUB19"USING SQLCODE SQLSTATE tmpint MOVE SQLCODE TO SQL-COD if (SQLCODE < 0) then GOTO P110 END-IF * EXEC SQL DELETE FROM MP9_AA WHERE CURRENT OF YOOK; CALL"SUB20"USING SQLCODE SQLSTATE MOVE SQLCODE TO SQL-COD if (SQLCODE < 0) then GOTO P110 END-IF COMPUTE count1 = count1 + 1 GOTO P102
.
P166. *date_time print ACCEPT TO-DAY FROMDATE ACCEPT THE-TIME FROMTIME DISPLAY"Date run YYMMDD: " TO-DAY " at hhmmssff: " THE-TIME DISPLAY"Survived transaction ", i "." if (i NOT < loops) then GOTO P199 END-IF COMPUTE i = i + 1 GOTO P101
.
P110. COMPUTE flcnt = flcnt + 1 if (flcnt > mxfail) then GOTO P180 END-IF DISPLAY"!+!+!+!+!+!+!+!+ DEADLOCK? !+!+!+!+!+!+!+!+!+!+!" DISPLAY"Negative SQLCODE (Deadlock?) was returned earlier" DISPLAY"!+!+!+!+!+!+!+!+ DEADLOCK? !+!+!+!+!+!+!+!+!+!+!" *date_time print ACCEPT TO-DAY FROMDATE ACCEPT THE-TIME FROMTIME DISPLAY"Date run YYMMDD: " TO-DAY " at hhmmssff: " THE-TIME DISPLAY"Restarting transaction ", i "B." * EXEC SQL ROLLBACK WORK; CALL"SUB21"USING SQLCODE SQLSTATE MOVE SQLCODE TO SQL-COD GOTO P103
.
P180. DISPLAY" " DISPLAY"Maximum number of failures exceeded" DISPLAY"Assuming no progress" DISPLAY"Program B giving up..." * EXEC SQL ROLLBACK WORK; CALL"SUB22"USING SQLCODE SQLSTATE MOVE SQLCODE TO SQL-COD
.
P199. *Finish up
DISPLAY" " DISPLAY"Program A decides whether this was a pass or not." DISPLAY"Program B is now exiting." *date_time print ACCEPT TO-DAY FROMDATE ACCEPT THE-TIME FROMTIME DISPLAY"Date run YYMMDD: " TO-DAY " at hhmmssff: " THE-TIME DISPLAY" " DISPLAY "===================================================="
******************** END TEST0847 *******************
**** TESTER MAY CHOOSE TO INSERT CODE FOR errcnt > 0 STOPRUN.
¤ 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.21Bemerkung:
(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.