Google
 

Trailing-Edge - PDP-10 Archives - bb-jr93e-bb - dbsfor.f05
There are 10 other files named dbsfor.f05 in the archive. Click here to see a list.
;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