RMS0LSTCH       RMS ABORT I/O FOR PROCESS DELETION               21-AUG-1978 22:03:38   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (1)    3600  DECLARATIONS

   (1)    6600  RM$LAST_CHANCE  -  CLEAN UP WRITE ACCESSED SEQ.

RMS0LSTCH       RMS ABORT I/O FOR PROCESS DELETION               21-AUG-1978 22:03:38   VAX-11 MACRO X0.3-11               Page   1

001                                                                                                                              (1)



                                     0000   100 	$BEGIN	RMS0LSTCH,001,F$RMSCLOSERNDN1,<RMS ABORT I/O FOR PROCESS DELETION>

                                     0000   200 ;

                                     0000   300 ; COPYRIGHT (C) 1977

                                     0000   400 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS 01754

                                     0000   500 ;

                                     0000   600 ; THIS SOFTWARE IS FURNISHED  UNDER A LICENSE FOR USE ONLY ON A SINGLE

                                     0000   700 ; COMPUTER  SYSTEM AND  MAY BE  COPIED ONLY WITH  THE INCLUSION OF THE

                                     0000   800 ; ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE, OR ANY OTHER COPIES THEREOF,

                                     0000   900 ; MAY NOT BE PROVIDED OR  OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON

                                     0000  1000 ; EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE

                                     0000  1100 ; TERMS.  TITLE TO AND  OWNERSHIP OF THE  SOFTWARE  SHALL AT ALL TIMES

                                     0000  1200 ; REMAIN IN DEC.

                                     0000  1300 ;

                                     0000  1400 ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE

                                     0000  1500 ; AND SHOULD  NOT BE CONSTRUED  AS A COMMITMENT  BY DIGITAL  EQUIPMENT

                                     0000  1600 ; CORPORATION.

                                     0000  1700 ;

                                     0000  1800 ; DEC ASSUMES  NO  RESPONSIBILITY  FOR  THE USE OR  RELIABILITY OF ITS

                                     0000  1900 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.

                                     0000  2000 ;

                                     0000  2100 ;++

                                     0000  2200 ; FACILITY:	RMS32.

                                     0000  2300 ;

                                     0000  2400 ; ABSTRACT:	CAUSES RMS32 WRITE-ACCESSED SEQUENTIAL F.O. DISK FILES TO HAVE

                                     0000  2500 ;		DIRTY BUFFERS WRITTEN AND THE EOF RECORDED.

                                     0000  2600 ;

                                     0000  2700 ; ENVIRONMENT:	KERNEL OR EXEC MODE, ASYNCHRONOUS PROCESS DELETION.

                                     0000  2800 ;

                                     0000  2900 ; AUTHOR: LEO LAVERDURE	,	 CREATION DATE: 21-FEB-78

                                     0000  3000 ;

                                     0000  3100 ; MODIFIED BY:

                                     0000  3200 ;	, : VERSION

                                     0000  3300 ; 01	 -

                                     0000  3400 ;--

RMS0LSTCH       RMS ABORT I/O FOR PROCESS DELETION               21-AUG-1978 22:03:38   VAX-11 MACRO X0.3-11               Page   2

001             DECLARATIONS                                                                                                     (1)



                                     0000  3600 	.SBTTL	DECLARATIONS

                                     0000  3700 

                                     0000  3800 ;

                                     0000  3900 ; INCLUDE FILES:

                                     0000  4000 ;

                                     0000  4100 	$ASBDEF			;RMS ASYNCHRONOUS CONTEXT BLOCK DEFINITIONS

                                     0000  4200 	$ATRDEF			;FILE ATTRIBUTE CODE DEFINITIONS

                                     0000  4300 	$BDBDEF			;RMS BUFFER DESCRIPTOR BLOCK DEFINITIONS

                                     0000  4400 	$DEVDEF			;DEVICE CHARACTERISTICS DEFINITIONS

                                     0000  4500 	$FIBDEF			;FILE INFORMATION BLOCK DEFINITIONS

                                     0000  4600 	$IFBDEF			;RMS IFAB DEFINITIONS

                                     0000  4700 	$IMPDEF			;RMS IMPURE AREA DEFINITIONS

                                     0000  4800 	$IODEF			;QIO FUNCTION CODE DEFINITIONS

                                     0000  4900 	$IRBDEF			;RMS IRAB DEFINITIONS

                                     0000  5000 	$PSLDEF			;PSL BIT DEFINITIONS

                                     0000  5100 	$QIODEF			;QIO PARAMETER DEFINITIONS

                                     0000  5200 	.LIST MEB

                                     0000  5300 ;

                                     0000  5400 ; EXTERNAL SYMBOLS:

                                     0000  5500 ;

                                     0000  5600 ;

                                     0000  5700 ; MACROS:

                                     0000  5800 ;

                                     0000  5900 ;

                                     0000  6000 ; EQUATED SYMBOLS:

                                     0000  6100 ;

                                     0000  6200 ;

                                     0000  6300 ; OWN STORAGE:

                                     0000  6400 ;

RMS0LSTCH       RMS ABORT I/O FOR PROCESS DELETION               21-AUG-1978 22:03:38   VAX-11 MACRO X0.3-11               Page   3

001             RM$LAST_CHANCE  -  CLEAN UP WRITE ACCESSED SEQ.                                                                  (1)



                                     0000  6600 	.SBTTL	RM$LAST_CHANCE  -  CLEAN UP WRITE ACCESSED SEQ. F.O. DISK FILES

                                     0000  6700 

                                     0000  6800 ;++

                                     0000  6900 ; FUNCTIONAL DESCRIPTION:

                                     0000  7000 ;

                                     0000  7100 ;	THIS ROUTINE IMPLEMENTS THE "ABORT RMS I/O" RMS RUN DOWN OPTION

                                     0000  7200 ;	(TYPE=2).  IT IS CALLED DURING ASYNCHRONOUS PROCESS DELETION TO

                                     0000  7300 ;	ALLOW RMS32 TO WRITE OUT THE CONTENTS OF DIRTY BUFFERS AND RECORD

                                     0000  7400 ;	THE EOF MARK FOR SEQUENTIAL FILE ORG. DISK FILES THAT ARE WRITE ACCESSED.

                                     0000  7500 ;	BECAUSE THIS ROUTINE'S BEING CALLED FROM KERNEL MODE AST LEVEL VIOLATES

                                     0000  7600 ;	RMS SYNCHRONIZATION AND INTERLOCKING MECHANISMS, IT IS NOT GUARANTEED

                                     0000  7700 ;	TO SUCCEED IN WRITING OUT THE FILE CORRECTLY.  IT WILL DO AS GOOD A

                                     0000  7800 ;	JOB AS POSSIBLE AND NOT FAULT.

                                     0000  7900 ;

                                     0000  8000 ;	THE IMAGE AND PROCESS IFAB TABLES ARE SCANNED FOR FILES REQUIRING

                                     0000  8100 ;	CLEANUP.  IF ANY ARE FOUND THE APPROPRIATE BUFFER WRITING AND OR

                                     0000  8200 ;	FILE CLOSING IS PERFORMED.  THERE IS NO ATTEMPT TO CLEAN UP THE

                                     0000  8300 ;	RMS DATA BASE.  IN FACT, THE ONLY RMS IMPURE DATA WRITTEN IS THE REARRANGING

                                     0000  8400 ;	OF THE FILE ATTRIBUTES.  THERE SHOULD BE NO MORE CALLS TO RMS FOR

                                     0000  8500 ;	THIS PROCESS.  (EVENTUALLY CODE SHOULD BE ADDED TO RELEASE ANY

                                     0000  8600 ;	RECORD OR BUCKETS THAT MAY BE LOCKED IN COMBINATION WITH FILE SHARING.)

                                     0000  8700 ;

                                     0000  8800 ;	ANY ERRORS WHICH OCCUR ARE IGNORED, AS THERE IS NO PLACE TO REPORT

                                     0000  8900 ;	THEM IN ANY CASE.  IN FACT, THIS ROUTINE IS ALMOST PARANOID ABOUT

                                     0000  9000 ;	CHECKING THE VALIDITY AND ACCESSIBILITY OF THE RMS STRUCTURES.

                                     0000  9100 ;	THIS IS REQUIRED BECAUSE THIS CODE IS ENTERED VIA KERNEL AST, WHICH

                                     0000  9200 ;	MAY HAVE INTERRUPTED RMS RUNNING IN EXEC MODE, THUS LEAVING THE

                                     0000  9300 ;	RMS STRUCTURES IN UNKNOWN STATES. BECAUSE OF THIS, A NUMBER OF

                                     0000  9400 ;	PROBLEMS EXIST, SOME OF WHICH ARE:

                                     0000  9500 ;

                                     0000  9600 ;		1. THE CURRENT VBN MAY HAVE BEEN DECREMENTED ALREADY

                                     0000  9700 ;		   IN THE "BUFFER DIRTY BUT NOT VALID" CASE, THUS CAUSING

                                     0000  9800 ;		   ONE BLOCK TOO FEW TO BE WRITTEN.

                                     0000  9900 ;		2. THE EOF AND HIGH BLOCK LONGWORDS MAY HAVE BEEN SWAPPED,

                                     0000 10000 ;		   THUS CAUSING THEM TO BE WRONG WHEN WRITTEN BACK TO THE

                                     0000 10100 ;		   FILE.

                                     0000 10200 ;		3. THE FILE ORG BYTE MIGHT NOT YET HAVE BEEN INITIALIZED,

                                     0000 10300 ;		   CAUSING SOME OTHER FILE ORG TO BE TREATED AS THE SEQ. FO.

                                     0000 10400 ;		4. A RECORD BEING UPDATED IN A BUFFER MAY ONLY BE PARTIALLY

                                     0000 10500 ;		   MOVED INTO THAT BUFFER, THUS GETTING A MIXTURE OF OLD AND

                                     0000 10600 ;		   NEW DATA.  THE SAME PROBLEM EXISTS FOR UPDATES ON RECORDS

                                     0000 10700 ;		   SPANNING BLOCK BOUNDARIES.

                                     0000 10800 ;		5. I/O COMPLETION ON MAILBOXES AND MAGTAPE, AS WELL AS OTHER

                                     0000 10900 ;		   FILE ORGANIZATIONS MAY NOT BE FINISHED PROPERLY, POSSIBLY

                                     0000 11000 ;		   LEADING TO FILE CORRUPTION.

                                     0000 11100 ;

                                     0000 11200 ;	ALL OF THESE AND OTHER UNKNOWN PROBLEMS CAN BE AVOIDED BY DOING

                                     0000 11300 ;	A SUPERVISOR-LEVEL AST AND CALLING RMS RUN DOWN IN THE NORMAL FASHION.

                                     0000 11400 ;	GIVEN ALL OF THE ABOVE UNCERTAINTIES, THIS CERTAINLY MAKES GOOD SENSE.

                                     0000 11500 ;	THIS ROUTINE MUST BE CONSIDERED AN EMERGENCY MEASURE ONLY!

                                     0000 11600 ;

                                     0000 11700 ; CALLING SEQUENCE:

                                     0000 11800 ;

                                     0000 11900 ;	BRW	RM$LAST_CHANCE		;(FROM SYS$RMSRUNDWN (ARG2=2))

                                     0000 12000 ;		MAY BE CALLED FROM EITHER EXEC OR KERNEL MODE.

                                     0000 12100 ;		DOES A 'RET' WHEN DONE.

                                     0000 12200 ;

RMS0LSTCH       RMS ABORT I/O FOR PROCESS DELETION               21-AUG-1978 22:03:38   VAX-11 MACRO X0.3-11               Page   4

001             RM$LAST_CHANCE  -  CLEAN UP WRITE ACCESSED SEQ.                                                                  (1)



                                     0000 12300 ; INPUT PARAMETERS:

                                     0000 12400 ;

                                     0000 12500 ;	R7	CALLER'S MODE

                                     0000 12600 ;

                                     0000 12700 ; IMPLICIT INPUTS:

                                     0000 12800 ;

                                     0000 12900 ;	THE CONTENTS OF THE PROCESS AND IMAGE I/O SEGMENTS

                                     0000 13000 ;

                                     0000 13100 ; OUTPUT PARAMETERS:

                                     0000 13200 ;

                                     0000 13300 ;	R0-R11 ARE DESTROYED

                                     0000 13400 ;

                                     0000 13500 ; IMPLICIT OUTPUTS:

                                     0000 13600 ;	NONE

                                     0000 13700 ;

                                     0000 13800 ; COMPLETION CODES:

                                     0000 13900 ;

                                     0000 14000 ;	RMS$_NORMAL

                                     0000 14100 ;

                                     0000 14200 ; SIDE EFFECTS:

                                     0000 14300 ;

                                     0000 14400 ;	SEE DESCRIPTION ABOVE.

                                     0000 14500 ;	

                                     0000 14600 ;--

RMS0LSTCH       RMS ABORT I/O FOR PROCESS DELETION               21-AUG-1978 22:03:38   VAX-11 MACRO X0.3-11               Page   5

001             RM$LAST_CHANCE  -  CLEAN UP WRITE ACCESSED SEQ.                                                                  (2)



                                     0000   100 RM$LAST_CHANCE::

            01            57     91  0000   200 	CMPB	R7,#PSL$C_EXEC		; CALLER SUFFICIENTLY PRIVILEGED?

                          16     1A  0003   300 	BGTRU	EXIT			; BRANCH IF NOT

                                     0005   400 ;++

                                     0005   500 ;

                                     0005   600 ;  RUN DOWN THE IMAGE FILES

                                     0005   700 ;

                                     0005   800 ;--

            5B   00000000'9F     DE  0005   900 	MOVAL	@#PIO$GW_IIOIMPA,R11	; GET IIO IMPURE AREA ADDRESS

                                     000C  1000 	IFNORD	#1,(R11),EXIT,R7	; BRANCH IF PAGE NOT READABLE

            01            57     0C  000C       		PROBER	R7,#1,(R11)

                          6B         000F       

                          09     13  0010       		BEQL	EXIT

                          0F     10  0012  1100 	BSBB	RUNDWN			; DO THE RUN DOWN

                                     0014  1200 ;++

                                     0014  1300 ;

                                     0014  1400 ; NOW RUN DOWN PROCESS-PERMANENT FILES

                                     0014  1500 ;

                                     0014  1600 ;--

            5B       0000'CB     DE  0014  1700 	MOVAL	W^PIO$GW_PIOIMPA-PIO$GW_IIOIMPA(R11),R11

                                     0019  1800 					; POINT TO PROCESS I/O IMPURE AREA

                          08     10  0019  1900 	BSBB	RUNDWN			; DO THE RUN DOWN

            50   00000000'8F     D0  001B  2000 EXIT:	MOVL	#RMS$_NORMAL,R0		; SHOW SUCCESS

                                 04  0022  2100 	RET				; BACK TO CALLER

RMS0LSTCH       RMS ABORT I/O FOR PROCESS DELETION               21-AUG-1978 22:03:38   VAX-11 MACRO X0.3-11               Page   6

001             RM$LAST_CHANCE  -  CLEAN UP WRITE ACCESSED SEQ.                                                                  (2)



                                     0023  2300 ;++

                                     0023  2400 ;

                                     0023  2500 ; RUN DOWN SUBROUTINE:

                                     0023  2600 ;

                                     0023  2700 ; CHECKS IFAB TABLE FOR WRITE-ACCESSED, SEQ. F.O. DISK FILES.

                                     0023  2800 ; IF ANY FOUND WRITES THE CURRENT BUFFER, IF DIRTY,

                                     0023  2900 ; AND THEN ISSUES A $CLOSE REQUEST TO RECORD THE EOF MARK.

                                     0023  3000 ;

                                     0023  3100 ; INPUTS:

                                     0023  3200 ;	R11 - IMPURE AREA ADDR

                                     0023  3300 ;	R7 - CALLER'S MODE

                                     0023  3400 ;

                                     0023  3500 ; OUTPUTS:

                                     0023  3600 ;	R0-R6, R8-R10 DESTROYED

                                     0023  3700 ;--

                                     0023  3800 RUNDWN:

            55         18 AB     D0  0023  3900 	MOVL	IMP$L_IFABTBL(R11),R5	; GET IFAB TABLE ADDR

                          85     DD  0027  4000 NXTSEG:	PUSHL	(R5)+			; SAVE ADDR NEXT TABLE SEG ON STACK

            58         20 AB     3C  0029  4100 	MOVZWL	IMP$W_ENTPERSEG(R11),R8	; GET # ENTRIES/SEG

            5A            85     D0  002D  4200 NXTENT:	MOVL	(R5)+,R10		; GET IFAB ADDR

                          11     12  0030  4300 	BNEQ	RDIFAB			; BRANCH IF ONE

            F8            58     F5  0032  4400 NXTSOB:	SOBGTR	R8,NXTENT		; KEEP SCANNING SEGMENT

                                     0035  4500 ;

                                     0035  4600 ; NO MORE IFABS THIS SEGMENT, TRY NEXT

                                     0035  4700 ;

            55            8E     D0  0035  4800 	MOVL	(SP)+,R5		; GET NEXT SEGMENT ADDR

                          08     13  0038  4900 	BEQL	10$			; BRANCH IF NO MORE

       0040 8F            57     0C  003A  5000 	PROBER	R7,#<IMP$C_ENTPERSEG+1>*4,(R5)	; SEGMENT READABLE?

                          65         003F       

                          E5     12  0040  5100 	BNEQ	NXTSEG				; BRANCH IF YES

                                 05  0042  5200 10$:	RSB

RMS0LSTCH       RMS ABORT I/O FOR PROCESS DELETION               21-AUG-1978 22:03:38   VAX-11 MACRO X0.3-11               Page   7

001             RM$LAST_CHANCE  -  CLEAN UP WRITE ACCESSED SEQ.                                                                  (2)



                                     0043  5400 ;

                                     0043  5500 ;  FOUND AN IFAB.

                                     0043  5600 ;

                                     0043  5700 ;  CHECK THAT IFAB IS ACCESSIBLE AND VALID

                                     0043  5800 ;

                                     0043  5900 RDIFAB:

                                     0043  6000 	IFNOWRT	#IFB$C_BLN,(R10),NXTSOB,R7	; BRANCH IF IFAB NOT WRITEABLE

       0060 8F            57     0D  0043       		PROBEW	R7,#IFB$C_BLN,(R10)

                          6A         0048       

                          E7     13  0049       		BEQL	NXTSOB

            0B         08 AA     91  004B  6100 	CMPB	IFB$B_BID(R10),#IFB$C_BID	; IS IT REALLY AN IFAB?

                          E1     12  004F  6200 	BNEQ	NXTSOB				; IGNORE IF NOT

            18         09 AA     91  0051  6300 	CMPB	IFB$B_BLN(R10),#IFB$C_BLN/4	; AT LEAST RIGHT LENGTH?

                          DB     1F  0055  6400 	BLSSU	NXTSOB				; IGNORE IF BAD

                                     0057  6500 ;

                                     0057  6600 ; CHECK IF SEQUENTIAL FILE ORG., WRITE-ACCESSED, DISK FILE AND IGNORE IF NOT

                                     0057  6700 ;

                                     0057  6800 	ASSUME	IFB$C_SEQ EQ 0

                       23 AA     95  0057  6900 	TSTB	IFB$B_ORGCASE(R10)		; SEQ. F.O.?

                          D6     12  005A  7000 	BNEQ	NXTSOB				; IGNORE IF NOT

            6A            25     E1  005C  7100 	BBC	#IFB$V_ACCESSED,(R10),NXTSOB	; BRANCH IF NOT ACCESSED

                          D2         005F       

            6A            30     E1  0060  7200 	BBC	#IFB$V_WRTACC,(R10),NXTSOB	; BRANCH IF NOT WRITE-ACCESSED

                          CE         0063       

            6A            1C     E1  0064  7300 	BBC	#DEV$V_RND,IFB$L_PRIM_DEV(R10),NXTSOB	; BRANCH IF NOT DISK

                          CA         0067       

                                     0068  7400 ;

                                     0068  7500 ;  FIND IRAB, IF ONE, AND VERIFY IT

                                     0068  7600 ;

            59         1C AA     D0  0068  7700 	MOVL	IFB$L_IRAB_LNK(R10),R9		; GET IRAB ADDRESS

                          28     13  006C  7800 	BEQL	CLOSE_BR			; BRANCH IF NONE

                                     006E  7900 	IFNORD	#IRB$C_BLN_SEQ,(R9),NXTSOB,R7	; BRANCH IF NOT READABLE

       004C 8F            57     0C  006E       		PROBER	R7,#IRB$C_BLN_SEQ,(R9)

                          69         0073       

                          BC     13  0074       		BEQL	NXTSOB

            0A         08 A9     91  0076  8000 	CMPB	IRB$B_BID(R9),#IRB$C_BID	; IS IT REALLY AN IRAB?

                          B6     12  007A  8100 	BNEQ	NXTSOB				; BRANCH IF NOT AN IRAB

            33         09 A9     91  007C  8200 	CMPB	IRB$B_BLN(R9),#<IRB$C_BLN_SEQ+ASB$C_BLN_SEQ>/4	; LONG ENOUGH?

                          B0     1F  0080  8300 	BLSSU	NXTSOB				; BRANCH IF NOT

RMS0LSTCH       RMS ABORT I/O FOR PROCESS DELETION               21-AUG-1978 22:03:38   VAX-11 MACRO X0.3-11               Page   8

001             RM$LAST_CHANCE  -  CLEAN UP WRITE ACCESSED SEQ.                                                                  (2)



                                     0082  8500 ;++

                                     0082  8600 ;

                                     0082  8700 ;  CHECK FOR VALID CURRENT BDB.  IF FOUND AND DIRTY, WRITE IT.

                                     0082  8800 ;

                                     0082  8900 ;--

            54         20 A9     D0  0082  9000 	MOVL	IRB$L_CURBDB(R9),R4		; GET BDB ADDRESS

                          0E     13  0086  9100 	BEQL	CLOSE_BR			; BRACH IF NONE

                                     0088  9200 	IFNORD	#BDB$C_BLN,(R4),CLOSE_BR,R7	; BRANCH IF NOT READABLE

            28            57     0C  0088       		PROBER	R7,#BDB$C_BLN,(R4)

                          64         008B       

                          08     13  008C       		BEQL	CLOSE_BR

                                     008E  9300 	ASSUME	BDB$B_BLN EQ BDB$B_BID+1

       0A0C 8F         08 A4     B1  008E  9400 	CMPW	BDB$B_BID(R4),#BDB$C_BID+<<BDB$C_BLN/4>@8>	; VALID BDB?

                          02     13  0094  9500 	BEQL	CHKDRT				; BRANCH IF YES

                                     0096  9600 CLOSE_BR:

                          7A     11  0096  9700 	BRB	CLOSE				; EXTENDED BRANCH TO CLOSE FILE

         0A A4            01     E1  0098  9800 CHKDRT:	BBC	#BDB$V_DRT,BDB$B_FLGS(R4),CLOSE	; BRANCH IF BUFFER NOT DIRTY

                          75         009C       

                                     009D  9900 

                                     009D 10000 ;

                                     009D 10100 ;  BDB MARKED DIRTY.

                                     009D 10200 ;  COMPUTE SIZE OF BUFFER TO BE WRITTEN.

                                     009D 10300 ;

            56         20 A4     9A  009D 10400 	MOVZBL	BDB$B_REL_VBN(R4),R6	; GET CURRENT VBN

                                     00A1 10500 	ASSUME	BDB$V_VAL EQ 0

            02         0A A4     E8  00A1 10600 	BLBS	BDB$B_FLGS(R4),10$	; BRANCH IF BUFFER VALID

                                     00A5 10700 ;

                                     00A5 10800 ; BUFFER DIRTY BUT MARKED INVALID.

                                     00A5 10900 ; DECREMENT THE CURRENT VBN DATA.

                                     00A5 11000 ;

                          56     D7  00A5 11100 	DECL	R6

                                     00A7 11200 ;

                                     00A7 11300 ; COMPUTE BYTE COUNT FOR TRANSFER

                                     00A7 11400 ; (I.E., TRANSFER ALL BLOCKS THRU CURRENT VBN OR # VAL_VBNS IF GREATER)

                                     00A7 11500 ;

                          56     B6  00A7 11600 10$:	INCW	R6			; GET # VBNS

         21 A4            56     91  00A9 11700 	CMPB	R6,BDB$B_VAL_VBNS(R4)	; IS CURRENT GREATER THAN  # VALID VBNS?

                          04     1E  00AD 11800 	BGEQU	20$			; BRANCH IF YES

            56         21 A4     9A  00AF 11900 	MOVZBL	BDB$B_VAL_VBNS(R4),R6	; NO - SO USE # VALID VBNS

                                     00B3 12000 ;

                                     00B3 12100 ;  CHECK FOR EXTEND OF DISK FILE

                                     00B3 12200 ;

            56         18 A4     C1  00B3 12300 20$:	ADDL3	BDB$L_VBN(R4),R6,R1	; GET END VBN+1

                          51         00B7       

                          51     D7  00B8 12400 	DECL	R1			; MAKE IT END VBN

            51         40 AA     C2  00BA 12500 	SUBL2	IFB$L_HBK(R10),R1	; NEED TO EXTEND FILE?

                          38     15  00BE 12600 	BLEQ	WRITE			; BRANCH IF NOT

RMS0LSTCH       RMS ABORT I/O FOR PROCESS DELETION               21-AUG-1978 22:03:38   VAX-11 MACRO X0.3-11               Page   9

001             RM$LAST_CHANCE  -  CLEAN UP WRITE ACCESSED SEQ.                                                                  (2)



                                     00C0 12800 ;++

                                     00C0 12900 ;

                                     00C0 13000 ;  EXTEND FILE (R1 = # BLOCKS REQUIRED)

                                     00C0 13100 ;

                                     00C0 13200 ;--

                                     00C0 13300 ;

                                     00C0 13400 ;  INITIALIZE AN IO STATUS BLOCK AND A FIB ON THE STACK

                                     00C0 13500 ;

                          7E     7C  00C0 13600 	CLRQ	-(SP)			; IOSB

            52            5E     D0  00C2 13700 	MOVL	SP,R2			; SAVE IOSB ADDRESS

                                     00C5 13800 	.REPT	<<FIB$C_EXTDATA+7>/8>

                                     00C5 13900 	CLRQ	-(SP)			; INITIALIZE FIB

                                     00C5 14000 	.ENDM

                          7E     7C  00C5       	CLRQ	-(SP)			; INITIALIZE FIB

                          7E     7C  00C7       	CLRQ	-(SP)			; INITIALIZE FIB

                          7E     7C  00C9       	CLRQ	-(SP)			; INITIALIZE FIB

                          7E     7C  00CB       	CLRQ	-(SP)			; INITIALIZE FIB

                                     00CD 14100 

         18 AE            51     D0  00CD 14200 	MOVL	R1,FIB$L_EXSZ(SP)	; SET # BLOCKS REQUIRED

         16 AE         80 8F     90  00D1 14300 	MOVB	#FIB$M_EXTEND,FIB$W_EXCTL(SP) ; SAY IT'S AN EXTEND

                                     00D6 14400 ;

                                     00D6 14500 ; BUILD THE FIB DESCRIPTOR AND QIO PARAMETERS ON THE STACK AND DO THE EXTEND.

                                     00D6 14600 ;

                          5E     DD  00D6 14700 	PUSHL	SP			; ADDR OF FIB

                          20     DD  00D8 14800 	PUSHL	#FIB$C_EXTDATA		; LENGTH OF FIB

                          7E     7C  00DA 14900 	CLRQ	-(SP)			; P6=P5=0

                          7E     7C  00DC 15000 	CLRQ	-(SP)			; P4=P3=0

                          7E     D4  00DE 15100 	CLRL	-(SP)			; P2=0

                       14 AE     DF  00E0 15200 	PUSHAL	20(SP)			; P1=FIB ADDRESS

            50            36     D0  00E3 15300 	MOVL	#IO$_MODIFY,R0		; IO FUNCTION CODE

                          61     10  00E6 15400 	BSBB	DOQIO			; DO THE EXTEND

            0A            50     E9  00E8 15500 	BLBC	R0,30$			; BRANCH ON FAILURE

                                     00EB 15600 ;

                                     00EB 15700 ; EXTEND COMPLETE.

                                     00EB 15800 ; UPDATE IFAB HI BLOCK FIELD, DEALLOCATE THE FIB, AND RETURN

                                     00EB 15900 ;

         24 AE         20 AE     C1  00EB 16000 	ADDL3	FIB$L_EXSZ+8(SP),FIB$L_EXVBN+8(SP),IFB$L_HBK(R10)

                       40 AA         00F0       

                       40 AA     D7  00F2 16100 	DECL	IFB$L_HBK(R10)		; GET # OF HIGHEST ALLOCATED BLK

            5E            30     C0  00F5 16200 30$:	ADDL2	#16+<<FIB$C_EXTDATA+7>&^XF8>,SP	; CLEAN STACK

RMS0LSTCH       RMS ABORT I/O FOR PROCESS DELETION               21-AUG-1978 22:03:38   VAX-11 MACRO X0.3-11               Page  10

001             RM$LAST_CHANCE  -  CLEAN UP WRITE ACCESSED SEQ.                                                                  (2)



                                     00F8 16400 ;++

                                     00F8 16500 ;

                                     00F8 16600 ;  NOW WRITE THE BUFFER

                                     00F8 16700 ;

                                     00F8 16800 ;--

                                     00F8 16900 WRITE:

                          7E     7C  00F8 17000 	CLRQ	-(SP)			; MAKE IOSB

            52            5E     D0  00FA 17100 	MOVL	SP,R2			; SAVE IOSB ADDR

                          7E     7C  00FD 17200 	CLRQ	-(SP)			; P6=P5=0

                          7E     D4  00FF 17300 	CLRL	-(SP)			; P4=0

                       18 A4     DD  0101 17400 	PUSHL	BDB$L_VBN(R4)		; P3=VBN

            56            09     9C  0104 17500 	ROTL	#9,R6,-(SP)		; P2=# OF BYTES TO WRITE

                          7E         0107       

                       14 A4     DD  0108 17600 	PUSHL	BDB$L_ADDR(R4)		; P1=BUFFER ADDR

            50            30     D0  010B 17700 	MOVL	#IO$_WRITEVBLK,R0	; I/O FUNCTION CODE

                          39     10  010E 17800 	BSBB	DOQIO			; DO THE WRITE

                          03     BA  0110 17900 	POPR	#^M<R0,R1>		; CLEAN STACK

RMS0LSTCH       RMS ABORT I/O FOR PROCESS DELETION               21-AUG-1978 22:03:38   VAX-11 MACRO X0.3-11               Page  11

001             RM$LAST_CHANCE  -  CLEAN UP WRITE ACCESSED SEQ.                                                                  (2)



                                     0112 18100 ;++

                                     0112 18200 ;

                                     0112 18300 ;  NOW CLOSE THE FILE, WRITING THE ATTRIBUTES

                                     0112 18400 ;

                                     0112 18500 ;--

                          7E     7C  0112 18600 CLOSE:	CLRQ	-(SP)			; MAKE IOSB

            52            5E     D0  0114 18700 	MOVL	SP,R2			; SAVE IOSB ADDR

                                     0117 18800 ;

                                     0117 18900 ; BUILD ATTRIBUTE LIST ON STACK TO REWRITE RECORD ATTRIBUTES

                                     0117 19000 ;

                          00     DD  0117 19100 	PUSHL	#0			; END OF ATTRIBUTE LIST FLAG

                       3C AA     DF  0119 19200 	PUSHAL	IFB$B_RFMORG(R10)	; WRITE ATTRIBUTES FROM IFAB

                 00040014 8F     DD  011C 19300 	PUSHL	#<ATR$C_RECATTR@16>+<IFB$C_FHAEND-IFB$B_RFMORG>

                                     0122 19400 					; LENGTH & RECORD ATTRIUBTES CODE

                                     0122 19500 ;

                                     0122 19600 ;  PUT ORG BACK INTO RFMORG BYTE

                                     0122 19700 ;

            04         23 AA     F0  0122 19800 	INSV	IFB$B_ORGCASE(R10),#IFB$V_ORG,#IFB$S_ORG,IFB$B_RFMORG(R10)

         3C AA            04         0126       

                                     0129 19900 ;

                                     0129 20000 ;  SWAP THE WORDS OF IFB$L_HBK AND IFB$L_EBK TO MATCH FILES-11

                                     0129 20100 ;  ON-DISK STRUCTURE

                                     0129 20200 ;

         40 AA            10     9C  0129 20300 	ROTL	#16,IFB$L_HBK(R10),IFB$L_HBK(R10)

                       40 AA         012D       

         44 AA            10     9C  012F 20400 	ROTL	#16,IFB$L_EBK(R10),IFB$L_EBK(R10)

                       44 AA         0133       

                                     0135 20500 ;

                                     0135 20600 ;  DO THE DEACCESS QIO

                                     0135 20700 ;

                          7E     D4  0135 20800 	CLRL	-(SP)			; P6=0

                       04 AE     DF  0137 20900 	PUSHAL	4(SP)			; P5=ATTRIBUTE LIST ADDR

                          7E     7C  013A 21000 	CLRQ	-(SP)			; P4=P3=0

                          7E     7C  013C 21100 	CLRQ	-(SP)			; P2=P1=0

            50            34     9A  013E 21200 	MOVZBL	#IO$_DEACCESS,R0	; DEACCESS FUNCTION CODE

                          06     10  0141 21300 	BSBB	DOQIO			; DO THE DEACCESS

            5E            14     C0  0143 21400 	ADDL2	#20,SP			; CLEAN STACK

                          FEE9   31  0146 21500 	BRW	NXTSOB			; GO HANDLE NEXT FILE

RMS0LSTCH       RMS ABORT I/O FOR PROCESS DELETION               21-AUG-1978 22:03:38   VAX-11 MACRO X0.3-11               Page  12

001             RM$LAST_CHANCE  -  CLEAN UP WRITE ACCESSED SEQ.                                                                  (2)



                                     0149 21700 ;++

                                     0149 21800 ;

                                     0149 21900 ;  DOQIO SUBROUTINE TO PERFORM THE QIO

                                     0149 22000 ;

                                     0149 22100 ;  INPUTS:

                                     0149 22200 ;

                                     0149 22300 ;	R10	IFAB ADDRESS

                                     0149 22400 ;	R2	IOSB ADDRESS

                                     0149 22500 ;	R0	QIO FUNCTION CODE

                                     0149 22600 ;	P1 THRU P6 ALREADY ON STACK.

                                     0149 22700 ;

                                     0149 22800 ;  OUTPUTS:

                                     0149 22900 ;

                                     0149 23000 ;	R0,R1,R3	DESTROYED

                                     0149 23100 ;

                                     0149 23200 ;--

                          08     BA  0149 23300 DOQIO:	POPR	#^M<R3>				; GET RETURN PC

                                     014B 23400 	ASSUME	QIO$_ASTPRM EQ <QIO$_P1 - 4>

                                     014B 23500 	ASSUME	QIO$_ASTADR EQ <QIO$_ASTPRM - 4>

                          7E     7C  014B 23600 	CLRQ	-(SP)				; NO AST WANTED

                                     014D 23700 	ASSUME	QIO$_IOSB EQ <QIO$_ASTADR - 4>

                          52     DD  014D 23800 	PUSHL	R2				; IOSB ADDR

                                     014F 23900 	ASSUME	QIO$_FUNC EQ <QIO$_IOSB - 4>

                          50     DD  014F 24000 	PUSHL	R0				; I/O FUNCTION CODE

                                     0151 24100 	ASSUME	QIO$_CHAN EQ <QIO$_FUNC - 4>

            7E         20 AA     3C  0151 24200 	MOVZWL	IFB$W_CHNL(R10),-(SP)		; I/O CHANNEL

                                     0155 24300 	ASSUME	QIO$_EFN EQ <QIO$_CHAN - 4>

                          1E     DD  0155 24400 	PUSHL	#IMP$C_IOREFN			; EFN

                                     0157 24500 	ASSUME	QIO$_NARGS EQ 12

   00000000'9F            0C     FB  0157 24600 	CALLS	#12,@#SYS$QIO			; DO THE QIO

            1D            50     E9  015E 24700 	BLBC	R0,20$				; BRANCH ON FAILURE

            50            62     D0  0161 24800 10$:	MOVL	(R2),R0				; GET STATUS FROM IOSB

                          18     12  0164 24900 	BNEQ	20$				; AND BRANCH IF IO REALLY DONE

                                     0166 25000 	$CLREF_S	#IMP$C_IOREFN		; CLEAR QIO EVENT FLAG

                          1E     DD  0166       		PUSHL	#IMP$C_IOREFN

   00000000'GF            01     FB  0168       		CALLS	#1,G^SYS$CLREF

                          62     D5  016F 25100 	TSTL	(R2)				; DONE NOW?

                          EE     12  0171 25200 	BNEQ	10$				; BRANCH IF YES

                                     0173 25300 	$WAITFR_S	#IMP$C_IOREFN		; WAIT FOR FLAG

                          1E     DD  0173       		PUSHL	#IMP$C_IOREFN

   00000000'GF            01     FB  0175       		CALLS	#1,G^SYS$WAITFR

                          E3     11  017C 25400 	BRB	10$				; GO CHECK IF DONE

                          63     17  017E 25500 20$:	JMP	(R3)				; RETURN TO CALLER

                                     0180 25600 

                                     0180 25700 

                                     0180 25800 	.END

RMS0LSTCH       RMS ABORT I/O FOR PROCESS DELETION               21-AUG-1978 22:03:38   VAX-11 MACRO X0.3-11               Page  13

SYMBOL TABLE                                                                                                                     (2)



$$.PSECT_EP    = 00000000            ATR$S_EXPDAT   = 00000007            CHKDRT           00000098 R     02   

$$ARGS         = 0000000C            ATR$S_EXPDATE  = 00000008            CLOSE            00000112 R     02   

$$RMSTEST      = 0000001A            ATR$S_FILNAM   = 00000006            CLOSE_BR         00000096 R     02   

$$RMS_PBUGCHK  = 00000010            ATR$S_FILTYP   = 00000002            DEV$M_ALL      = 00800000            

$$RMS_TBUGCHK  = 00000008            ATR$S_FILVER   = 00000002            DEV$M_AVL      = 00040000            

$$RMS_UMODE    = 00000004            ATR$S_FPRO     = 00000002            DEV$M_CCL      = 00000002            

$$T1           = 00000034            ATR$S_HEADER   = 00000200            DEV$M_DIR      = 00000008            

ASB$B_ARGCNT     00000000            ATR$S_RECATTR  = 00000020            DEV$M_DMT      = 00200000            

ASB$B_BLN        00000001            ATR$S_REVDATE  = 00000008            DEV$M_ELG      = 00400000            

ASB$B_STKSIZ     00000002            ATR$S_RPRO     = 00000002            DEV$M_FOD      = 00004000            

ASB$C_BLN_FAB    00000070            ATR$S_SEMASK   = 00000008            DEV$M_FOR      = 01000000            

ASB$C_BLN_IDX    000000AC            ATR$S_STATBLK  = 0000000A            DEV$M_GEN      = 00020000            

ASB$C_BLN_REL    00000084            ATR$S_UCHAR    = 00000001            DEV$M_IDV      = 04000000            

ASB$C_BLN_SEQ    00000080            ATR$S_UIC      = 00000004            DEV$M_MBX      = 00100000            

ASB$K_BLN_FAB    00000070            ATR$S_UIC_RO   = 00000004            DEV$M_MNT      = 00080000            

ASB$K_BLN_IDX    000000AC            ATR$S_USERLABEL= 00000050            DEV$M_NET      = 00002000            

ASB$K_BLN_REL    00000084            ATR$W_SIZE       00000000            DEV$M_ODV      = 08000000            

ASB$K_BLN_SEQ    00000080            ATR$W_TYPE       00000002            DEV$M_RCK      = 40000000            

ASB$L_ERR        00000008            BDB$B_BID        00000008            DEV$M_REC      = 00000001            

ASB$L_FABRAB     00000004            BDB$B_BLN        00000009            DEV$M_RND      = 10000000            

ASB$L_REGS       00000010            BDB$B_FLGS       0000000A            DEV$M_RTM      = 20000000            

ASB$L_SUC        0000000C            BDB$B_POST_CCTL  00000023            DEV$M_SDI      = 00000010            

ATR$C_ACLEVEL  = 00000018            BDB$B_PRE_CCTL   00000022            DEV$M_SHR      = 00010000            

ATR$C_ALCONTROL= 0000000E            BDB$B_REL_VBN    00000020            DEV$M_SPL      = 00000040            

ATR$C_ASCDATES = 0000000D            BDB$B_USECNT     0000000B            DEV$M_SQD      = 00000020            

ATR$C_ASCNAME  = 00000010            BDB$B_VAL_VBNS   00000021            DEV$M_SWL      = 02000000            

ATR$C_BAKDATE  = 00000014            BDB$C_BID      = 0000000C            DEV$M_TRM      = 00000004            

ATR$C_BLOCKSIZE= 0000000B            BDB$C_BLN        00000028            DEV$M_WCK      = 80000000            

ATR$C_CREDATE  = 00000011            BDB$K_BLN        00000028            DEV$V_ALL      = 00000017            

ATR$C_DIRSEQ   = 0000001B            BDB$L_ADDR       00000014            DEV$V_AVL      = 00000012            

ATR$C_ENDLBLAST= 0000000F            BDB$L_BLINK      00000004            DEV$V_CCL      = 00000001            

ATR$C_EXPDAT   = 00000008            BDB$L_CURBUFADR  00000024            DEV$V_DIR      = 00000003            

ATR$C_EXPDATE  = 00000013            BDB$L_FLINK      00000000            DEV$V_DMT      = 00000015            

ATR$C_FILNAM   = 00000005            BDB$L_IOSB       00000020            DEV$V_ELG      = 00000016            

ATR$C_FILTYP   = 00000006            BDB$L_OWN        0000000C            DEV$V_FOD      = 0000000E            

ATR$C_FILVER   = 00000007            BDB$L_VBN        00000018            DEV$V_FOR      = 00000018            

ATR$C_FPRO     = 00000016            BDB$L_WAIT       0000001C            DEV$V_GEN      = 00000011            

ATR$C_HEADER   = 0000000A            BDB$L_WK1        00000020            DEV$V_IDV      = 0000001A            

ATR$C_RECATTR  = 00000004            BDB$M_AST_DCL  = 00000040            DEV$V_MBX      = 00000014            

ATR$C_REVDATE  = 00000012            BDB$M_DRT      = 00000002            DEV$V_MNT      = 00000013            

ATR$C_RPRO     = 00000017            BDB$M_IOP      = 00000004            DEV$V_NET      = 0000000D            

ATR$C_SEMASK   = 00000019            BDB$M_LKDINWS  = 00000080            DEV$V_ODV      = 0000001B            

ATR$C_STATBLK  = 00000009            BDB$M_NOLOCATE = 00000010            DEV$V_RCK      = 0000001E            

ATR$C_UCHAR    = 00000003            BDB$M_PRM      = 00000008            DEV$V_REC      = 00000000            

ATR$C_UIC      = 00000015            BDB$M_VAL      = 00000001            DEV$V_RND      = 0000001C            

ATR$C_UIC_RO   = 0000001A            BDB$M_WFO      = 00000020            DEV$V_RTM      = 0000001D            

ATR$C_USERLABEL= 0000000C            BDB$V_AST_DCL  = 00000006            DEV$V_SDI      = 00000004            

ATR$L_ADDR       00000004            BDB$V_DRT      = 00000001            DEV$V_SHR      = 00000010            

ATR$S_ACLEVEL  = 00000002            BDB$V_IOP      = 00000002            DEV$V_SPL      = 00000006            

ATR$S_ALCONTROL= 0000000E            BDB$V_LKDINWS  = 00000007            DEV$V_SQD      = 00000005            

ATR$S_ASCDATES = 00000023            BDB$V_NOLOCATE = 00000004            DEV$V_SWL      = 00000019            

ATR$S_ASCNAME  = 00000014            BDB$V_PRM      = 00000003            DEV$V_TRM      = 00000002            

ATR$S_BAKDATE  = 00000008            BDB$V_VAL      = 00000000            DEV$V_WCK      = 0000001F            

ATR$S_BLOCKSIZE= 00000002            BDB$V_WFO      = 00000005            DOQIO            00000149 R     02   

ATR$S_CREDATE  = 00000008            BDB$W_NUMB       00000010            EXIT             0000001B R     02   

ATR$S_DIRSEQ   = 00000002            BDB$W_SIZE       00000012            FIB$B_ALALIGN    00000021            

ATR$S_ENDLBLAST= 00000004            BIT...         = 00000000            FIB$B_ALOPTS     00000020            

RMS0LSTCH       RMS ABORT I/O FOR PROCESS DELETION               21-AUG-1978 22:03:38   VAX-11 MACRO X0.3-11               Page  14

SYMBOL TABLE                                                                                                                     (2)



FIB$B_DID_NMX    0000000F            FIB$M_PRSRV_ATR= 00020000            FIB$W_LOC_RVN    00000026            

FIB$B_DID_RVN    0000000E            FIB$M_READCK   = 00000200            FIB$W_LOC_SEQ    00000024            

FIB$B_FID_NMX    00000009            FIB$M_REWIND   = 00000008            FIB$W_NMCTL      00000014            

FIB$B_FID_RVN    00000008            FIB$M_SEQONLY  = 00000040            GBL...         = 00000000            

FIB$B_LOC_NMX    00000027            FIB$M_SPOOL    = 00000010            IFB$B_AMAX       00000059            

FIB$B_LOC_RVN    00000026            FIB$M_SUPERSEDE= 00000400            IFB$B_AVBN       00000058            

FIB$B_WSIZE      00000003            FIB$M_TRUNC    = 00000100            IFB$B_BID        00000008            

FIB$C_ACCDATA    0000000A            FIB$M_UPDATE   = 00000040            IFB$B_BKS        0000004A            

FIB$C_ALCDATA    0000002C            FIB$M_WILD     = 00000100            IFB$B_BLN        00000009            

FIB$C_CYL      = 00000001            FIB$M_WRITE    = 00000100            IFB$B_EFN        0000000B            

FIB$C_DIRDATA    00000016            FIB$M_WRITECK  = 00000020            IFB$B_EXTRABUF   0000005D            

FIB$C_EXTDATA    00000020            FIB$V_ALCON    = 00000000            IFB$B_FAC        00000022            

FIB$C_ILLEGAL  = 00000005            FIB$V_ALCONB   = 00000001            IFB$B_FSZ        0000004B            

FIB$C_LBN      = 00000002            FIB$V_ALDEF    = 00000003            IFB$B_KBUFSZ     0000005C            

FIB$C_LENGTH     0000002C            FIB$V_ALLNAM   = 00000005            IFB$B_MODE       0000000A            

FIB$C_MTALEN     0000001C            FIB$V_ALLTYP   = 00000004            IFB$B_NUM_KEYS   0000005A            

FIB$C_NEXTVOL  = 00000003            FIB$V_ALLVER   = 00000003            IFB$B_ORGCASE    00000023            

FIB$C_POSEND   = 00000002            FIB$V_CURPOS   = 00000004            IFB$B_RAT        0000003D            

FIB$C_REWINDFIL= 00000006            FIB$V_DLOCK    = 00000001            IFB$B_RFMORG     0000003C            

FIB$C_REWINDVOL= 00000001            FIB$V_EXACT    = 00000000            IFB$B_UBUFSZ     0000005B            

FIB$C_RFI      = 00000004            FIB$V_EXECUTE  = 00000010            IFB$C_BID      = 0000000B            

FIB$C_SPACE    = 00000004            FIB$V_EXTEND   = 00000007            IFB$C_BLN        00000060            

FIB$C_VBN      = 00000003            FIB$V_FILCON   = 00000002            IFB$C_BLN_IDX    00000060            

FIB$K_ACCDATA    0000000A            FIB$V_FINDFID  = 0000000B            IFB$C_BLN_REL    00000060            

FIB$K_ALCDATA    0000002C            FIB$V_HIGHVER  = 0000000F            IFB$C_BLN_SEQ    0000005C            

FIB$K_DIRDATA    00000016            FIB$V_LOWVER   = 0000000E            IFB$C_DIR      = 00000003            

FIB$K_EXTDATA    00000020            FIB$V_MARKBAD  = 0000000A            IFB$C_FHAEND     00000050            

FIB$K_LENGTH     0000002C            FIB$V_NEWVER   = 00000009            IFB$C_IDX      = 00000002            

FIB$K_MTALEN     0000001C            FIB$V_NOHDREXT = 00000009            IFB$C_MAXORG   = 00000002            

FIB$L_ACCTL      00000000            FIB$V_NOREAD   = 0000000A            IFB$C_REL      = 00000001            

FIB$L_CNTRLVAL   00000018            FIB$V_NOTRUNC  = 0000000B            IFB$C_SEQ      = 00000000            

FIB$L_EXSZ       00000018            FIB$V_NOWRITE  = 00000000            IFB$K_BLN        00000060            

FIB$L_EXVBN      0000001C            FIB$V_ONCYL    = 00000001            IFB$K_BLN_IDX    00000060            

FIB$L_LOC_ADDR   00000028            FIB$V_PRSRV_ATR= 00000011            IFB$K_BLN_REL    00000060            

FIB$L_WCC        00000010            FIB$V_READCK   = 00000009            IFB$K_BLN_SEQ    0000005C            

FIB$M_ALCON    = 00000001            FIB$V_REWIND   = 00000003            IFB$K_FHAEND     00000050            

FIB$M_ALCONB   = 00000002            FIB$V_SEQONLY  = 00000006            IFB$L_ARGLST     00000018            

FIB$M_ALDEF    = 00000008            FIB$V_SPOOL    = 00000004            IFB$L_ASBADDR    00000014            

FIB$M_ALLNAM   = 00000020            FIB$V_SUPERSEDE= 0000000A            IFB$L_AS_DEV     00000054            

FIB$M_ALLTYP   = 00000010            FIB$V_TRUNC    = 00000008            IFB$L_BDB_BLNK   00000034            

FIB$M_ALLVER   = 00000008            FIB$V_UPDATE   = 00000006            IFB$L_BDB_FLNK   00000030            

FIB$M_CURPOS   = 00000010            FIB$V_WILD     = 00000008            IFB$L_BKPBITS    00000004            

FIB$M_DLOCK    = 00000002            FIB$V_WRITE    = 00000008            IFB$L_BWB        0000000C            

FIB$M_EXACT    = 00000001            FIB$V_WRITECK  = 00000005            IFB$L_DVBN       00000058            

FIB$M_EXECUTE  = 00010000            FIB$W_ALLOC      00000022            IFB$L_EBK        00000044            

FIB$M_EXTEND   = 00000080            FIB$W_CNTRLFUNC  00000016            IFB$L_FRB_PTR    00000028            

FIB$M_FILCON   = 00000004            FIB$W_DID        0000000A            IFB$L_FWA_BDB    00000050            

FIB$M_FINDFID  = 00000800            FIB$W_DID_NUM    0000000A            IFB$L_HBK        00000040            

FIB$M_HIGHVER  = 00008000            FIB$W_DID_RVN    0000000E            IFB$L_IDX_PTR    00000054            

FIB$M_LOWVER   = 00004000            FIB$W_DID_SEQ    0000000C            IFB$L_IOS        0000000C            

FIB$M_MARKBAD  = 00000400            FIB$W_EXCTL      00000016            IFB$L_IOS4       00000010            

FIB$M_NEWVER   = 00000200            FIB$W_FID        00000004            IFB$L_IRAB_LNK   0000001C            

FIB$M_NOHDREXT = 00000200            FIB$W_FID_NUM    00000004            IFB$L_LAST_FAB   00000024            

FIB$M_NOREAD   = 00000400            FIB$W_FID_RVN    00000008            IFB$L_LOCK_BDB   00000050            

FIB$M_NOTRUNC  = 00000800            FIB$W_FID_SEQ    00000006            IFB$L_MRN        00000054            

FIB$M_NOWRITE  = 00000001            FIB$W_LOC_FID    00000022            IFB$L_NRP_LNK    00000050            

FIB$M_ONCYL    = 00000002            FIB$W_LOC_NUM    00000022            IFB$L_NWA_PTR    00000028            

RMS0LSTCH       RMS ABORT I/O FOR PROCESS DELETION               21-AUG-1978 22:03:38   VAX-11 MACRO X0.3-11               Page  15

SYMBOL TABLE                                                                                                                     (2)



IFB$L_PRIM_DEV   00000000            IFB$W_FFB        00000048            IO$M_NOW       = 00000040            

IFB$L_RLB_LNK    0000002C            IFB$W_IOS2       0000000E            IO$M_NOWAIT    = 00000080            

IFB$L_RNS_LEN    00000050            IFB$W_LRL        0000003E            IO$M_PACKED    = 00000080            

IFB$M_BIO      = 00000020            IFB$W_MRS        0000004C            IO$M_PURGE     = 00000800            

IFB$M_BRO      = 00000040            IFB$W_RTDEQ      0000003A            IO$M_READATTN  = 00000080            

IFB$M_DEL      = 00000004            IMP$B_PROT       00000002            IO$M_REVERSE   = 00000040            

IFB$M_EXE      = 00000080            IMP$C_ASYEFN   = 0000001E            IO$M_SHUTDOWN  = 00000080            

IFB$M_GET      = 00000002            IMP$C_ASYQIOEFN= 0000001F            IO$M_STARTUP   = 00000040            

IFB$M_PUT      = 00000001            IMP$C_ENTPERSEG= 0000000F            IO$M_SYNCH     = 00000200            

IFB$M_TRN      = 00000010            IMP$C_IOREFN   = 0000001E            IO$M_TIMED     = 00000080            

IFB$M_UPD      = 00000008            IMP$C_MBXEFN   = 0000001A            IO$M_TRMNOECHO = 00001000            

IFB$S_ORG      = 00000004            IMP$C_NPIOFILES= 0000000C            IO$M_WRTATTN   = 00000100            

IFB$S_RFM      = 00000004            IMP$C_SYNCEFN  = 0000001B            IO$S_FCODE     = 00000006            

IFB$V_ACCESSED = 00000025            IMP$L_FREEPGLH   0000000C            IO$V_ABORT     = 00000008            

IFB$V_ANSI_D   = 00000026            IMP$L_IFABTBL    00000018            IO$V_ACCESS    = 00000006            

IFB$V_ASYNC    = 00000023            IMP$L_IFBTBLINK  00000024            IO$V_ATTNAST   = 00000008            

IFB$V_ASYNCWAIT= 00000024            IMP$L_IOSEGADDR  00000004            IO$V_BINARY    = 00000006            

IFB$V_BIO      = 00000005            IMP$L_IOSEGLEN   00000008            IO$V_CANCTRLO  = 00000006            

IFB$V_BRO      = 00000006            IMP$L_IRABTBL    0000001C            IO$V_COMMOD    = 00000006            

IFB$V_BUSY     = 00000020            IMP$L_IRBTBLINK  00000064            IO$V_CREATE    = 00000007            

IFB$V_CREATE   = 00000032            IMP$L_SAVED_SP   00000014            IO$V_CTRLCAST  = 00000008            

IFB$V_DAP      = 0000003E            IMP$V_AST      = 00000001            IO$V_CTRLYAST  = 00000007            

IFB$V_DAP_OPEN = 0000003D            IMP$V_IIOS     = 00000000            IO$V_CVTLOW    = 00000008            

IFB$V_DEL      = 00000002            IMP$V_IORUNDOWN= 00000004            IO$V_DATACHECK = 0000000E            

IFB$V_DFW      = 0000002C            IMP$V_NOP0BUFS = 00000005            IO$V_DELETE    = 00000008            

IFB$V_DLT      = 0000002B            IMP$V_TEMP1    = 00000002            IO$V_DMOUNT    = 0000000A            

IFB$V_DMO      = 00000028            IMP$V_TEMP2    = 00000003            IO$V_DSABLMBX  = 0000000A            

IFB$V_EOF      = 00000021            IMP$W_ENTPERSEG  00000020            IO$V_ENABLMBX  = 00000007            

IFB$V_EXE      = 00000007            IMP$W_NUM_IFABS  00000022            IO$V_FCODE     = 00000000            

IFB$V_GET      = 00000001            IMP$W_RMSSTATUS  00000000            IO$V_HANGUP    = 00000009            

IFB$V_MSE      = 00000031            IO$M_ABORT     = 00000100            IO$V_INHERLOG  = 0000000B            

IFB$V_NORECLK  = 00000033            IO$M_ACCESS    = 00000040            IO$V_INHEXTGAP = 0000000C            

IFB$V_NSP      = 0000003F            IO$M_ATTNAST   = 00000100            IO$V_INHRETRY  = 0000000F            

IFB$V_NWA      = 0000003C            IO$M_BINARY    = 00000040            IO$V_INHSEEK   = 0000000C            

IFB$V_ORG      = 00000004            IO$M_CANCTRLO  = 00000040            IO$V_INTERRUPT = 00000006            

IFB$V_PPF_IMAGE= 00000022            IO$M_COMMOD    = 00000040            IO$V_INTSKIP   = 00000008            

IFB$V_PPF_INPUT= 0000002E            IO$M_CREATE    = 00000080            IO$V_MOUNT     = 00000009            

IFB$V_PUT      = 00000000            IO$M_CTRLCAST  = 00000100            IO$V_NOECHO    = 00000006            

IFB$V_RFM      = 00000000            IO$M_CTRLYAST  = 00000080            IO$V_NOFILTR   = 00000009            

IFB$V_RWC      = 00000027            IO$M_CVTLOW    = 00000100            IO$V_NOFORMAT  = 00000008            

IFB$V_RW_ATTR  = 00000034            IO$M_DATACHECK = 00004000            IO$V_NOW       = 00000006            

IFB$V_SCF      = 0000002A            IO$M_DELETE    = 00000100            IO$V_NOWAIT    = 00000007            

IFB$V_SPL      = 00000029            IO$M_DMOUNT    = 00000400            IO$V_PACKED    = 00000007            

IFB$V_SQO      = 0000002D            IO$M_DSABLMBX  = 00000400            IO$V_PURGE     = 0000000B            

IFB$V_TEF      = 00000036            IO$M_ENABLMBX  = 00000080            IO$V_READATTN  = 00000007            

IFB$V_TMP      = 00000035            IO$M_FCODE     = 0000003F            IO$V_REVERSE   = 00000006            

IFB$V_TRN      = 00000004            IO$M_HANGUP    = 00000200            IO$V_SHUTDOWN  = 00000007            

IFB$V_UPD      = 00000003            IO$M_INHERLOG  = 00000800            IO$V_STARTUP   = 00000006            

IFB$V_WRTACC   = 00000030            IO$M_INHEXTGAP = 00001000            IO$V_SYNCH     = 00000009            

IFB$W_ASDEVBSIZ  0000005A            IO$M_INHRETRY  = 00008000            IO$V_TIMED     = 00000007            

IFB$W_BKS_BYTES  0000005C            IO$M_INHSEEK   = 00001000            IO$V_TRMNOECHO = 0000000C            

IFB$W_BKS_RECS   0000005E            IO$M_INTERRUPT = 00000040            IO$V_WRTATTN   = 00000008            

IFB$W_CHNL       00000020            IO$M_INTSKIP   = 00000100            IO$_ACCESS     = 00000032            

IFB$W_DEQ        0000004E            IO$M_MOUNT     = 00000200            IO$_ACPCONTROL = 00000038            

IFB$W_DEVBUFSIZ  00000038            IO$M_NOECHO    = 00000040            IO$_CREATE     = 00000033            

IFB$W_EBK0       00000044            IO$M_NOFILTR   = 00000200            IO$_DEACCESS   = 00000034            

IFB$W_EBK2       00000046            IO$M_NOFORMAT  = 00000100            IO$_DELETE     = 00000035            

RMS0LSTCH       RMS ABORT I/O FOR PROCESS DELETION               21-AUG-1978 22:03:38   VAX-11 MACRO X0.3-11               Page  16

SYMBOL TABLE                                                                                                                     (2)



IO$_DIAGNOSE   = 0000001D            IRB$B_RFA_ID     00000058            IRB$V_PPF_SKIP = 0000002F            

IO$_DRVCLR     = 00000004            IRB$B_RP_ID      00000038            IRB$V_PUTS_LAST= 00000026            

IO$_ERASETAPE  = 00000006            IRB$B_RP_KREF    00000039            IRB$V_RAHWBH   = 0000002A            

IO$_LOGICAL    = 0000002F            IRB$B_RRV_ID     00000050            IRB$V_SKIP_NEXT= 0000002B            

IO$_MODIFY     = 00000036            IRB$B_SRCHFLAGS  00000043            IRB$V_SRCHGT   = 00000001            

IO$_MOUNT      = 00000039            IRB$B_STOPLEVEL  00000042            IRB$V_UNLOCK_RP= 0000002D            

IO$_NOP        = 00000000            IRB$C_BID      = 0000000A            IRB$V_WRITE    = 00000029            

IO$_OFFSET     = 00000006            IRB$C_BLN_IDX    0000006C            IRB$W_CSIZ       00000042            

IO$_PACKACK    = 00000008            IRB$C_BLN_REL    00000048            IRB$W_DUP_POS    00000032            

IO$_PHYSICAL   = 0000001F            IRB$C_BLN_SEQ    0000004C            IRB$W_IOS2       0000000E            

IO$_READHEAD   = 0000000E            IRB$K_BLN_IDX    0000006C            IRB$W_NRP_OFF    00000030            

IO$_READLBLK   = 00000021            IRB$K_BLN_REL    00000048            IRB$W_OWN_ID     0000003C            

IO$_READPBLK   = 0000000C            IRB$K_BLN_SEQ    0000004C            IRB$W_OWN_ISI    0000003E            

IO$_READPRESET = 00000019            IRB$L_ARGLST     00000018            IRB$W_ROVHDSZ    00000044            

IO$_READPROMPT = 00000037            IRB$L_ASBADDR    00000014            IRB$W_RP_OFF     00000038            

IO$_READTRACKD = 00000010            IRB$L_BKPBITS    00000004            IRB$W_RTOTLSZ    00000046            

IO$_READVBLK   = 00000031            IRB$L_BWB        0000000C            IRB$W_SAVE_POS   00000052            

IO$_RECAL      = 00000003            IRB$L_CURBDB     00000020            NXTENT           0000002D R     02   

IO$_RELEASE    = 00000005            IRB$L_CURVBN     00000030            NXTSEG           00000027 R     02   

IO$_RETCENTER  = 00000007            IRB$L_IFAB_LNK   00000000            NXTSOB           00000032 R     02   

IO$_REWIND     = 00000024            IRB$L_IOS        0000000C            PIO$GW_IIOIMPA   ********   X   02   

IO$_REWINDOFF  = 00000022            IRB$L_IOS4       00000010            PIO$GW_PIOIMPA   ********   X   02   

IO$_SEARCH     = 00000009            IRB$L_IRAB_LNK   0000001C            PSL$C_EXEC     = 00000001            

IO$_SEEK       = 00000002            IRB$L_KEYBUF     00000048            PSL$C_KERNEL   = 00000000            

IO$_SENSECHAR  = 0000001B            IRB$L_LAST_RAB   00000024            PSL$C_SUPER    = 00000002            

IO$_SENSEMODE  = 00000027            IRB$L_LOCK_BDB   0000005C            PSL$C_USER     = 00000003            

IO$_SETCHAR    = 0000001A            IRB$L_NRP        0000002C            PSL$M_CM       = 80000000            

IO$_SETMODE    = 00000023            IRB$L_NRP_OFF    00000030            PSL$M_CURMOD   = 03000000            

IO$_SKIPFILE   = 00000025            IRB$L_NRP_VBN    0000002C            PSL$M_DV       = 00000080            

IO$_SKIPRECORD = 00000026            IRB$L_NXTBDB     00000028            PSL$M_FPD      = 08000000            

IO$_SPACEFILE  = 00000002            IRB$L_OWNER_ID   0000003C            PSL$M_FU       = 00000040            

IO$_SPACERECORD= 00000009            IRB$L_RFA_VBN    00000054            PSL$M_IPL      = 001F0000            

IO$_STARTSPNDL = 00000019            IRB$L_RLB_ADDR   00000044            PSL$M_IS       = 04000000            

IO$_UNLOAD     = 00000001            IRB$L_RP         00000034            PSL$M_IV       = 00000020            

IO$_VIRTUAL    = 0000003F            IRB$L_RP_OFF     00000038            PSL$M_PRVMOD   = 00C00000            

IO$_WRITECHECK = 0000000A            IRB$L_RP_VBN     00000034            PSL$M_SAFBITS  = 000037FF            

IO$_WRITECHECKH= 00000018            IRB$L_RRV_VBN    0000004C            PSL$M_TBIT     = 00000010            

IO$_WRITEHEAD  = 0000000D            IRB$L_TEMP0      00000044            PSL$M_TP       = 40000000            

IO$_WRITELBLK  = 00000020            IRB$L_TEMP1      00000048            PSL$S_CURMOD   = 00000002            

IO$_WRITEMARK  = 0000001C            IRB$V_ASYNC    = 00000023            PSL$S_IPL      = 00000005            

IO$_WRITEOF    = 00000028            IRB$V_ASYNCWAIT= 00000024            PSL$S_PRVMOD   = 00000002            

IO$_WRITEPBLK  = 0000000B            IRB$V_BIO_LAST = 00000027            PSL$V_CM       = 0000001F            

IO$_WRITETRACKD= 0000000F            IRB$V_BRO_SW   = 00000028            PSL$V_CURMOD   = 00000018            

IO$_WRITEVBLK  = 00000030            IRB$V_BUSY     = 00000020            PSL$V_DV       = 00000007            

IRB$B_BCNT       00000040            IRB$V_DAP_CONN = 0000003E            PSL$V_FPD      = 0000001B            

IRB$B_BID        00000008            IRB$V_DAP_FMODE= 0000003F            PSL$V_FU       = 00000006            

IRB$B_BLN        00000009            IRB$V_DUP      = 0000002C            PSL$V_IPL      = 00000010            

IRB$B_EFN        0000000B            IRB$V_EOF      = 00000021            PSL$V_IS       = 0000001A            

IRB$B_KEYSZ      00000051            IRB$V_FIND     = 00000029            PSL$V_IV       = 00000005            

IRB$B_MBC        00000041            IRB$V_FIND_LAST= 00000025            PSL$V_PRVMOD   = 00000016            

IRB$B_MODE       0000000A            IRB$V_IDX_ERR  = 00000031            PSL$V_TBIT     = 00000004            

IRB$B_NRP_ID     00000030            IRB$V_LOCKABOVE= 00000002            PSL$V_TP       = 0000001E            

IRB$B_NRP_KREF   00000031            IRB$V_NEW_IDX  = 00000003            QIO$_ASTADR    = 00000014            

IRB$B_NVBNS      00000048            IRB$V_POSINSERT= 00000000            QIO$_ASTPRM    = 00000018            

IRB$B_POST_CCTL  00000045            IRB$V_PPF_EOF  = 0000002E            QIO$_CHAN      = 00000008            

IRB$B_PPF_ISI    0000003E            IRB$V_PPF_FNDSV= 00000030            QIO$_EFN       = 00000004            

IRB$B_PRE_CCTL   00000044            IRB$V_PPF_IMAGE= 00000022            QIO$_FUNC      = 0000000C            

RMS0LSTCH       RMS ABORT I/O FOR PROCESS DELETION               21-AUG-1978 22:03:38   VAX-11 MACRO X0.3-11               Page  17

SYMBOL TABLE                                                                                                                     (2)



QIO$_IOSB      = 00000010            

QIO$_NARGS     = 0000000C            

QIO$_P1        = 0000001C            

QIO$_P2        = 00000020            

QIO$_P3        = 00000024            

QIO$_P4        = 00000028            

QIO$_P5        = 0000002C            

QIO$_P6        = 00000030            

RDIFAB           00000043 R     02   

RM$LAST_CHANCE   00000000 RG    02   

RMS$_NORMAL      ********   X   02   

RUNDWN           00000023 R     02   

SYS$CLREF        ********   X   02   

SYS$QIO          ********   X   02   

SYS$WAITFR       ********   X   02   

WRITE            000000F8 R     02   





PROGRAM SECTION SYNOPSIS



.  ABS  .        00000000      00     NOPIC   USR   CON   ABS   LCL NOSHR NOEXE NORD  NOWRT BYTE  

. BLANK .        00000000      01     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  

F$RMSCLOSERNDN1  00000180      02     NOPIC   USR   CON   REL   GBL NOSHR   EXE   RD  NOWRT BYTE  

$ABS$            000000AC      03     NOPIC   USR   CON   ABS   LCL NOSHR   EXE   RD    WRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

7276. BYTES LEFT IN FREE MEMORY POOL.

2580. BYTES OF RECLAIMED MEMORY.

OBJ$:RMS0LSTCH,LIS$:RMS0LSTCH/-SP=EXECML$/ML,LIB$:R/ML,SRC$:RMS0LSTCH

54 MLB DIR RDS - 1045 GETS TO DEFINE 27 MACROS. 88 INTER. FILE WRITES. 

