!	$BEGIN	RMSINT,033 

! 

!	INTERNAL RMS STRUCTURE DEFINITIONS 

! 

!	MODIFIED BY: 

! 

!	R A NEWELL,      17-AUG-78  10:29	! WC VER FLG FOR CURRENT FILE 

!	L F LAVERDURE,   14-JUL-78  17:19 

!	W KOENIG,	23-MAR-78   AVBN AND AMAX FOR PLG & IFAB 

!				    IDX_PTR & NUM_KEYS FOR IFAB 

!	W KOENIG,	30-MAR-78   KBUFSIZE & UBUFSIZE FOR IFAB 

!	W KOENIG,	 5-APR-78   RRV_ID,RRV_VBN,KEYBUF,KEYSIZE FOR IRAB 

!	W KOENIG,	 6-APR-78   EXTRABUF FOR IFAB 

!	W KOENIG,	13-APR-78   CHANGED "SIZE" TO "SZ" 

!	E H MARISON,	13-APR-78   ADD POSITION CTX DATA FOR IDX FO IN IRAB 

!	E H MARISON,	19-APR-78   IRAB CHANGES FOR INDEXED 

!	E H MARISON,	26-APR-78   GENERAL CHANGES 

!	J A KRYCKA,	27-APR-78   ADD NETWORK SYMBOLS TO IFAB, IRAB, & FWA 

!				    DELETE TPT STRUCTURE DEFINITION 

!	J A KRYCKA,	23-MAY-78   EXPAND NODEBUF IN FWA, ADD NWA_PTR TO IRAB 

!	W KOENIG,	14-JUN-78   ADDED MAXSUBDIR AND MAXDIRLEN TO FWA DEFS 

!	J A KRYCKA,	21-JUN-78   DEFINE NETWORK WORK AREA (NWA) STRUCTURE 

!				    ADD QUOTED DESCRIPTOR TO FWA AND 

!				    MOVE QUOTED STRING STORAGE TO NWA 

!	J A KRYCKA,	21-JUL-78   REVISE NWA 

! 

!++ 

! 

!	IFAB FIELD DEFINITIONS 

! 

!  THERE IS ONE IFAB (INTERNAL FILE ACCESS BLOCK) PER OPEN FILE 

! 

!...$IFBDEF	

 

!+++++***** 

!  THE FIELDS THRU LAST_FAB INCLUSIVE ARE COMMON BETWEEN THE IFAB AND IRAB 

! 

			 

						! BOOKKEEPING BITS START IN LONGWORD 2 

			! (BUT HAVE DEFINITIONS THAT ALLOW THEM TO 

			!  BE REFERENCED FROM THE START OF THE IFAB) 

			!++ 

			!  THE FOLLOWING BITS ARE DEFINED IN 

			!  COMMON WITH THE IRAB 

			! 

MACRO		IFB$V_BUSY	= 0,32,1,0%; 		! STREAM BUSY 

MACRO		IFB$V_EOF	= 0,33,1,0%; 		! FILE POSITIONED AT EOF 

MACRO		IFB$V_PPF_IMAGE	= 0,34,1,0%; 	! FLAG FOR INDIRECT PROCESSING OF PROCESS- 

			! PERMANENT FILES (RESTRICTS ALLOWABLE OPERATIONS) 

MACRO		IFB$V_ASYNC	= 0,35,1,0%; 		! ASYNC I/O FLAG (MUST BE ZERO FOR IFAB) 

MACRO		IFB$V_ASYNCWAIT	= 0,36,1,0%; 	! WAIT ON ASYNC I/O (MUST BE ZERO FOR IFAB) 

			!-- 

			! 

			!  IFAB SPECIFIC BITS 

			! 

MACRO		IFB$V_ACCESSED	= 0,37,1,0%; 	! FILE IS ACCESSED 

MACRO		IFB$V_ANSI_D	= 0,38,1,0%; 	! ANSI D VARIABLE RECORDS 

MACRO		IFB$V_RWC	= 0,39,1,0%; 		! COPY OF FOP BIT FROM OPEN 

MACRO		IFB$V_DMO	= 0,40,1,0%; 		! COPY OF FOP BIT FROM OPEN 

MACRO		IFB$V_SPL	= 0,41,1,0%; 		! COPY OF FOP BIT FROM OPEN 

MACRO		IFB$V_SCF	= 0,42,1,0%; 		! COPY OF FOP BIT FROM OPEN 

MACRO		IFB$V_DLT	= 0,43,1,0%; 		! COPY OF FOP BIT FROM OPEN 

MACRO		IFB$V_DFW	= 0,44,1,0%; 		! DEFERRED WRITE (COPY OF FOP BIT FROM $OPEN) 

MACRO		IFB$V_SQO	= 0,45,1,0%; 		! SEQUENTIAL OPERATIONS ONLY 

MACRO		IFB$V_PPF_INPUT	= 0,46,1,0%; 	! THIS IS COMMAND 'INPUT' STREAM 

							! SPARE 

MACRO		IFB$V_WRTACC	= 0,48,1,0%; 	! LOGICAL OR OF FAC BITS: 

			!   PUT, UPD, DEL, TRN 

MACRO		IFB$V_MSE	= 0,49,1,0%; 		! MULTI-STREAMS ENABLED 

MACRO		IFB$V_CREATE	= 0,50,1,0%; 	! SET IF DOING CREATE (MAY BE "CREATE IF") 

MACRO		IFB$V_NORECLK	= 0,51,1,0%; 	! RECORD LOCKING NOT REQUIRED 

			! (I.E., NO SHARED ACCESS OR MULTI-STREAM) 

MACRO		IFB$V_RW_ATTR	= 0,52,1,0%; 	! SET IF FILE ATTRIBUTES MUST BE RE-WRITTEN 

MACRO		IFB$V_TMP	= 0,53,1,0%; 		! TEMPORARY FILE (I.E., NO DIRECTORY ENTRY) 

MACRO		IFB$V_TEF	= 0,54,1,0%; 		! TRUNCATE AT EOF DUE TO LARGE AUTO EXTEND 

						! SPARE 

MACRO		IFB$V_NWA	= 0,60,1,0%; 		! NETWORK WORK AREA CONTROL BLOCK PRESENT 

MACRO		IFB$V_DAP_OPEN	= 0,61,1,0%; 	! OPEN/CREATE FUNCTION WAS PERFORMED VIA DAP 

MACRO		IFB$V_DAP	= 0,62,1,0%; 		! DATA ACCESS PROTOCOL TRANSMISSION 

MACRO		IFB$V_NSP	= 0,63,1,0%; 		! NETWORK SERVICES PROTOCOL TRANSMISSION 

			

MACRO		IFB$L_PRIM_DEV	= 0,0,32,0%; 	! DEVICE CHARACTERISTICS BITS 

			! (FOR PRIMARY DEVICE - BIT ENCODING SAME AS FOR FAB) 

MACRO		IFB$L_BKPBITS	= 4,0,32,0%; 	! BOOKKEEPING BITS 

! 

MACRO		IFB$B_BID	= 8,0,8,0%; 		! BLOCK ID 

LITERAL	IFB$C_BID	= 11; 		! IFAB ID CODE 

MACRO		IFB$B_BLN	= 9,0,8,0%; 		! BLOCK LENGTH IN LONGWORDS 

MACRO		IFB$B_MODE	= 10,0,8,0%; 	! CALLER'S MODE 

MACRO		IFB$B_EFN	= 11,0,8,0%; 		! EVENT FLAG USED FOR SYNCHRONOUS QIO 

MACRO		IFB$L_IOS	= 12,0,32,0%; 		! INTERNAL I/O STATUS BLOCK 

MACRO		IFB$L_BWB	= 12,0,32,0%; 	! BUCKET WAIT BLOCK FOR INTER STREAM WAITING 

MACRO		IFB$W_IOS2	= 14,0,16,0%; 	! HIGH WORD OF IO STATUS BLOCK 

MACRO		IFB$L_IOS4	= 16,0,32,0%; 	! 2ND LONGWORD OF IO STATUS BLOCK 

MACRO		IFB$L_ASBADDR	= 20,0,32,0%; 	! ADDRESS OF ASYNCHRONOUS CONTEXT BLOCK 

MACRO		IFB$L_ARGLST	= 24,0,32,0%; 	! USER CALL PARAMETERS ADDR 

MACRO		IFB$L_IRAB_LNK	= 28,0,32,0%; 	! POINTER TO IRAB(S) 

MACRO		IFB$W_CHNL	= 32,0,16,0%; 	! I/O CHANNEL NUMBER 

MACRO		IFB$B_FAC	= 34,0,8,0%; 		! FILE ACCESS 

			 

MACRO		IFB$V_PUT	= 34,0,1,0%; 		! (SAME AS IN FAB'S FAC FIELD) 

LITERAL	IFB$M_PUT	= 1^1 - 1^0; 

MACRO		IFB$V_GET	= 34,1,1,0%;  

LITERAL	IFB$M_GET	= 1^2 - 1^1; 

MACRO		IFB$V_DEL	= 34,2,1,0%;  

LITERAL	IFB$M_DEL	= 1^3 - 1^2; 

MACRO		IFB$V_UPD	= 34,3,1,0%;  

LITERAL	IFB$M_UPD	= 1^4 - 1^3; 

MACRO		IFB$V_TRN	= 34,4,1,0%;  

LITERAL	IFB$M_TRN	= 1^5 - 1^4; 

MACRO		IFB$V_BIO	= 34,5,1,0%;  

LITERAL	IFB$M_BIO	= 1^6 - 1^5; 

MACRO		IFB$V_BRO	= 34,6,1,0%;  

LITERAL	IFB$M_BRO	= 1^7 - 1^6; 

MACRO		IFB$V_EXE	= 34,7,1,0%;  

LITERAL	IFB$M_EXE	= 1^8 - 1^7; 

			

			! NOTE: IF BOTH BIO AND BRO SET, IMPLIES BLOCK I/O 

			!	ACCESS ONLY ALLOWED FOR THIS CONNECT, RESETS 

			!	TO BRO ON DISCONNECT (SEQ. FILE ORG. ONLY). 

			! 

MACRO		IFB$B_ORGCASE	= 35,0,8,0%; 	! COPY OF ORG FOR CASE DISPATCHING 

MACRO		IFB$L_LAST_FAB	= 36,0,32,0%; 	! ADDRESS OF FAB FOR LAST OPERATION 

!-----***** 

MACRO		IFB$L_NWA_PTR	= 40,0,32,0%; 	! POINTER TO NWA CONTROL BLOCK IF NWA BIT SET, OTHERWISE 

MACRO		IFB$L_FRB_PTR	= 40,0,32,0%; 	! POINTER TO THE "SHARED" FILE RESOURCE BLOCK 

MACRO		IFB$L_RLB_LNK	= 44,0,32,0%; 	! POINTER TO RECORD LOCK LIST (RLB'S) 

MACRO		IFB$L_BDB_FLNK	= 48,0,32,0%; 	! POINTER TO BDB(S) 

MACRO		IFB$L_BDB_BLNK	= 52,0,32,0%; 	! BDB BACKWARD LINK 

MACRO		IFB$W_DEVBUFSIZ	= 56,0,16,0%; 	! DEVICE DEFAULT (OR BLS IF MT) BUFF SIZE 

MACRO		IFB$W_RTDEQ	= 58,0,16,0%; 	! RUN-TIME DEFAULT EXTEND QUANTITY 

! 

!+++++***** 

! 

!  THE FOLLOWING FIELDS MUST REMAIN AS IS SINCE 

!  THEY CORRESPOND TO THE RMS ATTRIBUTES STORED 

!  IN THE FILE HEADER 

! 

MACRO		IFB$B_RFMORG	= 60,0,8,0%; 	! ORGANIZATION AND RECORD FORMAT 

			 

MACRO		IFB$V_RFM	= 60,0,4,0%; 		! RECORD FORMAT 

			! (N.B. CONSTANT VALUES DEFINED 

			!  IN RFM FIELD OF FAB) 

MACRO		IFB$V_ORG	= 60,4,4,0%; 		! FILE ORGANIZATION 

			

LITERAL	IFB$C_SEQ	= 0; 		! SEQUENTIAL 

LITERAL	IFB$C_REL	= 1; 		! RELATIVE 

LITERAL	IFB$C_IDX	= 2; 		! INDEXED 

LITERAL	IFB$C_DIR	= 3; 		! DIRECT 

LITERAL	IFB$C_MAXORG	= 2; 		! RELEASE 1 MAXIMUM 

MACRO		IFB$B_RAT	= 61,0,8,0%; 		! RECORD ATTRIBUTES 

			! (N.B. BIT OFFSETS DEFINED IN 

			!  RAT FIELD OF FAB) 

MACRO		IFB$W_LRL	= 62,0,16,0%; 		! LONGEST RECORD'S LENGTH 

			! (OR FIXED RECORD LENGTH) 

MACRO		IFB$L_HBK	= 64,0,32,0%; 		! HI VBN ALLOCATED 

			! (NOTE: REVERSED ON DISK!) 

MACRO		IFB$L_EBK	= 68,0,32,0%; 		! EOF VBN 

			! (NOTE: REVERSED ON DISK!) 

MACRO		IFB$W_EBK0	= 68,0,16,0%;  

MACRO		IFB$W_EBK2	= 70,0,16,0%;  

MACRO		IFB$W_FFB	= 72,0,16,0%; 		! FIRST FREE BYTE IN EOF BLOCK 

MACRO		IFB$B_BKS	= 74,0,8,0%; 		! BUCKET SIZE (# VBNS) 

MACRO		IFB$B_FSZ	= 75,0,8,0%; 		! RECORD HEADER SIZE FOR VFC 

MACRO		IFB$W_MRS	= 76,0,16,0%; 		! MAX RECORD SIZE ALLOWABLE 

MACRO		IFB$W_DEQ	= 78,0,16,0%; 		! DEFAULT EXTEND QUANTITY 

LITERAL	IFB$C_FHAEND	= 80; 

LITERAL	IFB$K_FHAEND	= 80; 		! END OF FILE HEADER ATTRIBUTES 

!-----***** 

!++ 

! 

!  TEMPORARY FIELD(S) 

! 

MACRO		IFB$L_NRP_LNK	= 80,0,32,0%; 	! PTR TO NRP LIST FOR IDX FILES, TEMP FOR OTHER ORGS 

MACRO		IFB$L_FWA_BDB	= 80,0,32,0%; 	! FWA PAGE BDB 

MACRO		IFB$L_RNS_LEN	= 80,0,32,0%; 	! RESULTANT NAME STRING LENGTH 

			! (USED BY $SEARCH) 

MACRO		IFB$L_LOCK_BDB	= 80,0,32,0%; 	! LOCK BDB ADDRESS (USED BY $EXTEND FOR REL. FILE) 

!-- 

! 

!  ORGANIZATION-DEPENDENT FIELDS 

! 

!  THE FOLLOWING FIELDS ARE USED DIFFERENTLY 

!  DEPENDING UPON THE FILE'S ORGANIZATION 

! 

			 

!++ 

! 

!  SEQUENTIAL ORG SPECIFIC FIELDS 

! 

MACRO		IFB$L_AS_DEV	= 84,0,32,0%; 	! ASSIGNED DEVICE CHARACTERISTICS 

MACRO		IFB$W_ASDEVBSIZ	= 90,0,16,0%; 	! ASSIGNED DEVICE BUFFER SIZE 

LITERAL	IFB$C_BLN_SEQ	= 92; 

LITERAL	IFB$K_BLN_SEQ	= 92; 	 

!-- 

!++ 

! 

!  RELATIVE ORG SPECIFIC FIELDS 

! 

			 

MACRO		IFB$L_MRN	= 84,0,32,0%; 		! (REL) MAX RECORD NUMBER 

MACRO		IFB$L_DVBN	= 88,0,32,0%; 	! (REL) FIRST DATA BUCKET VBN 

MACRO		IFB$W_BKS_BYTES	= 92,0,16,0%; 	! (REL) # OF BYTES IN A BUCKET 

MACRO		IFB$W_BKS_RECS	= 94,0,16,0%; 	! (REL) # OF RECORDS IN A BUCKET 

LITERAL	IFB$C_BLN_REL	= 96; 

LITERAL	IFB$K_BLN_REL	= 96; 	 

!-- 

 

!++ 

! 

!  INDEXED ORG SPECIFIC FIELDS 

! 

			 

MACRO		IFB$L_IDX_PTR	= 84,0,32,0%; 	! (IDX) POINTER TO PRIMARY KEY INDEX DESCRIPTOR 

MACRO		IFB$B_AVBN	= 88,0,8,0%; 	! (IDX) VBN OF 1ST AREA DESCRIPTOR 

MACRO		IFB$B_AMAX	= 89,0,8,0%; 	! (IDX) TOTAL NUMBER OF AREA DESCRIPTORS 

MACRO		IFB$B_NUM_KEYS	= 90,0,8,0%; 	! (IDX) # OF KEYS IN FILE 

MACRO		IFB$B_UBUFSZ	= 91,0,8,0%; 	! (IDX) UPDATE BUFFER SIZE FOR KEYS 

MACRO		IFB$B_KBUFSZ	= 92,0,8,0%; 	! (IDX) KEY BUFFER SIZE 

MACRO		IFB$B_EXTRABUF	= 93,0,8,0%; 	! (IDX) NUMBER OF EXTRA BUFFERS FOR 'CACHE'ING 

			! TEMPORARILY SPARE 2 BYTES -- TO KEEP THE OVERALL 

			! LENGTH OF THE IFAB LONG ENOUGH FOR RELATIVE 

LITERAL	IFB$C_BLN_IDX	= 96; 

LITERAL	IFB$K_BLN_IDX	= 96; 	 

!-- 

LITERAL	IFB$C_BLN	= 96; 

LITERAL	IFB$K_BLN	= 96; 			! IFAB LENGTH 



 

! 

!	 IRAB FIELD DEFINITIONS 

! 

!  THERE IS 1 IRAB PER CONNECTED RECORD ACCESS STREAM 

! 

!...$IRBDEF		! INTERNAL RAB 

 

!+++++***** 

! 

!  THE FIELDS THRU LAST_RAB INCLUSIVE ARE COMMON BETWEEN THE IRAB AND IFAB 

! 

			! TO APPLY FROM START OF IRAB 

			 

						! BOOKKEEPING BITS START IN LONGWORD 2 

			!++ 

			! 

			!  THE FOLLOWING BITS ARE DEFINED IN COMMON 

			!  WITH THE IFAB 

			! 

MACRO		IRB$V_BUSY	= 0,32,1,0%; 		! FILE BUSY 

MACRO		IRB$V_EOF	= 0,33,1,0%; 		! STREAM POSITIONED AT EOF 

MACRO		IRB$V_PPF_IMAGE	= 0,34,1,0%; 	! FLAG FOR INDIRECT PROCESSING OF PROCESS- 

			! PERMANENT FILE 

MACRO		IRB$V_ASYNC	= 0,35,1,0%; 		! ASYNCHRONOUS I/O REQUEST 

MACRO		IRB$V_ASYNCWAIT	= 0,36,1,0%; 	! $WAIT ISSUED FOR ASYNCHRONOUS I/O REQUEST 

			!-- 

			! 

			!   IRAB SPECIFIC BITS 

			! 

MACRO		IRB$V_FIND_LAST	= 0,37,1,0%; 	! LAST OPERATION WAS A FIND 

MACRO		IRB$V_PUTS_LAST	= 0,38,1,0%; 	! LAST OPERATION WAS A PUT SEQUENTIAL 

MACRO		IRB$V_BIO_LAST	= 0,39,1,0%; 	! THIS/LAST OPERATION IS/WAS A BLOCK I/O OPERATION 

			! NOTE: THIS BIT IS SET ONLY IF MIXED BLOCK AND RECORD 

			!       OPERATIONS (BRO ACCESS).  AFTER CALL TO RM$RSET 

			!	REFERS TO THE CURRENT OPERATION AND BRO_SW GIVES 

			!	TYPE OF LAST OPERATION. 

MACRO		IRB$V_BRO_SW	= 0,40,1,0%; 	! SWITCHED FROM RECORD OPERATION TO BLOCK I/O OPERATION 

MACRO		IRB$V_FIND	= 0,41,1,0%; 		! OPERATION IS A FIND 

MACRO		IRB$V_RAHWBH	= 0,42,1,0%; 	! READ AHEAD OR WRITE BEHIND PROCESSING 

MACRO		IRB$V_SKIP_NEXT	= 0,43,1,0%; 	! SKIP TO NEXT RECORD FLAG FOR INDEX FO 

MACRO		IRB$V_DUP	= 0,44,1,0%; 		! DUPLICATE RECORDS SEEN 

MACRO		IRB$V_UNLOCK_RP	= 0,45,1,0%; 	! RELEASE LOCK ON CURRENT (RP) RECORD 

MACRO		IRB$V_PPF_EOF	= 0,46,1,0%; 	! GIVE ONE-SHOT RMS$_EOF ERROR ON SYS$INPUT 

MACRO		IRB$V_PPF_SKIP	= 0,47,1,0%; 	! SKIP SYS$INPUT RECORD ($DECK), REDOING $GET 

			! OR $FIND ON NEXT RECORD 

MACRO		IRB$V_PPF_FNDSV	= 0,48,1,0%; 	! SAVE VALUE FOR FIND BIT WHEN PPF_SKIP SET 

MACRO		IRB$V_IDX_ERR	= 0,49,1,0%; 	! INDEX UPDATE ERROR OCCURRED 

						! SPARE 

MACRO		IRB$V_DAP_CONN	= 0,62,1,0%; 	! CONNECT FUNCTION WAS PERFORMED VIA DAP 

MACRO		IRB$V_DAP_FMODE	= 0,63,1,0%; 	! DAP FILE TRANSFER MODE IN EFFECT 

			

! 

!  THE FOLLOWING ARE ALTERNATE DEFINITIONS FOR ALTERNATE 

!  (NON-CONFLICTING) USE OF THE ABOVE BITS 

! 

			 

						! START RE-USE WITH FIND 

MACRO		IRB$V_WRITE	= 0,41,1,0%; 		! OPERATION IS A WRITE 

			

MACRO		IRB$L_IFAB_LNK	= 0,0,32,0%; 	! POINTER TO IFAB 

MACRO		IRB$L_BKPBITS	= 4,0,32,0%; 	! BOOKKEEPING STATUS BITS 

! 

MACRO		IRB$B_BID	= 8,0,8,0%; 		! BLOCK ID 

LITERAL	IRB$C_BID	= 10; 		! IRAB CODE 

MACRO		IRB$B_BLN	= 9,0,8,0%; 		! BLOCK LENGTH IN LONGWORDS 

MACRO		IRB$B_MODE	= 10,0,8,0%; 	! CALLER'S MODE 

MACRO		IRB$B_EFN	= 11,0,8,0%; 		! EVENT FLAG FOR SYNCHRONOUS IO 

MACRO		IRB$L_IOS	= 12,0,32,0%; 		! INTERNAL I/O STATUS BLOCK 

MACRO		IRB$L_BWB	= 12,0,32,0%; 	! BUCKET WAIT BLOCK FOR INTER STREAM LOCKING 

MACRO		IRB$W_IOS2	= 14,0,16,0%; 	! HIGH WORD OF IO STATUS BLOCK 

MACRO		IRB$L_IOS4	= 16,0,32,0%; 	! IO STATUS BLOCK (2ND LONGWORD) 

MACRO		IRB$L_ASBADDR	= 20,0,32,0%; 	! ADDRESS OF PERMANENT ASYNCHRONOUS CONTEXT BLOCK 

MACRO		IRB$L_ARGLST	= 24,0,32,0%; 	! USER ARG LIST ADDRESS 

			! IF ASYNC, POINTS TO COPY AT HEAD 

			! OF ASYNC CONTEXT BLOCK 

MACRO		IRB$L_IRAB_LNK	= 28,0,32,0%; 	! POINTER TO NEXT IRAB 

MACRO		IRB$L_CURBDB	= 32,0,32,0%; 	! CURRENT BDB ADDRESS 

MACRO		IRB$L_LAST_RAB	= 36,0,32,0%; 	! ADDRESS OF RAB FOR LAST OPERATION 

!-----***** 

MACRO		IRB$L_NXTBDB	= 40,0,32,0%; 	! NEXT BDB ADDRESS 

MACRO		IRB$L_NRP_VBN	= 44,0,32,0%; 	! NEXT RECORD POINTER VBN 

MACRO		IRB$L_NRP	= 44,0,32,0%; 	! NEXT RECORD POINTER (RELATIVE RECORD #) 

MACRO		IRB$L_NRP_OFF	= 48,0,32,0%; 	! NEXT RECORD POINTER OFFSET 

MACRO		IRB$W_NRP_OFF	= 48,0,16,0%; 	!     " 

MACRO		IRB$L_CURVBN	= 48,0,32,0%; 	! VBN OF CURRENT RECORD (RELATIVE) 

MACRO		IRB$B_NRP_ID	= 48,0,8,0%; 	! RECORD ID (INDEXED) 

MACRO		IRB$B_NRP_KREF	= 49,0,8,0%; 	! KEY OF REFERENCE (INDEXED) 

MACRO		IRB$W_DUP_POS	= 50,0,16,0%; 	! DUPLICATE POSITION COUNT (INDEXED) 

MACRO		IRB$L_RP_VBN	= 52,0,32,0%; 	! RECORD POINTER VBN 

MACRO		IRB$L_RP	= 52,0,32,0%; 	! RECORD POINTER (RELATIVE RECORD #) 

MACRO		IRB$L_RP_OFF	= 56,0,32,0%; 	! RECORD POINTER OFFSET 

MACRO		IRB$W_RP_OFF	= 56,0,16,0%; 	!    " 

MACRO		IRB$B_RP_ID	= 56,0,8,0%; 	! RECORD ID (INDEXED) 

MACRO		IRB$B_RP_KREF	= 57,0,8,0%; 	! KEY OF REFERENCE (INDEXED) 

MACRO		IRB$L_OWNER_ID	= 60,0,32,0%; 	! OWNER ID USED FOR RECORD LOCKS 

MACRO		IRB$W_OWN_ID	= 60,0,16,0%; 	! INDEX PART OF PROCESS ID (PID) 

MACRO		IRB$W_OWN_ISI	= 62,0,16,0%; 	! ISI VALUE FOR THIS IRAB 

MACRO		IRB$B_PPF_ISI	= 62,0,8,0%; 	! ISI VALUE FOR THIS PROCESS-PERMANENT IRAB 

MACRO		IRB$B_BCNT	= 64,0,8,0%; 	! I/O BUFFER COUNT 

MACRO		IRB$B_MBC	= 65,0,8,0%; 		! MULTI-BLOCK COUNT 

!++ 

! 

!  START OF ORGANIZATION DEPENDENT FIELDS 

! 

			 

!++ 

! 

!  SEQUENTIAL ORG SPECIFIC FIELDS 

! 

MACRO		IRB$W_CSIZ	= 66,0,16,0%; 	! CURRENT RECORD SIZE (SEQ) 

MACRO		IRB$L_TEMP0	= 68,0,32,0%;  

MACRO		IRB$W_ROVHDSZ	= 68,0,16,0%; 	! OVERHEAD SIZE FOR RECORD 

MACRO		IRB$B_PRE_CCTL	= 68,0,8,0%; 	! 'PRE' CARRIAGE CONTROL 

MACRO		IRB$B_POST_CCTL	= 69,0,8,0%;  ! 'POST' CARRIAGE CONTROL 

MACRO		IRB$W_RTOTLSZ	= 70,0,16,0%; 	! TOTAL SIZE FOR RECORD 

MACRO		IRB$L_TEMP1	= 72,0,32,0%;  

MACRO		IRB$B_NVBNS	= 72,0,8,0%; 	! NUMBER OF VBNS TRANSFERRED (NXTBLK1) 

LITERAL	IRB$C_BLN_SEQ	= 76; 

LITERAL	IRB$K_BLN_SEQ	= 76; 	 

!++ 

! 

!  RELATIVE ORG SPECIFIC FIELDS 

! 

			 

 

MACRO		IRB$L_RLB_ADDR	= 68,0,32,0%; 	! RECORD LOCK BLOCK ADDRESS(ALSO USED IN INDEXED ORG) 

LITERAL	IRB$C_BLN_REL	= 72; 

LITERAL	IRB$K_BLN_REL	= 72; 	 

! 

! INDEXED ORG SPECIFIC FIELDS 

! 

			 

MACRO		IRB$B_STOPLEVEL	= 66,0,8,0%; 	! LEVEL TO STOP AT ON TREE SEARCH 

MACRO		IRB$B_SRCHFLAGS	= 67,0,8,0%; 	! SEARCH FLAGS 

			 

MACRO		IRB$V_POSINSERT	= 67,0,1,0%; 	! POSITION FOR INSERT 

MACRO		IRB$V_SRCHGT	= 67,1,1,0%; 		! APPROXIMATE SEARCH GT 

MACRO		IRB$V_LOCKABOVE	= 67,2,1,0%; 	! LOCK LEVEL ABOVE 

MACRO		IRB$V_NEW_IDX	= 67,3,1,0%; 	! NEED TO READ IN NEW IDX DSC FROM FILE 

			

MACRO		IRB$L_KEYBUF	= 72,0,32,0%; 	! ADDRESS OF INTERNAL KEY BUFFER & UPDATE BUFFER 

MACRO		IRB$L_RRV_VBN	= 76,0,32,0%; 	! BUCKET START VBN FOR RRV 

MACRO		IRB$B_RRV_ID	= 80,0,8,0%; 	! RECORD ID FOR RRV 

MACRO		IRB$B_KEYSZ	= 81,0,8,0%; 	! SIZE OF KEY IN KEYBUFFER #2 

MACRO		IRB$W_SAVE_POS	= 82,0,16,0%; 	! SAVED DUPLICATE POSITION FOR SEARCH NRP DATA 

MACRO		IRB$L_RFA_VBN	= 84,0,32,0%; 	! RFA VBN FOR SEARCH NRP DATA 

MACRO		IRB$B_RFA_ID	= 88,0,8,0%; 	! SAVE ID FOR SEARCH NRP DATA 

MACRO		IRB$L_LOCK_BDB	= 92,0,32,0%; 	! LOCK BDB ADDR OF LEVEL BELOW ON SPLITS 

LITERAL	IRB$C_BLN_IDX	= 108; 

LITERAL	IRB$K_BLN_IDX	= 108; 	 



 

! 

!  ASYNCHRONOUS OPERATIONS REQUIRE THAT AN IRAB HAVE 

!  AN ASYNCHRONOUS CONTEXT BLOCK (ASB) 

!  THE ASB IS POINTED TO BY THE ARGLST FIELD OF THE 

!  IRAB IF THE ASYNC BOOKKEEPING BIT IS SET 

! 

!  THE FIRST FOUR LONGWORDS ARE USED TO SAVE THE 

!  CALLER'S ARGUMENT LIST 

! 

!...$ASBDEF	

 

MACRO		ASB$B_ARGCNT	= 0,0,8,0%; 	! ARGUMENT COUNT 

			! VALUE WILL BE 0, 1, 2, OR 3 

MACRO		ASB$B_BLN	= 1,0,8,0%; 		! BLOCK LENGTH IN LONGWORDS 

MACRO		ASB$B_STKSIZ	= 2,0,8,0%; 	! SIZE OF SAVED STACK IN BYTES 

MACRO		ASB$L_FABRAB	= 4,0,32,0%; 	! FAB OR RAB ADDRESS 

MACRO		ASB$L_ERR	= 8,0,32,0%; 		! ERR ROUTINE ADDR 

MACRO		ASB$L_SUC	= 12,0,32,0%; 		! SUC ROUTINE ADDR 

MACRO		ASB$L_REGS	= 16,0,0,0%; 	! WORK SPACE FOR REGISTER AND STACK SAVE 

LITERAL	ASB$S_REGS	= 96; 

			! (REGS 6,7,8,10,11 - R4,R5 SAVED ON STACK) 

LITERAL	ASB$C_BLN_FAB	= 112; 

LITERAL	ASB$K_BLN_FAB	= 112; 		! BLOCK LENGTH FOR FAB-RELATED OPERATIONS 

LITERAL	ASB$C_BLN_SEQ	= 128; 

LITERAL	ASB$K_BLN_SEQ	= 128; 		! BLOCK LENGTH FOR SEQ ORG IRAB OPERATIONS 

LITERAL	ASB$C_BLN_REL	= 132; 

LITERAL	ASB$K_BLN_REL	= 132; 		! BLOCK LENGTH FOR REL ORG IRAB OPERATIONS 

LITERAL	ASB$C_BLN_IDX	= 172; 

LITERAL	ASB$K_BLN_IDX	= 172; 	 



 

! 

!	 FILE WORK AREA DEFINITIONS 

! 

!  THE FILE WORK AREA IS USED FOR EXPANDING THE FILE 

!  NAME STRING AND SETTING UP THE VARIOUS PARAMETER 

!  BLOCKS FOR INTERFACING WITH F11ACP 

! 

!...$FWADEF	

 

MACRO		FWA$Q_FLAGS	= 0,0,0,0%; 	! VARIOUS PARSE STATUS FLAGS 

LITERAL	FWA$S_FLAGS	= 8; 

			 

MACRO		FWA$V_DUPOK	= 0,0,1,0%; 	! DISCARD DUPLICATE ELEMENT 

LITERAL	FWA$M_DUPOK	= 1^1 - 1^0; 

MACRO		FWA$V_NAMEFLG	= 0,1,1,0%; 	! NAME SEEN THIS PARSE 

LITERAL	FWA$M_NAMEFLG	= 1^2 - 1^1; 

MACRO		FWA$V_TYPEFLG	= 0,2,1,0%; 	! TYPE SEEN THIS PARSE 

LITERAL	FWA$M_TYPEFLG	= 1^3 - 1^2; 

MACRO		FWA$V_RLF_PASS	= 0,3,1,0%; 	! SET IF APPLYING RELATED FILE DEFAULTS 

LITERAL	FWA$M_RLF_PASS	= 1^4 - 1^3; 

MACRO		FWA$V_FNA_PASS	= 0,4,1,0%; 	! SET IF PRIMARY NAME STRING PARSE PASS 

LITERAL	FWA$M_FNA_PASS	= 1^5 - 1^4; 

MACRO		FWA$V_NAM_DVI	= 0,5,1,0%; 	! SET IF OPEN BY NAME BLOCK 

LITERAL	FWA$M_NAM_DVI	= 1^6 - 1^5; 

MACRO		FWA$V_CUR_VER	= 0,6,1,0%; 		! SET IF CUR FILE HAS WC VER 

						! SPARE 

				! (END OF PASSFLGS BYTE) 

			 

						! START DEFS AT BYTE 1 

						! MUST BE ZERO 

MACRO		FWA$V_VERSION	= 0,11,1,0%; 	! SET IF VERSION SEEN 

LITERAL	FWA$M_VERSION	= 1^12 - 1^11; 

MACRO		FWA$V_TYPE	= 0,12,1,0%; 	! SET IF TYPE SEEN 

LITERAL	FWA$M_TYPE	= 1^13 - 1^12; 

MACRO		FWA$V_NAME	= 0,13,1,0%; 	! SET IF NAME SEEN 

LITERAL	FWA$M_NAME	= 1^14 - 1^13; 

MACRO		FWA$V_DIR	= 0,14,1,0%; 		! SET IF DIRECTORY SPEC SEEN 

LITERAL	FWA$M_DIR	= 1^15 - 1^14; 

MACRO		FWA$V_DEVICE	= 0,15,1,0%; 	! SET IF DEVICE SEEN 

LITERAL	FWA$M_DEVICE	= 1^16 - 1^15; 

			! (END OF FLDFLGS BYTE) 

MACRO		FWA$V_EXP_VER	= 0,16,1,0%; 	! SET IF EXPLICIT VERSION 

LITERAL	FWA$M_EXP_VER	= 1^17 - 1^16; 

MACRO		FWA$V_EXP_TYPE	= 0,17,1,0%; 	! SET IF EXPLICIT TYPE 

LITERAL	FWA$M_EXP_TYPE	= 1^18 - 1^17; 

MACRO		FWA$V_EXP_NAME	= 0,18,1,0%; 	! SET IF EXPLICIT NAME 

LITERAL	FWA$M_EXP_NAME	= 1^19 - 1^18; 

MACRO		FWA$V_WC_VER	= 0,19,1,0%; 		! SET IF WILDCARD (*) VERSION 

MACRO		FWA$V_WC_TYPE	= 0,20,1,0%; 		!          "		TYPE 

MACRO		FWA$V_WC_NAME	= 0,21,1,0%; 		!	   "		NAME 

MACRO		FWA$V_EXP_DIR	= 0,22,1,0%; 	! SET IF EXPLICIT DIRECTORY 

LITERAL	FWA$M_EXP_DIR	= 1^23 - 1^22; 

MACRO		FWA$V_EXP_DEV	= 0,23,1,0%; 	! SET IF EXPLICIT DEVICE 

LITERAL	FWA$M_EXP_DEV	= 1^24 - 1^23; 

			! (END OF WILDFLGS BYTE) 

MACRO		FWA$V_WILDCARD	= 0,24,1,0%; 	! SET IF ANY WILDCARD SEEN 

MACRO		FWA$V_NODE	= 0,25,1,0%; 		! SET IF NODE NAME SEEN 

MACRO		FWA$V_QUOTED	= 0,26,1,0%; 		! SET IS QUOTED STRING SEEN 

			! (VALID ONLY IF NODE SET AND NO FLDFLGS) 

MACRO		FWA$V_GRPMBR	= 0,27,1,0%; 		! SET IF DIRECTORY IN [GRP,MBR] FORMAT 

MACRO		FWA$V_WILD_DIR	= 0,28,1,0%; 	! INCLUSIVE OR OF DIRECTORY WILD CARDS 

MACRO		FWA$V_DIR_LVLS	= 0,29,3,0%; 	! # OF DIRECTORY SUBLEVELS (0 = UFD ONLY) 

			! (END OF PARSEFLGS BYTE) 

			

			 

						! CONTINUE BIT DEFINITIONS OF 2ND LONGWORD 

MACRO		FWA$V_DIR1	= 0,32,1,0%; 		! UFD LEVEL DIRECTORY OR GROUP SEEN 

MACRO		FWA$V_DIR2	= 0,33,1,0%; 		! SFD LEVEL 1 DIRECTORY OR MEMBER SEEN 

						! ADDITIONAL SUB DIRECTORY LEVEL FLAGS 

			! (END OF DIRFLGS BYTE) 

MACRO		FWA$V_WILD_UFD	= 0,40,1,0%; 	! THE DIR1 SPEC WAS A WILD CARD 

MACRO		FWA$V_WILD_SFD1	= 0,41,1,0%; 	! THE DIR2 SPEC WAS A WILD CARD 

						! ADDITIONAL SUB DIRECTORY WILDCARD FLAGS 

			! (END OF DIRWCFLGS BYTE) 

MACRO		FWA$V_LOGNAME	= 0,48,1,0%; 		! A LOGICAL NAME HAS BEEN SEEN THIS PASS 

			! (NOTE: THIS BYTE IS SAVED AS CONTEXT 

			! WHEN PROCESSING [.DIR-LIST] FORMAT) 

MACRO		FWA$V_OBJTYPE	= 0,49,1,0%; 		! SET IF QUOTED STRING IS OF THE 

			! "OBJECTTYPE=..." FORM 

			! (VALID ONLY IF QUOTED SET) 

MACRO		FWA$V_NETSTR	= 0,50,1,0%; 		! SET IF QUOTED STRING IS OF THE 

			! "OBJECTTYPE=TASKNAME/..." FORM 

			! (VALID ONLY IF QUOTED AND OBJTYPE SET) 

						! SPARES 

			! (END OF LNFLG BYTE) 

			

			 

						! ALTERNATE DEFINITION FOR DIR1 AND DIR2 

MACRO		FWA$V_WILD_GRP	= 0,40,1,0%; 	! THE GRP SPEC CONTAINED A WILD CARD 

MACRO		FWA$V_WILD_MBR	= 0,41,1,0%; 	! THE MBR SPEC CONTAINED A WILD CARD 

			

MACRO		FWA$B_PASSFLGS	= 0,0,8,0%; 	! FLAGS FOR PASS ONLY 

MACRO		FWA$B_FLDFLGS	= 1,0,8,0%; 	! FLAGS FOR FIELDS SEEN 

MACRO		FWA$B_WILDFLGS	= 2,0,8,0%; 	! FLAGS FOR WILD CARDS 

MACRO		FWA$B_PARSEFLGS	= 3,0,8,0%; 	! FLAGS FOR PARSE RESULTS 

MACRO		FWA$B_DIRFLGS	= 4,0,8,0%; 	! FLAGS PRIMARILY FOR DIRECTORY SPEC 

MACRO		FWA$B_DIRWCFLGS	= 5,0,8,0%; 	! DIRECTORY WILD FLAGS 

MACRO		FWA$B_LNFLG	= 6,0,8,0%; 	! LOGICAL NAME FLAG BYTE 

MACRO		FWA$B_DIRTERM	= 7,0,8,0%; 	! DIRECTORY SPEC TERMINATOR (']' OR '>') 

			! (NOTE: THIS BYTE MUST FOLLOW THE LNFLG BYTE) 

LITERAL	FWA$C_ALL	= ((FWA$M_DEVICE OR FWA$M_DIR OR FWA$M_NAME OR FWA$M_TYPE OR FWA$M_VERSION)^-8); 		

			! VALUE FOR ALL FILENAME ELEMENTS EXCEPT NODE 

! 

MACRO		FWA$L_ESCSTRING	= 8,0,32,0%; 	! ESCAPE EQUIVALENCE STRING 

MACRO		FWA$B_ESCFLG	= 8,0,8,0%; 	! SET TO THE CHAR <ESC> IF AN ESCAPE STRING 

			! SEEN, ZERO OTHERWISE 

MACRO		FWA$B_ESCTYP	= 9,0,8,0%; 	! ESCAPE 'TYPE' BYTE 

			 

MACRO		FWA$W_ESCIFI	= 10,0,16,0%; 	! ESCAPE IFI VALUE 

! 

			 

			! TEMPORARY USAGE OF THE ESCIFI FIELD 

			! FOR LOGICAL NAME TRANSLATION 

MACRO		FWA$B_XLTMODE	= 10,0,8,0%; 	! MODE OF EQUIVALENCE STRING 

MACRO		FWA$B_XLTTBL	= 11,0,8,0%; 	! TABLE OF EQUIVALENCE STRING 

MACRO		FWA$Q_XLTBUF1	= 12,0,0,0%; 	! PRIMARY TRANSLATION BUFFER DISCRIPTOR 

LITERAL	FWA$S_XLTBUF1	= 8; 

MACRO		FWA$Q_FIB	= 12,0,0,0%; 	! RE-USE FOR FIB DESCRIPTOR 

LITERAL	FWA$S_FIB	= 8; 

MACRO		FWA$L_BUFFLG	= 20,0,32,0%; 	! FLAG FOR WHICH BUFFER IN USE 

			! (0 = BUF2 IN USE, 1 = BUF1 IN USE) 

MACRO		FWA$L_XLTSIZ	= 24,0,32,0%; 	! LENGTH OF EQUIVALENCE STRING 

MACRO		FWA$W_FNAMSIZ	= 24,0,16,0%; 	! FILE NAME SIZE (WITHOUT TYPE AND VERSION) 

			! AFTER EXIT FROM XPFN 

MACRO		FWA$Q_LOGNAME	= 28,0,0,0%; 	! LOGICAL NAME DESCRIPTOR 

LITERAL	FWA$S_LOGNAME	= 8; 

MACRO		FWA$L_UIC	= 28,0,32,0%; 	! FILE OWNER UIC 

MACRO		FWA$L_LOOKUP	= 28,0,32,0%; 	! ADDRESS OF NEW DIRECTORY CACHE NODE 

MACRO		FWA$L_DEVNODADR	= 32,0,32,0%; 	! ADDRESS OF DEVICE DIRECTORY CACHE NODE 

MACRO		FWA$W_PRO	= 32,0,16,0%; 	! FILE PROTECTION WORD 

MACRO		FWA$Q_XLTBUF2	= 36,0,0,0%; 	! SECONDARY TRANSLATION BUFFER DESCRIPTOR 

LITERAL	FWA$S_XLTBUF2	= 8; 

MACRO		FWA$Q_DIR	= 36,0,0,0%; 	! DIRECTORY NAME SCRATCH BUFFER 

LITERAL	FWA$S_DIR	= 8; 

MACRO		FWA$L_XLTCNT	= 44,0,32,0%; 	! NUMBER OF TRANSLATIONS DONE 

MACRO		FWA$W_UCHAR	= 44,0,16,0%; 	! REUSE TO RECEIVE USER CHARACTERISTICS WORD 

MACRO		FWA$B_DIRLEN	= 48,0,8,0%; 	! OVERALL DIRECTORY SPEC LENGTH 

! 

!  DESCRIPTORS FOR PARSED FILENAME ELEMENTS 

! 

!******++++++ 

!  THE FOLLOWING DESCRIPTORS MUST BE CONTIGUOUS. 

MACRO		FWA$Q_NODE	= 52,0,0,0%; 		! NODE NAME DESCRIPTOR 

LITERAL	FWA$S_NODE	= 8; 

LITERAL	FWA$C_MAXNODE	= 40; 			! MAX NODE NAME SIZE 

MACRO		FWA$Q_DEVICE	= 60,0,0,0%; 		! DEVICE NAME DESCRIPTOR 

LITERAL	FWA$S_DEVICE	= 8; 

LITERAL	FWA$C_MAXDEVICE	= 15; 		! MAX DEVICE NAME SIZE 

MACRO		FWA$Q_DIR1	= 68,0,0,0%; 		! DIRECTORY AND SUBDIRECTORY DESCRIPTORS 

LITERAL	FWA$S_DIR1	= 8; 

MACRO		FWA$Q_DIR2	= 76,0,0,0%; 		! (NOTE: ONLY 1 AND 2 EXPLICITLY NAMED) 

LITERAL	FWA$S_DIR2	= 8; 

LITERAL	FWA$C_MAXSUBDIR	= 7; 			! MAX NUMBER OF SUB DIRECTORIES 

LITERAL	FWA$C_MAXDIRLEN	= 60; 		! MAX SIZE OF TOTAL DIRECTORY SPEC 

MACRO		FWA$Q_NAME	= 132,0,0,0%; 		! FILE NAME DESCRIPTOR 

LITERAL	FWA$S_NAME	= 8; 

LITERAL	FWA$C_MAXNAME	= 9; 			! MAX FILE NAME SIZE 

MACRO		FWA$Q_TYPE	= 140,0,0,0%; 		! FILE TYPE DESCRIPTOR 

LITERAL	FWA$S_TYPE	= 8; 

MACRO		FWA$Q_RNS	= 140,0,0,0%; 		! RE-USE AS RESULTANT NAME STRING DESCRIPTOR 

LITERAL	FWA$S_RNS	= 8; 

LITERAL	FWA$C_MAXTYPE	= 3; 			! MAX FILE TYPE SIZE 

LITERAL	FWA$C_RNSBUFSIZ	= 20; 		! MAX RESULTANT NAME STRING SIZE 

MACRO		FWA$Q_VERSION	= 148,0,0,0%; 		! FILE VERSION DESCRIPTOR 

LITERAL	FWA$S_VERSION	= 8; 

MACRO		FWA$Q_STATBLK	= 148,0,0,0%; 		! RE-USE TO READ STATISTICS 

LITERAL	FWA$S_STATBLK	= 8; 

MACRO		FWA$L_SBN	= 148,0,32,0%; 		! STARTING LBN IF CONTIGUOUS 

MACRO		FWA$L_HBK	= 152,0,32,0%; 		! HIGH VBN 

LITERAL	FWA$C_MAXVER	= 6; 			! MAX FILE VERSION SIZE 

!******------ 

MACRO		FWA$Q_QUOTED	= 156,0,0,0%; 		! QUOTED STRING DESCRIPTOR 

LITERAL	FWA$S_QUOTED	= 8; 

LITERAL	FWA$C_MAXQUOTED	= 127; 		! MAX QUOTED STRING SIZE 

MACRO		FWA$T_FIBBUF	= 164,0,0,0%; 		! FIB BUFFER 

LITERAL	FWA$S_FIBBUF	= 44; 

LITERAL	FWA$C_FIBLEN	= 44; 			! FIB BUFFER SIZE 

! 

!  DIRECTORY NAME BUFFERS 

! 

MACRO		FWA$T_DIR1BUF	= 208,0,0,0%; 		! UFD LEVEL (OR GROUP) 

LITERAL	FWA$S_DIR1BUF	= 9; 

MACRO		FWA$T_DIR2BUF	= 217,0,0,0%; 		! 1ST SFD LEVEL (OR MEMBER) 

LITERAL	FWA$S_DIR2BUF	= 9; 

LITERAL	FWA$C_DIRBUFSIZ	= 9; 			! SIZE OF EACH DIRECTORY BUFFER 

!******++++++ 

!  THE FOLLOWING BUFFERS MUST BE CONTIGUOUS AS EVENTUALLY THE 

!  TYPE AND VERSION ARE APPENDED TO THE NAME STRING 

MACRO		FWA$T_NAMEBUF	= 280,0,0,0%; 		! FILE NAME BUFFER (ALSO USED FOR RESULTANT NAME) 

LITERAL	FWA$S_NAMEBUF	= 10; 

LITERAL	FWA$C_NAMBUFSIZ	= 10; 			! FILE NAME BUFFER SIZE 

MACRO		FWA$T_TYPEBUF	= 290,0,32,0%; 		! FILE TYPE BUFFER 

LITERAL	FWA$C_TYPBUFSIZ	= 4; 			! FILE TYPE BUFFER SIZE 

MACRO		FWA$T_VERBUF	= 294,0,0,0%; 		! FILE VERSION BUFFER 

LITERAL	FWA$S_VERBUF	= 6; 

LITERAL	FWA$C_VERBUFSIZ	= 6; 			! FILE VERSION BUFFER SIZE 

!******------ 

MACRO		FWA$T_NODEBUF	= 300,0,0,0%; 		! NODE NAME BUFFER 

LITERAL	FWA$S_NODEBUF	= 40; 

LITERAL	FWA$C_NODBUFSIZ	= 40; 		! NODE NAME BUFFER SIZE 

MACRO		FWA$B_UNDERLINE	= 340,0,8,0%; 		! SINGLE CHARACTER '_' STORED HERE TO PREVENT 

				! ADDITIONAL LOGICAL NAME TRANSLATION 

MACRO		FWA$T_DEVICEBUF	= 341,0,0,0%;  	! DEVICE NAME BUFFER 

LITERAL	FWA$S_DEVICEBUF	= 15; 

LITERAL	FWA$C_DEVBUFSIZ	= 15; 		! DEVICE NAME BUFFER SIZE 

MACRO		FWA$T_ATR_LIST	= 356,0,0,0%; 	! ATTRIBUTE LIST WORK AREA 

LITERAL	FWA$S_ATR_LIST	= 128; 

MACRO		FWA$T_XLTBUFF1	= 356,0,0,0%; 	! SCRATCH TRANSLATION BUFFER 

LITERAL	FWA$S_XLTBUFF1	= 64; 

				! (ALSO USED FOR ATTRIBUTE LIST AREA IN RM$ACCESS) 

MACRO		FWA$T_DIB	= 372,0,0,0%; 		! DEVICE INFORMATION BLOCK 

LITERAL	FWA$S_DIB	= 112; 

MACRO		FWA$T_XLTBUFF2	= 420,0,0,0%; 	! SCRATCH TRANSLATION BUFFER 

LITERAL	FWA$S_XLTBUFF2	= 64; 

				! (ALSO USED FOR DIRECTORY PROCESSING IN RM$SETDID 

				!  AND ATTRIBUTE LIST AREA IN RM$ACCESS) 

LITERAL	FWA$C_XLTBUFSIZ	= 63; 		! SCRATCH TRANSLATION BUFFER SIZE 



 

! 

!	NETWORK WORK AREA DEFINITIONS 

! 

!  THE NETWORK WORK AREA CONTAINS THE DAP CONTROL BLOCK, STORAGE 

!  FOR THE QUOTED STRING, AND SCRATCH BUFFERS FOR NETWORK OPERATIONS. 

!  IFB$L_NWA_PTR POINTS TO IT. NWA IS ALLOCATED BY RM0XPFN WHEN NODENAME 

!  IS DETECTED AND IT IS DEALLOCATED BY RMS0CLOSE WHEN THE IFAB IS 

!  DEALLOCATED. 

! 

!...$NWADEF	

	 

MACRO		NWA$T_DAP	= 0,0,0,0%; 		! DAP CONTROL BLOCK 

LITERAL	NWA$S_DAP	= 192; 

				! ITS SYMBOLS ARE DEFINED BY $DAPDEF 

LITERAL	NWA$C_DAPSIZ	= 192; 			! DAP CONTROL BLOCK SIZE 

MACRO		NWA$Q_FLG	= 0,0,0,0%; 		! MAP NWA$Q_FLG OVER DAP$Q_FLG 

LITERAL	NWA$S_FLG	= 8; 

				!  BITS 00-31 ARE DEFINED BY NWA 

				!  BITS 32-63 ARE DEFINED BY DAP 

MACRO		NWA$T_FILESPEC	= 192,0,0,0%; 	! FILE SPEC STRING SENT TO FAL STORED 

LITERAL	NWA$S_FILESPEC	= 128; 

				!  AS A COUNTED ASCII STRING 

MACRO		NWA$T_QUOTEDBUF	= 192,0,0,0%; 	! QUOTED STRING BUFFER 

LITERAL	NWA$S_QUOTEDBUF	= 127; 

MACRO		NWA$B_QUOTEDTRN	= 319,0,8,0%; 	! # BYTES TRUNCATED FROM QUOTED STRING COUNT 

				! IN FWA$Q_QUOTED BUT STILL IN NWA$T_QUOTEDBUF 

MACRO		NWA$Q_BUFFER	= 320,0,0,0%; 		! PRIMARY SCRATCH BUFFER DESCRIPTOR 

LITERAL	NWA$S_BUFFER	= 8; 

MACRO		NWA$Q_BUFFER2	= 328,0,0,0%; 		! SECONDARY SCRATCH BUFFER DESCRIPTOR 

LITERAL	NWA$S_BUFFER2	= 8; 

MACRO		NWA$T_SPARE	= 336,0,0,0%; 		! UNUSED SPACE 

LITERAL	NWA$S_SPARE	= 16; 

MACRO		NWA$T_BUFFER	= 352,0,0,0%; 		! SCRATCH BUFFER 

LITERAL	NWA$S_BUFFER	= 672; 

LITERAL	NWA$C_BUFFERSIZ	= 672; 		! SCRATCH BUFFER SIZE 

LITERAL	NWA$C_BLN	= 1024; 

LITERAL	NWA$K_BLN	= 1024; 				! THIS SHOULD EQUAL 1024 OR 2 PAGES!!! 



 

! 

!	 BDB FIELD DEFINITIONS 

! 

!  BUFFER DESCRIPTOR BLOCK (BDB) 

! 

!  THERE IS ONE BDB PER I/O BUFFER 

!  ( THE I/O BUFFERS EXIST IN SEPARATE PAGES, PAGE ALIGNED) 

!  SOME BDB'S MAY NOT HAVE AN ASSOCIATED I/O BUFFER 

! 

!...$BDBDEF	

 

MACRO		BDB$L_FLINK	= 0,0,32,0%; 	! FORWARD LINK 

MACRO		BDB$L_BLINK	= 4,0,32,0%; 	! BACKWARD LINK 

MACRO		BDB$B_BID	= 8,0,8,0%; 		! BLOCK ID 

LITERAL	BDB$C_BID	= 12; 		! BDB ID CODE 

MACRO		BDB$B_BLN	= 9,0,8,0%; 		! BLOCK LENGTH IN LONGWORDS 

MACRO		BDB$B_FLGS	= 10,0,8,0%; 	! BDB FLAGS 

			 

MACRO		BDB$V_VAL	= 10,0,1,0%; 		! BUFFER CONTENTS VALID 

LITERAL	BDB$M_VAL	= 1^1 - 1^0; 

MACRO		BDB$V_DRT	= 10,1,1,0%; 		! BUFFER CONTENT DIRTY 

LITERAL	BDB$M_DRT	= 1^2 - 1^1; 

MACRO		BDB$V_IOP	= 10,2,1,0%; 		! BUFFER HAS I/O IN PROGRESS 

LITERAL	BDB$M_IOP	= 1^3 - 1^2; 

MACRO		BDB$V_PRM	= 10,3,1,0%; 		! BUFFER HAS PERMANENCE FACTOR 

LITERAL	BDB$M_PRM	= 1^4 - 1^3; 

MACRO		BDB$V_NOLOCATE	= 10,4,1,0%; 	! BUFFER SHARED - NO LOCATE MODE 

LITERAL	BDB$M_NOLOCATE	= 1^5 - 1^4; 

			! (SET/CLEARED BY RM$CACHE) 

MACRO		BDB$V_WFO	= 10,5,1,0%; 		! OTHER STREAMS AWAITING 

LITERAL	BDB$M_WFO	= 1^6 - 1^5; 

			! THE RELEASING OF THIS BDB 

MACRO		BDB$V_AST_DCL	= 10,6,1,0%; 	! AST HAS BEEN DECLARED FOR 

LITERAL	BDB$M_AST_DCL	= 1^7 - 1^6; 

			! WAITING STREAM 

MACRO		BDB$V_LKDINWS	= 10,7,1,0%; 	! BUFFER IS LOCKED IN WORKING SET 

LITERAL	BDB$M_LKDINWS	= 1^8 - 1^7; 

			

MACRO		BDB$B_USECNT	= 11,0,8,0%; 	! USE COUNT (NOT USED FOR SEQ. ORG) 

MACRO		BDB$L_OWN	= 12,0,32,0%; 		! IRAB ADDR OF OWNING STREAM 

MACRO		BDB$W_NUMB	= 16,0,16,0%; 	! # OF BYTES OF BUFFER IN USE 

MACRO		BDB$W_SIZE	= 18,0,16,0%; 	! # BYTES IN BUFFER 

MACRO		BDB$L_ADDR	= 20,0,32,0%; 	! ADDRESS OF BUFFER 

MACRO		BDB$L_VBN	= 24,0,32,0%; 		! 1ST VBN IN BUFFER 

MACRO		BDB$L_WAIT	= 28,0,32,0%; 	! WAIT THREAD (IRAB ADDR) 

			! (FOR INTER-STREAM INTRA- 

			!  PROCESS LOCKING ONLY) 

			 

MACRO		BDB$L_WK1	= 32,0,32,0%; 		! WORK AREA 

MACRO		BDB$B_REL_VBN	= 32,0,8,0%; 	! CURRENT VBN REL TO START OF BUFFER 

MACRO		BDB$B_VAL_VBNS	= 33,0,8,0%; 	! # OF VALID VBNS IN BUFFER 

MACRO		BDB$B_PRE_CCTL	= 34,0,8,0%; 	! UNIT RECORD CARRIAGE CONTROL BYTE ('PRE') 

MACRO		BDB$B_POST_CCTL	= 35,0,8,0%; 	! UNIT RECORD CARRIAGE CONTROL BYTE ('POST') 

MACRO		BDB$L_CURBUFADR	= 36,0,32,0%; 	! CURRENT BUFFER ADDR 

					! RE-USE FOR I/O STATUS BLOCK 

MACRO		BDB$L_IOSB	= 32,0,0,0%; 	! I/O STATUS BLOCK FOR BUFFER 

LITERAL	BDB$S_IOSB	= 8; 

LITERAL	BDB$C_BLN	= 40; 

LITERAL	BDB$K_BLN	= 40; 			! LENGTH OF BDB BLOCK 



 

! 

!	RLB FIELD DEFINITIONS 

! 

!  RECORD LOCK BLOCK (RLB) 

! 

!  THE RLB DESCRIBES ONE LOCKED RECORD FOR A PARTICULAR 

!  PROCESS-RECORD STREAM (RAB/IRAB). IF THE OWNER FIELD 

!  IS 0 THEN THE RLB IA AVALIABLE FOR USE. OTHERWISE, IT 

!  DESCRIBES A LOCKED RECORD. NOTE: WHEN OWNER IS 0 THE 

!  RECORD RFA FIELDS ARE ZEROED (0). 

! 

!...$RLBDEF	

 

MACRO		RLB$L_LNK	= 0,0,32,0%; 		! LINK TO NEXT RLB 

MACRO		RLB$L_OWNER	= 4,0,32,0%; 	! OWNER ID FOR LOCKED RECORD 

MACRO		RLB$W_PID	= 4,0,16,0%; 	! ID PART OF PROCESS ID (PID) 

MACRO		RLB$W_ISI	= 6,0,16,0%; 	! ISI FOR STREAM 

MACRO		RLB$B_BID	= 8,0,8,0%; 		! BLOCK ID 

LITERAL	RLB$C_BID	= 14; 		! RLB CODE 

MACRO		RLB$B_BLN	= 9,0,8,0%; 		! BLOCK LENGTH IN LONGWORDS 

MACRO		RLB$W_RFA4	= 10,0,16,0%; 	! 3'RD WORD OF RECORDS RFA 

			! OFFSET FOR SEQ F.O. (BITS 0:14) 

			! ALWAYS 0 FOR REL F.O. (BITS 0:14) 

MACRO		RLB$B_ID	= 10,0,8,0%; 	! ID FOR IDX F.O. (BITS 8:14 ARE 0) 

			 

				 

MACRO		RLB$V_ALLOWREAD	= 10,15,1,0%; 	! ALLOW READER ACCESS TO LOCK RECORD FLAG (BIT 15) 

LITERAL	RLB$M_ALLOWREAD	= 1^16 - 1^15; 

			

MACRO		RLB$L_RFA0	= 12,0,32,0%; 	! 1'ST AND 2'ND WORDS OF RECORD'S RFA 

			! SEQ F.O. VBN 

			! REL F.O. RELATIVE RECORD NUMBER 

			! IDX F.O. START VBN 

LITERAL	RLB$C_BLN	= 16; 

LITERAL	RLB$K_BLN	= 16; 			! LENGTH OF RLB 



 

! 

!	 PROLOGUE FIELD DEFINITIONS 

! 

! 

!  COMMON VBN1 FORMAT FOR INDEXED AND RELATIVE FILES 

! 

!  (NOTE: INDEXED FILE DEFINTIONS NOT INCLUDED AT THIS TIME) 

! 

!...$PLGDEF	

 

MACRO		PLG$B_DBKTSIZ	= 11,0,8,0%; 	! DATA BUCKET SIZE 

MACRO		PLG$B_FLAGS	= 16,0,8,0%; 	! FLAG BITS 

			 

MACRO		PLG$V_NOEXTEND	= 16,0,1,0%; 	! NO EXTEND ALLOWED (REL) 

			

MACRO		PLG$B_AVBN	= 102,0,8,0%; 	! VBN OF FIRST AREA DESCRIPTOR 

MACRO		PLG$B_AMAX	= 103,0,8,0%; 	! MAXIMUM NUMBER OF AREAS 

MACRO		PLG$W_DVBN	= 104,0,16,0%; 	! FIRST DATA BUCKET VBN 

MACRO		PLG$L_MRN	= 108,0,32,0%; 		! MAXIMUM RECORD NUMBER (REL) 

MACRO		PLG$L_EOF	= 112,0,32,0%; 		! EOF VBN (REL) 

MACRO		PLG$W_VER_NO	= 116,0,16,0%; 	! VERSION NUMBER 

LITERAL	PLG$C_VER_NO	= 1; 		! CURRENT PROLOG VERSION NUMBER 

LITERAL	PLG$C_BLN	= 118; 

LITERAL	PLG$K_BLN	= 118; 	 



! 

! 

!  RELATIVE FILE DELETION CONTROL BYTE BIT DEFINITIONS 

! 

!...$DLCDEF	

 

			 

						! (START WITH BIT 2) 

MACRO		DLC$V_DELETED	= 0,2,1,0%; 		! RECORD DELETED 

LITERAL	DLC$M_DELETED	= 1^3 - 1^2; 

MACRO		DLC$V_REC	= 0,3,1,0%; 		! RECORD EXISTS (BUT MAY HAVE BEEN DELETED) 

LITERAL	DLC$M_REC	= 1^4 - 1^3; 

			



 

! 

!  DIRECTORY CACHE NODE DEFINITIONS 

! 

!...$DRCDEF	

 

MACRO		DRC$L_NXTFLNK	= 0,0,32,0%; 	! LINK TO NEXT ENTRY, THIS LEVEL 

MACRO		DRC$L_NXTBLNK	= 4,0,32,0%; 	! LINK TO PREVIOUS ENTRY, THIS LEVEL 

MACRO		DRC$L_LVLFLNK	= 8,0,32,0%; 	! LINK TO FIRST ENTRY, NEXT LOWER LEVEL 

MACRO		DRC$L_LVLBLNK	= 12,0,32,0%; 	! LINK TO LAST ENTRY, NEXT LOWER LEVEL 

			! NOTE: THE LINKS ARE MAINTAINED IN LRU ORDER 

MACRO		DRC$T_NAME	= 16,0,0,0%; 	! DIRECTORY NAME OR DEVICE AND UNIT 

LITERAL	DRC$S_NAME	= 10; 

			! NOTE: STORED AS COUNTED STRING COUNTING COUNT ITSELF 

MACRO		DRC$W_DID	= 26,0,0,0%; 	! FILE ID FOR DIRECTORY 

LITERAL	DRC$S_DID	= 6; 

MACRO		DRC$W_DIRSEQ	= 26,0,16,0%; 	! DIRECTORY SEQUENCE # FOR DEVICE NODE 

LITERAL	DRC$C_BLN	= 32; 

LITERAL	DRC$K_BLN	= 32; 			! LENGTH OF DIRECTORY CACHE NODE 



 

 

! 

!		RELEASE OPTION FLAG DEFINITIONS 

! 

!...$RLSDEF	

 

			 

MACRO		RLS$V_RETURN	= 0,0,1,0%; 		! RETURN BUFFER AND BDB TO FREE SPACE LISTS 

LITERAL	RLS$M_RETURN	= 1^1 - 1^0; 

MACRO		RLS$V_WRT_THRU	= 0,1,1,0%; 	! WRITE BUFFER IF DIRTY 

LITERAL	RLS$M_WRT_THRU	= 1^2 - 1^1; 

MACRO		RLS$V_KEEP_LOCK	= 0,2,1,0%; 	! KEEP BDB LOCKED 

LITERAL	RLS$M_KEEP_LOCK	= 1^3 - 1^2; 

MACRO		RLS$V_KEEP_ACC	= 0,3,1,0%; 	! KEEP BDB ACCESSED ON I/O ERROR 

LITERAL	RLS$M_KEEP_ACC	= 1^4 - 1^3; 

			



! 

!		CACHE OPTION FLAG DEFINITIONS 

! 

!...$CSHDEF	

 

			 

MACRO		CSH$V_LOCK	= 0,0,1,0%; 		! OBTAIN EXCLUSIVE ACCESS TO BLOCK 

LITERAL	CSH$M_LOCK	= 1^1 - 1^0; 

MACRO		CSH$V_NOWAIT	= 0,1,1,0%; 		! DO NOT WAIT FOR BLOCK ON ACCESS INTERLOCK 

LITERAL	CSH$M_NOWAIT	= 1^2 - 1^1; 

			! COLLISION 

MACRO		CSH$V_NOREAD	= 0,2,1,0%; 		! DO NOT READ IN BLOCK 

LITERAL	CSH$M_NOREAD	= 1^3 - 1^2; 

MACRO		CSH$V_READAHEAD	= 0,3,1,0%; 	! START TRANSFER FOR BLOCK BUT DON'T WAIT 

LITERAL	CSH$M_READAHEAD	= 1^4 - 1^3; 

			! FOR IO DONE 

MACRO		CSH$V_NOBUFFER	= 0,4,1,0%; 	! OBTAIN ACCESS TO BLOCK BUT DON'T ALLOCATE 

LITERAL	CSH$M_NOBUFFER	= 1^5 - 1^4; 

			! A BUFFER FOR IT AND DON'T READ IT 

			



 

! 

! 

!  RMS OVERALL STATUS BIT DEFINITIONS 

! 

!...$PIODEF	

 

			 

MACRO		PIO$V_INHAST	= 0,0,1,0%; 		! SET IF ASTS IMPLICITLY INHIBITED 

			! IF RESET BY DISABLED AST, AST MUST BE RE- 

			! ENABLED 

MACRO		PIO$V_EOD	= 0,1,1,0%; 		! SET IF SEARCHING FOR 'EOD' STRING ON 'INPUT' 

MACRO		PIO$V_SYNC1	= 0,2,1,0%; 		! SYNC STALLED OPERATION USING EFN 27 

MACRO		PIO$V_SYNC2	= 0,3,1,0%; 		! SYNC STALLED OPERATION USING EFN 28 

			



 

 

! 

!	DEFINITIONS FOR RMS DEBUG FAILURE CODES 

! 

! 

!  THE FOLLOWING CODES ARE FOR TEMPORARY BUG CHECK TESTS, AND ARE 

!  INTERNAL TO RMS.  ALL OF THE CODES ARE NEGATIVE, IMPLYING THAT THEY 

!  DO NOT RETURN TO THE CALLER, PROBABLY KILLING THE PROCESS (IF NOT 

!  THE ENTIRE SYSTEM). 

! 

!...$FTLDEF	

 

LITERAL	

$EQULST (FTL$_,GBL,0,1  

	,(SETPRTFAIL,-1) 		!SET PROTECTION SYSTEM SERVICE FAILED (RM0BUFMGR) 

	,(STKTOOBIG,-2) 		!STACK TOO BIG FOR ASB (RM0STALL) 

	,(BADIFAB,-3) 		!INVALID IFAB (OR IRAB) (RM0FSET,RM0CONN,RM0RSET, 

			! RM0PRFLNM) 

	,(GTCHNFAIL,-4) 		!GET CHANNEL SYSTEM SERVICE FAILURE (RM0PRFLNM) 

	,(BADORGCASE,-5) 		!INVALID ORGCASE VALUE FOR DISPATCH (ALL RMS$ 

			! LEVEL ROUTINES EXECEPT OPEN AND CREATE) 

	,(BADBDB,-6) 		!BLOCK NOT A BDB (RM0BUFMGR) 

	,(ASBALLFAIL,-7) 		!COULDN'T ALLOCATE AN ASB (RM0STALL) 

	,(BADASTPRM,-8) 		!AST PARAMETER NOT A VALID IFAB/IRAB ADDR (RM0STALL) 

	,(CANTDOAST,-9) 		!COULDN'T REDECLARE AST (INSF. MEM.) (RM0STALL) 

	,(NOSTRUCT,-10) 		!RAB OR FAB NOT SAME ON AST (RM0STALL) 

	,(NOASB,-11) 		!ASB NOT ALLOCATED OR STREAM NOT BUSY ON AST (RM0STALL) 

	,(NONXTBDB,-12) 		!NO NEXT BDB AVAILABLE (RM1SEQXFR) 

	,(BADBUFSIZ,-13) 		!DISK BUFFER SIZE NOT = 512 (RM1CONN) 

			! (-14, -15, -16 NO LONGER USED) 

	,(DEALLERR,-17) 		!IFAB DEALLOCATION ATTEMPTED WITH OTHER BLOCK(S) 

			! STILL ALLOCATED (RMS0CLOSE) 

	,(IORNDN,-18) 		!I/O RUNDOWN INCONSISTENCY (EITHER IFAB OR IRAB 

			! TABLE ENTRIES NOT ZEROED) (RMS0RNDWN) 

	,(XFERSIZE,-19) 		!SIZE OF REQUESTED TRANSFER NOT EQUAL TO 

			! OR LESS THAN THE CURRENT NUMBER OF BYTES 

			! IN USE FOR THE BDB (RM0CACHE) 

	,(NOTLOCKED,-20) 		!BDB NOT LOCKED AND A KEEP LOCK REQUEST 

			! WAS MADE ON A RELEASE REQUEST. 

	,(NODIDORFID,-21) 		!NEITHER A FID NOR A DID WAS SET UPON EXIT FROM 

			! RM$SETDID (RMS0ERASE) 

	,(RELEASFAIL,-22) 		!RELEASE OF NON-DIRTY BDB FAILED (RM0XTND23,RMS0EXTEND) 

	,(NOLOCKBDB,-23) 		!NO LOCK BDB FOUND (RM0XTND23) 

	,(NONETWORK,-24) 		!network routine entered but no network support in RMS 

	,(LOCKFAILED,-25) 		!FAILED TO LOCK PROLOG (RM2CREATE) 

	,(BADLEVEL,-26) 		!to search by id, structure level must be 0 

	); 

 



 

! 

!  THE FOLLOWING INTERNAL CODES ARE FOR NON-FATAL BUG CHECK REPORTING. 

!  THESE CODES ARE POSITIVE BYTE VALUES.  THEY TRIGGER A REPORTING ACTION 

!  AND RETURN TO THE CALLER WITH R0 SET TO RMS$_BUG+<8*THE BUG CODE>, 

!  WHICH IS AN EXTERNALLY DOCUMENTED RMS ERROR CODE. 

! 

!...$BUGDEF	

 

LITERAL	

$EQULST (BUG$_,GBL,0,1  

	,(BADDFLTDIR,1) 		!DEFAULT DIRECTORY STRING INVALID (RM0XPFN) 

	); 

 



