;VERSION 5A COMMENT
;
; THIS WAS EDIT 445 FOR DBMS VERSION 5.
;
;SYMPTOM
;
; AFTER A FAILURE ON AN OPEN OF AN AREA, THE SPECIAL REGISTER
; ERROR-AREA MAY BE FILLED WITH AN INCORRECT AREA NAME.
;
;DIAGNOSIS
;
; WHEN AN OPEN VERB FAILS, DBCS IMMEDIATELY USES THE NORMAL CLOSE
; PROCEDURES IN ORDER TO UN-DO THE OPEN. OPEN HAS DEPOSITED THE
; ADDRESS OF THE OFFENDING AREA BLOCK IN LAS.AB(SS). WHEN THE
; CLOSE PROCEDURES ARE GOING THROUGH THE AREAS IN THE OPEN LIST,
; THEY ALSO DEPOSIT THE ADDRESSES OF THE AREA BLOCKS WHICH THEY SEE
; INTO LAS.AB(SS). AS A RESULT, THE ADDRESS OF THE OFFENDING AREA
; BLOCK CAN BE LOST.
;
;CURE
;
; SAVE ASIDE THE ADDRESS OF THE OFFENDING AREA BLOCK WHILE CLOSE
; PROCEDURES ARE DOING THEIR THING, THEN WHEN CLOSE IS FINISHED
; RESTORE THIS ADDRESS TO LAS.AB(SS). INSTALL EDIT 550.
;
;
;NOTE ***** THIS EDIT APPLIES TO DBMS10 + DBMS20 V5A, AND TO COBOL
; AND TO FORTRAN
;
;THE RECOMMENDED FILENAME FOR THIS EDIT IS 550.FIX. THE LINES
;.EDIT THRU .ENDE SHOULD BE TYPED INTO THAT FILE
;
;
; FOR COBOL APPLY THIS EDIT TO DBSCOB.REL **********
;
; FOR FORTRAN APPLY THIS EDIT TO DBSFOR.REL **********
;
;
;THE EDIT CAN BE INSERTED USING THE FOLLOWING COMMANDS:
;
;FOR A COBOL-68 DBMS SYSTEM ...
;
; R MAKLIB
; *DBSCOB.550=DBSCOB.REL,550.FIX/F
; *LIBOL.550=LIBOL.REL/M:DBLEAV,DBSCOB.550/R:DBLEAV
; *LIBOL.550=LIBOL.550/INDEX
;
; R LINK
; *LIBSHR,LIBOL.550/SEARCH/GO
;
; SAVE LIBO12
;
;FOR A COBOL-74 DBMS SYSTEM ...
;
; R MAKLIB
; *DBSCOB.550=DBSCOB.REL,550.FIX/F
; *C74LIB.550=C74LIB.REL/M:DBLEAV,DBSCOB.550/R:DBLEAV
; *C74LIB.550=C74LIB.550/INDEX
;
; R LINK
; *C74SHR,C74LIB.550/SEARCH/GO
;
; SAVE C74O12
;
;FOR A FORTRAN DBMS SYSTEM ...
;
; R MAKLIB
; *DBSFOR.550=DBSFOR.REL,550.FIX/F
; *FORLIB.550=FORLIB.REL/M:DBLEAV,DBSFOR.550/R:DBLEAV
; *FORLIB.550=FORLIB.550/INDEX
;
; R LINK
; *FORLIB.550/INCLUDE:FOROTS,FORLIB.550/S/G
;
; SAVE FOROTS
;
;
;THE PATCHED FILES SOULD BE RENAMED TO .REL TO BE USED AS THE BASE FOR
; ANY FUTURE EDITS.
;
;
;**********************************************************************
;
;
.EDIT 550
.NAME JSM
.MODULE DBLEAV
.INSERT V.OPEN,REPLACE:2,<PUSHJ P,CL.OIP>
PUSH P,LAS.AB(SS) ;SAVE ADDR OF OFFENDING AREA BLOCK
PUSHJ P,CL.OIP ;IN ORIG CODE
POP P,LAS.AB(SS) ;RESTORE ADDR OF OFFENDING AREA BLOCK
JRST DB.ABM ;IN ORIG CODE
.ENDI
.ENDE
;SYMPTOM:
;
; EDIT 557 TO MODULE DBJOUR CHECKS A FLAG FOR THE JOURNAL-IN-
; UNDEFINED-STATE WORD, AND IF AN ERROR RETURN WAS MADE FROM
; A PREVIOUS DBCS CALL, INCLUDING FIND VERBS, IT REFUSES TO
; PROCESS THE DBCS CALL, RETURNING A XX62 ERROR.
;
;DIAGNOSIS:
;
; THE INTENT OF EDIT 557 WAS TO STOP SHARING UPDATERS TO A
; DBSM-10/20 DATA BASE FROM DOING FURTHER WORK IN THE EVENT THAT
; THE JOURNAL-IN-UNDEFINED-STATE WORD WAS FOUND TO BE SET WHEN
; ENTERING A DML VERB. IT USES THE VALUE LEFT IN THE INTERNAL
; DCBS EXCEPTION ID FIELD FROM THE PREVIOUS DML VERB AS THE
; FLAG THAT NOT ALL IS WELL WITH THE JOURNAL AND THE DATA BASE.
; HOWEVER, EDIT 557 IS TOO RESTRICTIVE BECAUSE IT FLAGS RETRIEVALS
; AS BEING DANGEROUS AS WELL AS UPDATES. HOWEVER, THE CONTROL OVER
; THE CONSISTENCY OF THE DATA BASE WHICH IS OFFERED BY THAT EDIT
; SHOULD BE RETAINED IN THE CASE OF ALL DML UPDATES. THUS, THE
; TWO DML VERBS "FIND" AND "GET" SHOULD BE MADE TO CLEAR THE
; INTERNAL EXCEPTION ID FIELD WHEN THEY ARE ABOUT TO LEAVE DBCS,
; EXCEPT IN CASES WHERE THE SUS BIT HAS BEEN PREVIOUSLY SET BY
; A FAILED DML UPDATING VERB. IN SUCH CASES, THE RUN-UNIT ITSELF
; MAY HAVE ALREADY CREATED SOME CORRUPTION AND IT SHOULD BE FORCED
; TO TERMINATE. ACCORDINGLY, ONLY RUN-UNITS WHICH HAVE OPENED THE
; DATA BASE FOR SOME FORM OF RETRIEVAL WILL BE ABLE TO CONTINUE
; TO RUN.
;
;CURE:
;
; INSTALL EDIT 576 FOR DBMS-10/20 V5A IN ORDER TO MAKE THEM CLEAR
; THE INTERNAL EXCEPTION ID FIELD AS THEY ARE ABOUT TO LEAVE DBCS
; IF THE SUS BIT IS NOT SET.
;
;NOTE: PROBABLY SHOULD HAVE JUST TESTED THE SUS BIT IN EDIT 557 IN THE
; FIRST PLACE. JM.
;
;NOTE ***** THIS EDIT APPLIES TO DBMS10 AND DBMS20 VERSION 5A ONLY!
;THE RECOMMENDED FILENAME FOR THIS EDIT IS 576.FIX. THE LINES
;.EDIT THRU .ENDE SHOULD BE TYPED INTO THAT FILE
;
; APPLY THIS EDIT TO DBSCOB.REL AND TO DBSFOR.REL
;
;THE EDIT CAN BE INSERTED USING THE FOLLOWING COMMANDS:
;
; FOR A COBOL-68 DBMS SYSTEM...
;
; R MAKLIB
; *DBSCOB.576=DBSCOB.REL,576.FIX/F
; *LIBOL.576=LIBOL.REL/M:DBLEAV,DBSANY.576/R:DBLEAV
; *LIBOL.576=LIBOL.576/INDEX
;
; R LINK
; *LIBSHR,LIBOL.576/SEARCH/GO
;
; SAVE LIBO12
;
; FOR A COBOL-74 DBMS SYSTEM...
;
; R MAKLIB
; *DBSCOB.576=DBSCOB.REL,576.FIX/F
; *C74LIB.576=C74LIB.REL/M:DBLEAV,DBSCOB.576/R:DBLEAV
; *C74LIB.576=C74LIB.576/INDEX
;
; R LINK
; *C74SHR,C74LIB.576/SEARCH/GO
;
; SAVE C74O12
;
; FOR FORTRAN DBMS SYSTEMS...
;
; R MAKLIB
; *DBSFOR.576=DBSFOR.REL,576.FIX/F
; *FORLIB.576=FORLIB.REL/M:DBLEAV,DBSFOR.576/R:DBLEAV
; *FORLIB.576=FORLIB.576/INDEX
;
; R LINK
; *FORLIB.576/INCLUDE:FOROTS,FORLIB.576/SEARCH/GO
;
; SAVE FOROTS
;
;THE PATCHED FILES SHOULD BE RENAMED TO .REL TO BE USED AS THE BASE
;FOR ANY FUTURE EDITS.
;
.EDIT 576
.MODULE DBLEAV
.NAME JSM
.INSERT DXX.EX,BEFORE,<HLRM X,PSW(SS)>
TLNE X,PSW.SUS ;IS THE SUS BIT SET?
JRST .+5 ;YES, LEAVE EXCEPTION ID ALONE
HRRZ R0,VERBID(X) ;GET VERBID OF CURRENT DML VERB.
CAIE R0,3 ;IS IT A FIND ...
CAIN R0,5 ; OR A GET?
SETZM XCEPID(X) ;YES -- SET INTERNAL EXCEPTION ID TO 0
; SO THAT IT WON'T CARRY OVER TO NEXT
; DML VERB
.ENDI
.ENDE