**************************************************************** * * COMMENT SECTION * * DATE 1995/03/23 EMBEDDED 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.PCO * WRITTEN BY: David W. Flater * TRANSLATED AUTOMATICALLY FROM EMBEDDED C BY CHRIS SCHANZLE * * THIS PROGRAM IS PART B OF A TWO-PART PROGRAM(A & B) THAT * TESTS THE CONCURRENCY OF DYNAMIC SQL * ****************************************************************
DISPLAY"*** This program is part B of a two-part" DISPLAY"*** program (A & B)."
DISPLAY" This is Program B which starts after Program A...
- " "
* -----Synchronization-----
.
P105. MOVE 0 TO knum EXECSQLSELECTCOUNT(*) INTO :knum FROM MP9_NEXTKEY WHERE AUTHOR = 'A'END-EXEC MOVE SQLCODE TO SQL-COD
EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD
*are we in sync?
if (knum = 0) then DISPLAY" PLEASE start program MPA009!!! " GOTO P105 END-IF
.
P106. MOVE 0 TO code1 EXECSQLINSERTINTO MP9_NEXTKEY (KEYNUM,AUTHOR)
VALUES(2, 'B') END-EXEC MOVE SQLCODE TO SQL-COD if (SQLCODE < 0) then MOVE 1 TO code1 END-IF EXECSQL COMMIT WORK END-EXEC MOVE SQLCODE TO SQL-COD if (SQLCODE < 0) then MOVE 1 TO code1 END-IF if (code1 NOT = 0) then EXECSQL ROLLBACK WORK END-EXEC 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 EXECSQL PREPARE ERTY FROM :dstmt END-EXEC MOVE SQLCODE TO SQL-COD MOVE"SELECT BNUM FROM MP9_BB " TO dstmt EXECSQL PREPARE ZERTY FROM :dstmt END-EXEC MOVE SQLCODE TO SQL-COD
.
P101. *Move all data into table AA for application Zook. EXECSQL DECLARE ZOOK CURSOR FOR ZERTY END-EXEC EXECSQLOPEN ZOOK END-EXEC MOVE SQLCODE TO SQL-COD if (SQLCODE < 0) then GOTO P120 END-IF MOVE 0 TO count1
.
P104. EXECSQL FETCH ZOOK INTO :tmpint END-EXEC MOVE SQLCODE TO SQL-COD if (SQLCODE < 0) then GOTO P120 END-IF if (SQLCODE = 100) then EXECSQL COMMIT WORK END-EXEC 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 EXECSQLINSERTINTO MP9_AA VALUES (:tmpint) END-EXEC MOVE SQLCODE TO SQL-COD if (SQLCODE < 0) then GOTO P120 END-IF EXECSQLDELETEFROM MP9_BB WHERE CURRENT OF ZOOK END-EXEC 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." EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD GOTO P101
.
P103. *Move all data into table BB for application Yook. EXECSQL DECLARE YOOK CURSOR FOR ERTY END-EXEC EXECSQLOPEN YOOK END-EXEC MOVE SQLCODE TO SQL-COD if (SQLCODE < 0) then GOTO P110 END-IF MOVE 0 TO count1
.
P102. EXECSQL FETCH YOOK INTO :tmpint END-EXEC MOVE SQLCODE TO SQL-COD if (SQLCODE < 0) then GOTO P110 END-IF if (SQLCODE = 100) then EXECSQL COMMIT WORK END-EXEC 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 EXECSQLINSERTINTO MP9_BB VALUES (:tmpint) END-EXEC MOVE SQLCODE TO SQL-COD if (SQLCODE < 0) then GOTO P110 END-IF EXECSQLDELETEFROM MP9_AA WHERE CURRENT OF YOOK END-EXEC 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." EXECSQL ROLLBACK WORK END-EXEC MOVE SQLCODE TO SQL-COD GOTO P103
.
P180. DISPLAY" " DISPLAY"Maximum number of failures exceeded" DISPLAY"Assuming no progress" DISPLAY"Program B giving up..." EXECSQL ROLLBACK WORK END-EXEC 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.
Messung V0.5
¤ Dauer der Verarbeitung: 0.13 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 und die Messung sind noch experimentell.