;	$BEGIN	RMSUSR,007 

; 

;	RMS USER STRUCTURE DEFINITIONS 

; 

;	MODIFIED BY: 

; 

;	L F LAVERDURE,   8-DEC-77  11:12 

; 

;	FILE ACCESS BLOCK (FAB) DEFINITIONS 

; 

; 

	.MACRO	$FABDEF,$GBL



	$DEFINI	FAB,$GBL



 

;+++++***** 

;   THE FIELDS THRU CTX MUST NOT BE MODIFIED DUE TO 

;   COMMONALITY BETWEEN FAB/RAB/XAB 

$DEF	FAB$B_BID		 		; BLOCK ID 

$EQU	FAB$C_BID	3		; CODE FOR FAB 

			.BLKB	1 

$DEF	FAB$B_BLN		 		; BLOCK LEN 

			.BLKB	1 

$DEF	FAB$W_IFI		 		; INTERNAL FILE INDEX 

	$VIELD	FAB,0,<-  

		<,6,M>- 		; MOVE TO BIT 6 

		<PPF_RAT,8,M>- 	; RAT VALUE FOR PROCESS-PERMANENT FILES 

		<PPF_IND,,M>- 		; INDRECT ACCESS TO PROCESS-PERMANENT FILE 

-			; (I.E., RESTRICTED OPERATIONS) 

		>	

			.BLKW	1 

$DEF	FAB$L_FOP		 		; FILE OPTIONS 

	$VIELD	FAB,0,<-  

		<,1,M>- 		; RESERVED FOR ASY (NOT IMPLEMENTED) 

		<MXV,,M>- 		; MAXIMIZE VERSION NUMBER 

		<SUP,,M>- 		; SUPERSEDE EXISTING FILE 

		<TMP,,M>- 		; CREATE TEMPORARY FILE 

		<TMD,,M>- 		; CREATE TEMP FILE MARKED FOR DELETE 

		<DFW,,M>- 		; DEFERRED WRITE (REL AND IDX) 

		<SQO,,M>- 		; SEQUENTIAL ACCESS ONLY 

		<RWO,,M>- 		; REWIND MT ON OPEN 

		<POS,,M>- 		; USE NEXT MAGTAPE POSITION 

		<WCK,,M>- 		; WRITE CHECKING 

		<NEF,,M>- 		; INHIBIT END OF FILE POSITIONING 

		<RWC,,M>- 		; REWIND MT ON CLOSE 

		<DMO,,M>- 		; DISMOUNT MT ON CLOSE 

		<SPL,,M>- 		; SPOOL FILE ON CLOSE 

		<SCF,,M>- 		; SUBMIT COMMAND FILE ON CLOSE 

		<DLT,,M>- 		; DELETE SUB-OPTION (CURRENTLY TO SCF ONLY) 

		<NFS,,M>- 		; NON-FILE STRUCTURED OPERATION 

		<UFO,,M>- 		; USER FILE OPEN - NO RMS OPERATIONS 

		<PPF,,M>- 		; PROCESS PERMANENT FILE (PIO SEGMENT) 

		<INP,,M>- 		; PROCESS-PERMANENT FILE IS 'INPUT' 

		<CTG,,M>- 		; CONTIGUOUS EXTENSION 

		<CBT,,M>- 		; CONTIGUOUS BEST TRY 

		<JNL,,M>- 		; EXPLICIT LOGGING 

		<RCK,,M>- 		; READ CHECKING 

		<NAM,,M>- 		; USE NAME BLOCK DVI, DID, AND/OR FID FIELDS FOR OPEN 

		<CIF,,M>- 		; CREATE IF NON-EXISTENT 

		<UFM,,M>- 		; USER FILE OPEN MODE (USER IF 1, SUPER IF 0) 

-			;  ENABLE ONLY IF ESC AND (UFO OR NFS) ARE ALSO ON 

-			;  (NOTE: THIS BIT MUST IMMEDIATELY PRECEDE ESC) 

		<ESC,,M>- 		; 'ESCAPE' TO NON-STANDARD FUNCTION ($MODIFY) 

		<TEF,,M>- 		; TRUNCATE AT EOF ON CLOSE (WRITE-ACCESSED SEQ. DISK FILE ONLY) 

		<OFP,,M>- 		; OUTPUT FILE PARSE (ONLY NAME TYPE STICKY) 

		<KFO,,M>- 		; KNOWN FILE OPEN (IMAGE ACTIVATOR ONLY RELEASE 1) 

		>	

			.BLKL	1 

$DEF	FAB$L_STS		 		; STATUS 

			.BLKL	1 

$DEF	FAB$L_STV		 		; STATUS VALUE 

			.BLKL	1 

$DEF	FAB$L_ALQ		 		; ALLOCATION QUANTITY 

			.BLKL	1 

$DEF	FAB$W_DEQ		 		; DEFAULT ALLOCATION QUANTITY 

			.BLKW	1 

$DEF	FAB$B_FAC		 		; FILE ACCESS 

	$VIELD	FAB,0,<-  

		<PUT,,M>- 		; PUT ACCESS 

		<GET,,M>- 		; GET ACCESS 

		<DEL,,M>- 		; DELETE ACCESS 

		<UPD,,M>- 		; UPDATE ACCESS 

		<TRN,,M>- 		; TRUNCATE ACCESS 

		<BIO,,M>- 		; BLOCK I/O ACCESS 

		<BRO,,M>- 		; BLOCK AND RECORD I/O ACCESS 

		>	

			.BLKB	1 

$DEF	FAB$B_SHR		 		; FILE SHARING 

	$VIELD	FAB,0,<-  

		<SHRPUT,,M>- 	; PUT ACCESS 

		<SHRGET,,M>- 	; GET ACCESS 

		<SHRDEL,,M>- 	; DELETE ACCESS 

		<SHRUPD,,M>- 	; UPDATE ACCESS 

		<MSE,,M>- 		; MULTI-STREAM CONNECTS ENABLED 

		<NIL,,M>- 		; NO SHARING 

		<UPI,,M>- 		; USER PROVIDED INTERLOCKING (ALLOWS MULTIPLE 

-			;  WRITERS TO SEQ. FILES) 

		>	

			.BLKB	1 

$DEF	FAB$L_CTX		 		; USER CONTEXT 

;-----***** 

			.BLKL	1 

$DEF	FAB$B_RTV		 	; RETRIEVAL WINDOW SIZE 

			.BLKB	1 

$DEF	FAB$B_ORG		 		; FILE ORGANIZATION 

	$VIELD	FAB,0,<-  

		<,4,>-  

		<ORG,4,>-  

		>	

$EQU	FAB$C_SEQ	0		; SEQUENTIAL 

$EQU	FAB$C_REL	16		; RELATIVE 

$EQU	FAB$C_IDX	32		; INDEXED 

$EQU	FAB$C_HSH	48		; HASHED 

			.BLKB	1 

$DEF	FAB$B_RAT		 		; RECORD FORMAT 

	$VIELD	FAB,0,<-  

		<FTN,,M>- 		; FORTRAN CARRIAGE-CTL 

		<CR,,M>- 		; LF-RECORD-CR CARRIAGE CTL 

		<PRN,,M>- 		; PRINT-FILE CARRIAGE CTL 

		<BLK,,M>- 		; RECORDS DON'T CROSS BLOCK BOUNDARIES 

		>	

			.BLKB	1 

$DEF	FAB$B_RFM		 		; RECORD FORMAT 

$EQU	FAB$C_RFM_DFLT	2		; VAR LEN IS DEFAULT 

$EQU	FAB$C_UDF	0		; UNDEFINED 

$EQU	FAB$C_FIX	1		; FIXED LENGTH RECORDS 

$EQU	FAB$C_VAR	2		; VARIABLE LENGTH RECORDS 

$EQU	FAB$C_VFC	3		; VARIABLE FIXED CONTROL 

$EQU	FAB$C_MAXRFM	3		; MAXIMUM RFM SUPPORTED 

			.BLKB	1 

$DEF	FAB$L_JNL		 		; LCB ADDRESS 

			.BLKL	1 

$DEF	FAB$L_XAB		 		; XAB ADDRESS 

			.BLKL	1 

$DEF	FAB$L_NAM		 		; NAM BLOCK ADDRESS 

			.BLKL	1 

$DEF	FAB$L_FNA		 		; FILE NAME STRING ADDRESS 

			.BLKL	1 

$DEF	FAB$L_DNA		 		; DEFAULT FILE NAME STRING ADDR 

			.BLKL	1 

$DEF	FAB$B_FNS		 		; FILE NAME STRING SIZE 

			.BLKB	1 

$DEF	FAB$B_DNS		 		; DEFAULT NAME STRING SIZE 

			.BLKB	1 

$DEF	FAB$W_MRS		 		; MAXIMUM RECORD SIZE 

			.BLKW	1 

$DEF	FAB$L_MRN		 		; MAXIMUM RECORD NUMBER 

			.BLKL	1 

$DEF	FAB$W_BLS		 		; BLOCKSIZE FOR TAPE 

			.BLKW	1 

$DEF	FAB$B_BKS		 		; BUCKET SIZE 

			.BLKB	1 

$DEF	FAB$B_FSZ		 		; FIXED HEADER SIZE 

			.BLKB	1 

$DEF	FAB$L_DEV		 		; DEVICE CHARACTERISTICS 

			.BLKL	1 

$DEF	FAB$L_SDC		 		; SPOOLING DEVICE CHARACTERISTICS 

			.BLKL	1 

				 		; (SPARE) 

			.BLKL	2 

$DEF	FAB$C_BLN

$DEF	FAB$K_BLN				; LENGTH OF FAB 



	$DEFEND	FAB,$GBL,DEF



	.ENDM	$FABDEF

 

; 

;	 RECORD ACCESS BLOCK (RAB) DEFINITIONS 

; 

;  THERE IS ONE RAB PER CONNECTED STREAM 

;  IT IS USED FOR ALL COMMUNICATIONS BETWEEN THE USER 

;  AND RMS CONCERNING OPERATIONS ON THE STREAM 

; 

	.MACRO	$RABDEF,$GBL



	$DEFINI	RAB,$GBL



 

;+++++***** 

;  THE FIELDS THRU CTX CANNOT BE CHANGED DUE TO COMMONALITY 

;  WITH THE FAB 

; 

$DEF	RAB$B_BID		 		; BLOCK ID 

$EQU	RAB$C_BID	1		; CODE FOR RAB 

			.BLKB	1 

$DEF	RAB$B_BLN		 		; BLOCK LENGTH 

			.BLKB	1 

$DEF	RAB$W_ISI		 		; INTERNAL STREAM INDEX 

			; (IFI IN FAB) 

	$VIELD	RAB,0,<-  

		<,6,M>- 		; MOVE TO BIT 6 

		<PPF_RAT,8,M>- 	; RAT VALUE FOR PROCESS-PERMANENT FILES 

		<PPF_IND,,M>- 	; INDIRECT ACCESS TO PROCESS-PERMANENT FILE 

-			; (I.E., RESTRICTED OPERATIONS) 

		>	

			.BLKW	1 

$DEF	RAB$L_ROP		 		; RECORD OPTIONS 

	$VIELD	RAB,0,<-  

-			; THE FOLLOWING BITS MAY BE 

-			; INPUT TO VARIOUS RAB-RELATED 

-			; OPERATIONS 

-			; 

		<ASY,,M>- 		; ASYNCHRONOUS OPERATIONS 

		<TPT,,M>- 		; TRUNCATE PUT  -  ALLOW SEQUENTIAL PUT NOT AT 

-			;   EOF, THUS TRUNCATING FILE (SEQ. ORG ONLY) 

		<,1,M>- 		; (SPARE) 

		<TNR,,M>- 		; TRUNCATE STARTING WITH NRP RECORD 

		<UIF,,M>- 		; UPDATE IF EXISTENT 

		<MAS,,M>- 		; MASS-INSERT MODE 

		<FDL,,M>- 		; FAST RECORD DELETION 

		<HSH,,M>- 		; USE HASH CODE IN BKT 

-			; 

		<EOF,,M>- 		; CONNECT TO EOF 

		<RAH,,M>- 		; READ AHEAD 

		<WBH,,M>- 		; WRITE BEHIND 

		<BIO,,M>- 		; CONNECT FOR BIO ONLY 

		<,1,M>- 		; (1 SPARE) 

		<LOA,,M>- 		; USE BUCKET FILL PERCENTAGE 

		<,2,M>- 		; (2 SPARES) 

-			; 

-			; THE FOLLOWING BITS ARE INPUT TO 

-			; $FIND OR $GET 

-			; (SEPARATE BYTE) 

-			; 

		<LOC,,M>- 		; USE LOCATE MODE 

		<WAT,,M>- 		; WAIT IF RECORD NOT AVAILABLE 

-			; (NOT IN RELEASE 1) 

		<ULK,,M>- 		; MANUAL UNLOCKING 

		<RLK,,M>- 		; ALLOW READERS FOR THIS LOCKED RECORD 

		<NLK,,M>- 		; DO NOT LOCK RECORD 

		<KGE,,M>- 		; KEY > OR = 

		<KGT,,M>- 		; KEY GREATER THAN 

		<NXR,,M>- 		; GET NON-EXISTENT RECORD 

-			; 

-			;  THE FOLLOWING BITS ARE TERMINAL 

-			;  READ QUALIFIERS ONLY 

-			;  (SEPARATE BYTE) 

-			; 

		<RNE,,M>- 		; READ NO ECHO 

		<TMO,,M>- 		; USE TIME-OUT PERIOD 

		<CVT,,M>- 		; CONVERT TO UPPER CASE 

		<RNF,,M>- 		; READ NO FILTER 

		<,1,M>- 		; SPARE (FOR DSABLMBX IF EVER SUPPORTED) 

		<PTA,,M>- 		; PURGE TYPE AHEAD 

		<PMT,,M>- 		; USE PROMPT BUFFER 

		<CCO,,M>- 		; CANCEL CONTROL O ON OUTPUT 

		>	

			.BLKB	1 

$DEF	RAB$B_ROP1		 	; VARIOUS OPTIONS 

			.BLKB	1 

$DEF	RAB$B_ROP2		 	; GET/FIND OPTIONS 

			.BLKB	1 

$DEF	RAB$B_ROP3		 	; TERMINAL READ OPTIONS 

; 

			.BLKB	1 

$DEF	RAB$L_STS		 		; STATUS 

			.BLKL	1 

$DEF	RAB$L_STV		 		; STATUS VALUE 

			.BLKL	1 

$DEF	RAB$W_RFA		 	; RECORD'S FILE ADDRESS 

$DEF	RAB$L_RFA0		  

			.BLKL	1 

$DEF	RAB$W_RFA4		  

			.BLKW	1 

				 		; (RESERVED - RMS RELEASE 1 OPTIMIZES STORES 

			;  TO THE RFA FIELD TO BE A MOVE QUAD, OVERWRITING 

			;  THIS RESERVED WORD) 

			.BLKW	1 

$DEF	RAB$L_CTX		 		; USER CONTEXT 

;-----***** 

			.BLKL	1 

				 		; (SPARE) 

			.BLKW	1 

$DEF	RAB$B_RAC		 		; RECORD ACCESS 

$EQU	RAB$C_SEQ	0		; SEQUENTIAL ACCESS 

$EQU	RAB$C_KEY	1		; KEYED ACCESS 

$EQU	RAB$C_RFA	2		; RFA ACCESS 

			.BLKB	1 

$DEF	RAB$B_TMO		 		; TIME-OUT PERIOD 

			.BLKB	1 

$DEF	RAB$W_USZ		 		; USER BUFFER SIZE 

			.BLKW	1 

$DEF	RAB$W_RSZ		 		; RECORD BUFFER SIZE 

			.BLKW	1 

$DEF	RAB$L_UBF		 		; USER BUFFER ADDRESS 

			.BLKL	1 

$DEF	RAB$L_RBF		 		; RECORD BUFFER ADDRESS 

			.BLKL	1 

$DEF	RAB$L_RHB		 		; RECORD HEADER BUFFER ADDR 

			.BLKL	1 

$DEF	RAB$L_KBF		 		; KEY BUFFER ADDRESS 

$DEF	RAB$L_PBF		 	; PROMPT BUFFER ADDR 

			.BLKL	1 

$DEF	RAB$B_KSZ		 		; KEY BUFFER SIZE 

$DEF	RAB$B_PSZ		 	; PROMPT BUFFER SIZE 

			.BLKB	1 

$DEF	RAB$B_KRF		 		; KEY OF REFERENCE 

			.BLKB	1 

$DEF	RAB$B_MBF		 		; MULTI-BUFFER COUNT 

			.BLKB	1 

$DEF	RAB$B_MBC		 		; MULTI-BLOCK  COUNT 

			.BLKB	1 

$DEF	RAB$L_BKT		 		; BUCKET HASH CODE, VBN, OR RRN 

			.BLKL	1 

$DEF	RAB$L_FAB		 		; RELATED FAB FOR CONNECT 

			.BLKL	1 

				 		; (SPARE) 

			.BLKL	1 

$DEF	RAB$C_BLN

$DEF	RAB$K_BLN				; LENGTH OF RAB 



	$DEFEND	RAB,$GBL,DEF



	.ENDM	$RABDEF

 

; 

;	 NAME BLOCK FIELD DEFINITIONS 

; 

;  THE NAM BLOCK IS USED TO COMMUNICATE OPTIONAL 

;  FILENAME-RELATED INFORMATION 

; 

	.MACRO	$NAMDEF,$GBL



	$DEFINI	NAM,$GBL



 

$DEF	NAM$B_BID		 		; BLOCK ID 

$EQU	NAM$C_BID	2		; CODE FOR NAM BLOCK 

			.BLKB	1 

$DEF	NAM$B_BLN		 		; BLOCK LENGTH 

;+++++++++++++++++++++++ 

;  THE FOLLOWING 3 FIELDS MUST NOT BE REARRANGED RELATIVE TO EACH OTHER 

; 

			.BLKB	1 

$DEF	NAM$B_RSS		 		; RESULTANT STRING AREA SIZE 

$EQU	NAM$C_MAXRSS	128		; MAXIMUM RESULTANT NAME STRING SIZE (NETWORK) 

$EQU	NAM$C_MAXRSSLCL	67		;MAXIMUM RESULTANT NAME STRING SIZE (LOCAL) 

			;  =	NODE (8+1) 

			;	DEV (15+1) (+15 IF REMOTE) 

			;	DIR (3*9 + 4) 

			;	NAME,TYPE,VERSION (9+3+6+2) 

			; OR	NODE+QUOTED (128 MAX) 

			.BLKB	1 

$DEF	NAM$B_RSL		 		; RESULTANT STRING LENGTH 

			.BLKB	1 

$DEF	NAM$L_RSA		 		; RESULTANT STRING AREA ADDRESS 

;----------------------- 

			.BLKL	1 

				 		; SPARE REQUIRED FOR ALIGNMENT 

;+++++++++++++++++++++++ 

;  THE FOLLOWING 3 FIELDS MUST NOT BE REARRANGED RELATIVE TO EACH OTHER 

; 

			.BLKW	1 

$DEF	NAM$B_ESS		 		; ESPANDED STRING AREA SIZE 

			.BLKB	1 

$DEF	NAM$B_ESL		 		; EXPANDED STRING LENGTH 

			.BLKB	1 

$DEF	NAM$L_ESA		 		; EXPANDED STRING AREA ADDRESS 

;----------------------- 

			.BLKL	1 

$DEF	NAM$L_RLF		 		; RELATED FILE FAB ADDR 

			.BLKL	1 

$DEF	NAM$T_DVI		 	; DEVICE ID 

$EQU	NAM$C_DVI	16		; LENGTH OF DVI FIELD 

;+++++***** 

;  THE LOCATION OF THE FOLLOWING FIELDS MUST NOT 

;  BE CHANGED DUE TO THEIR COMMONALITY WITH THE FIB 

			.BLKB	16 

$DEF	NAM$W_FID		 	; FILE ID 

$DEF	NAM$W_FID_NUM		 	; FILE NUMBER 

			.BLKW	1 

$DEF	NAM$W_FID_SEQ		 	; SEQUENCE NUMBER 

			.BLKW	1 

$DEF	NAM$W_FID_RVN		 	; RELATIVE VOLUME NUMBER 

			.BLKW	1 

$DEF	NAM$W_DID		 	; DIRECTORY ID 

$DEF	NAM$W_DID_NUM		 	; FILE NUMBER 

			.BLKW	1 

$DEF	NAM$W_DID_SEQ		 	; SEQUENCE NUMBER 

			.BLKW	1 

$DEF	NAM$W_DID_RVN		 	; RELATIVE VOLUME NUMBER 

			.BLKW	1 

$DEF	NAM$L_WCC		 		; WILD CARD CONTEXT 

			.BLKL	1 

$DEF	NAM$L_FNB		 		; FILE NAME STATUS BITS 

	$VIELD	NAM,0,<-  

		<EXP_VER,,M>- 	; VERSION WAS EXPLICIT 

		<EXP_TYPE,,M>- 	; TYPE WAS EXPLICIT 

		<EXP_NAME,,M>- 	; NAME WAS EXPLICIT 

		<WILD_VER,,M>- 	; VERSION CONTAINED A WILD CARD 

		<WILD_TYPE,,M>- 	; TYPE CONTAINED A WILD CARD 

		<WILD_NAME,,M>- 	; NAME CONTAINED A WILD CARD 

		<EXP_DIR,,M>- 	; DIRECTORY WAS EXPLICIT 

		<EXP_DEV,,M>- 	; DEVICE WAS EXPLICIT 

		<WILDCARD,,M>- 	; FILENAME STRING INCLUDED A WILD CARD 

-			; (INCLUSIVE OR OF OTHER WILD CARD BITS) 

		<,5,M>- 		; (SPARES) 

		<LOWVER,,M>- 	; LOWER NUMBERED VERSION(S) OF FILE EXIST(S) 

		<HIGHVER,,M>- 	; HIGHER 		" 

-			; 

		<,1,M>- 		; (SPARE) 

		<NODE,,M>- 		; FILENAME SPECIFICATION INCLUDED A NODENAME 

		<QUOTED,,M>- 	; FILENAME SPEC INCLUDED A QUOTED STRING 

		<GRP_MBR,,M>- 	; DIRECTORY SPEC WAS OF GROUP-MEMBER FORMAT 

		<WILD_DIR,,M>- 	; DIRECTORY SPEC INCLUDED A WILD CARD 

		<DIR_LVLS,3,M>- 	; NUMBER OF DIRECTORY LEVELS (0=UFD ONLY) 

		<WILD_UFD,,M>- 	; UFD INCLUDED A WILD CARD 

		<WILD_SFD1,,M>- 	; SFD1 INCLUDED A WILD CARD 

		<WILD_SFD2,,M>- 	; SFD2 INCLUDED A WILD CARD 

		<,5,M>- 		; (RESERVED FOR ADDITIONAL DIRECTORY LEVELS) 

		>	

	$VIELD	NAM,0,<-  

		<,24,M>- 		; ALTERNATE DEFINITIONS FOR WILD_UFD AND WILD_SFD1 

		<WILD_GRP,,M>- 	; GROUP CONTAINED A WILD CARD 

		<WILD_MBR,,M>- 	; MEMBER CONTAINED A WILD CARD 

		>	

;-----***** 

			.BLKL	1 

$DEF	NAM$C_BLN

$DEF	NAM$K_BLN				; NAME BLOCK LENGTH 

; 

;  THE FOLLOWING FIELDS CONSTITUTE A LONGER NAME BLOCK THAT IS 

;  SUITABLE FOR USE WITH WILD CARD DIRECTORY OPERATIONS 

; 

$DEF	NAM$L_DWC		 		; DIRECTORY WILD CARD CONTEXT 

$DEF	NAM$B_CURLVL		 		; CURRENT LEVEL 

			.BLKB	1 

			.BLKB	1 

$DEF	NAM$W_PRV_DID		 	; PREVIOUS LEVEL DID 

			.BLKW	3 

$DEF	NAM$L_DIRWCC1		 		; MFD DIRECTORY CONTEXT 

			.BLKL	1 

$DEF	NAM$L_DIRWCC2		 	; UFD DIRECTORY CONTEXT 

			.BLKL	1 

$DEF	NAM$L_DIRWCC3		 	; SFD1 DIRECTORY CONTEXT 

			.BLKL	1 

$DEF	NAM$L_DIRWCC4		 	; SFD2 DIRECTORY CONTEXT 

			.BLKL	1 

$DEF	NAM$C_BLN_DIRWC

$DEF	NAM$K_BLN_DIRWC		 



	$DEFEND	NAM,$GBL,DEF



	.ENDM	$NAMDEF

 

; 

;	 DEFINITIONS FOR ALL XABS 

; 

; 

	.MACRO	$XABDEF,$GBL



	$DEFINI	XAB,$GBL



; 

;  THE FIRST FOUR FIELDS ARE SHARED IN COMMON BETWEEN ALL XABS 

;  AND HENCE ARE DEFINED ONLY ONCE 

;  (THE ONLY EXCEPTION IS THAT THE SPARE WORD MAY BE USED BY SOME XABS) 

; 

$DEF	XAB$B_COD		 		; XAB ID CODE 

			.BLKB	1 

$DEF	XAB$B_BLN		 		; BLOCK LENGTH 

					; MARK POINT FOR REDEFINING SPARE FIELD 

			.BLKB	1 

				 		; (SPARE) 

			.BLKW	1 

$DEF	XAB$L_NXT		 		; XAB CHAIN LINK 

					; MARK POINT IF SPARE FIELD NOT USED 

;++ 

;	FILE HEADER CHARACTERISTICS XAB DEFINITIONS 

; 

;+++++***** 

;  THE FIELDS OF THIS XAB CANNOT BE REARRANGED SINCE 

;  THEY CORRESPOND TO AN ON-DISK STRUCTURE 

; 

$EQU	XAB$C_FHC	29		; XABFHC ID CODE 

			.BLKL	1 

$DEF	XAB$B_RFO		 		; RECORD FORMAT AND FILE ORG 

			.BLKB	1 

$DEF	XAB$B_ATR		 		; RECORD ATTRIBUTES 

			.BLKB	1 

$DEF	XAB$W_LRL		 		; LONGEST RECORD'S LENGTH 

			.BLKW	1 

$DEF	XAB$L_HBK		 		; HI VBN ALLOCATED 

			; (N.B. REVERSED ON DISK!) 

$DEF	XAB$W_HBK0		  

			.BLKW	1 

$DEF	XAB$W_HBK2		  

			.BLKW	1 

$DEF	XAB$L_EBK		 		; EOF VBN 

			; (N.B. REVERSED ON DISK) 

$DEF	XAB$W_EBK0		  

			.BLKW	1 

$DEF	XAB$W_EBK2		  

			.BLKW	1 

$DEF	XAB$W_FFB		 		; FIRST FREE BYTE IN EOF BLOCK 

			.BLKW	1 

$DEF	XAB$B_BKZ		 		; BUCKET SIZE 

			.BLKB	1 

$DEF	XAB$B_HSZ		 		; HEADER SIZE FOR VFC 

			.BLKB	1 

$DEF	XAB$W_MRZ		 		; MAX RECORD SIZE 

			.BLKW	1 

$DEF	XAB$W_DXQ		 		; DEFAULT EXTEND QUANTITY 

			.BLKW	1 

				 		; SPARES (REMAINDER OF USER RECORD ATTRIBUTES) 

;-----***** 

			.BLKB	12 

$DEF	XAB$L_SBN		 		; STARTING LBN IF CONTIGUOUS 

			.BLKL	1 

$DEF	XAB$C_FHCLEN

$DEF	XAB$K_FHCLEN			; LENGTH OF XABFHC 

;-- 

;++ 

; 

;	ALLOCATION XAB DEFINITIONS 

; 

; 

;+++++***** 

;  THE FIELDS THRU BKZ CANNOT BE REARRANGED DUE TO 

;  THEIR COMMONALITY WITH FAB 

$EQU	XAB$C_ALL	20		; XABALL ID CODE 

	. = 4 		; HAS SAME COD, BLN, SPARE, AND NXT FIELD 

			; AS ALL XABS 

			.BLKL	1 

$DEF	XAB$B_AOP		 		; ALLOCATION OPTIONS 

	$VIELD	XAB,0,<-  

		<HRD,,M>- 		; FAIL IF REQUESTED ALIGNMENT IMPOSSIBLE 

		<ONC,,M>- 		; LOCATE ALLOCATED SPACE WITHIN A CYLINDER 

		<,4,M>- 		; (SPARES) 

		<CTG,,M>- 		; CONTIGUOUS ALLOCATION 

		<CBT,,M>- 		;  CONTIGUOUS ALLLOCATION, BEST TRY 

		>	

			.BLKB	1 

$DEF	XAB$B_ALN		 		; ALIGNMENT TYPE 

$EQU	XAB$C_ANY	0		; ANY ALLOCATION O.K. 

$EQU	XAB$C_CYL	1		; CYLINDER BOUNDARY 

$EQU	XAB$C_LBN	2		; ALLOCATE AT SPECIFIED LBN 

$EQU	XAB$C_VBN	3		; ALLOCATE NEAR SPECIFIED VBN 

$EQU	XAB$C_RFI	4		; ALLOCATE NEAR RELATED FILE 

			.BLKB	1 

$DEF	XAB$W_VOL		 		; RELATIVE VOLUME NO. FOR ALLOCATION 

			.BLKW	1 

$DEF	XAB$L_LOC		 		; ALLOCATION LOCATION 

			.BLKL	1 

$DEF	XAB$L_ALQ		 		; ALLOCATION QUANTITY 

			.BLKL	1 

$DEF	XAB$W_DEQ		 		; DEFAULT ALLOCATION QUANTITY 

			.BLKW	1 

				 		; BUCKET SIZE FOR AREA (NOTE: FIELD NAME IS BKZ, 

			; DEFINED ABOVE IN THE FHC TYPE XAB, AND HAVING 

			; THE SAME OFFSET, OF COURSE) 

;-----***** 

			.BLKB	1 

$DEF	XAB$B_AID		 		; AREA ID NUMBER 

			.BLKB	1 

$DEF	XAB$W_RFI		 	; RELATED FILE ID 

$DEF	XAB$W_RFI0		 	; FILE NUMBER 

			.BLKW	1 

$DEF	XAB$W_RFI2		 	; SEQ NUMBER 

			.BLKW	1 

$DEF	XAB$W_RFI4		 	; REV NUMBER 

			.BLKW	1 

				 		; (SPARE) 

			.BLKW	1 

$DEF	XAB$C_ALLLEN

$DEF	XAB$K_ALLLEN			; LENGTH OF XABALL 

;-- 

;++ 

; 

;	DATE/TIME XAB DEFINITIONS 

; 

$EQU	XAB$C_DAT	18		; XABDAT ID CODE 

$EQU	XAB$C_RDT	30		; XABRDT ID CODE 

	. = 4 		; HAS SAME COD, BLN, SPARE, AND NEXT 

			; FIELDS AS ALL XABS 

			.BLKW	2 

$DEF	XAB$W_RVN		 		; REVISION # 

			.BLKW	1 

				 		; SPARE 

			.BLKW	1 

$DEF	XAB$Q_RDT		 	; REVISION DATE & TIME 

$DEF	XAB$L_RDT0		  

			.BLKL	1 

$DEF	XAB$L_RDT4		  

			.BLKL	1 

$DEF	XAB$C_RDTLEN

$DEF	XAB$K_RDTLEN			; LENGTH OF RDT XAB 

$DEF	XAB$Q_CDT		 	; CREATION DATE & TIME 

$DEF	XAB$L_CDT0		  

			.BLKL	1 

$DEF	XAB$L_CDT4		  

			.BLKL	1 

$DEF	XAB$Q_EDT		 	; EXPIRATION DATE & TIME 

$DEF	XAB$L_EDT0		  

			.BLKL	1 

$DEF	XAB$L_EDT4		  

			.BLKL	1 

$DEF	XAB$C_DATLEN

$DEF	XAB$K_DATLEN			; LENGTH OF XABDAT 

;-- 

;++ 

; 

;	PROTECTION XAB FIELD DEFINITIONS 

; 

; 

$EQU	XAB$C_PRO	19		; XABPRO ID CODE 

	. = 4 		; HAS COD, BLN, AND NXT 

			; FIELDS IN COMMON WITH OTHER XABS 

			.BLKL	1 

$DEF	XAB$W_PRO		 		; PROTECTION MASK 

	$VIELD	XAB,0,<-  

		<SYS,4,>- 		; SYSTEM 

		<OWN,4,>- 		; OWNER 

		<GRP,4,>- 		; GROUP 

		<WLD,4,>- 		; WORLD 

		>	

	$VIELD	XAB,0,<-  

		<NOREAD,,M>- 	; DENY READ ACCESS 

		<NOWRITE,,M>- 	; DENY WRITE ACCESS 

		<NOEXE,,M>- 		; DENY EXECUTION ACCESS 

		<NODEL,,M>- 		; DENY DELETE ACCESS 

		>	

			.BLKW	1 

				 		; (SPARE) 

			.BLKW	1 

$DEF	XAB$L_UIC		 		; UIC CODE 

$DEF	XAB$W_MBM		 	; MEMBER CODE 

			.BLKW	1 

$DEF	XAB$W_GRP		 	; GROUP CODE 

			.BLKW	1 

$DEF	XAB$C_PROLEN

$DEF	XAB$K_PROLEN			; XABPRO LENGTH 

;-- 

;++ 

; 

;	TERMINAL CONTROL XAB FIELD DEFINITIONS 

; 

; 

$EQU	XAB$C_TRM	31		;XABTRM ID CODE 

	. = 4 		;HAS SAME COD, BLN, SPARE, AND NXT FIELDS 

			;AS ALL XABS 

			.BLKW	2 

$DEF	XAB$L_AST_ADDR		 	;AST ADDRESS 

			.BLKL	1 

$DEF	XAB$L_AST_PARM		 	;AST PARAMETER 

			.BLKL	1 

$DEF	XAB$W_MBX_CHAN		 	;ASSOCIATED MAILBOX CHANNEL NUMBER 

			.BLKW	1 

$DEF	XAB$B_FLAGS		  

	$VIELD	XAB,0,<-  

		<DSABL_AST,,M>- 	;DISABLE AST 

		>	

			.BLKB	1 

				 		;SPARE 

			.BLKB	1 

				 		;SPARES 

			.BLKL	1 

$DEF	XAB$C_TRMLEN

$DEF	XAB$K_TRMLEN			;LENGTH OF XAB OF TYPE TERMINAL CONTROL 

;-- 

;++ 

; 

;	SUMMARY XAB FIELD DEFINITIONS 

; 

; 

$EQU	XAB$C_SUM	20		; XABSUM ID CODE 

	. = 4 		; HAS SAME COD, BLN, SPARE, AND NXT FIELD 

			; AS ALL XABS 

			.BLKL	1 

$DEF	XAB$B_NOA		 		; NUMBER OF DEFINED AREAS FOR INDEX FILE 

			.BLKB	1 

$DEF	XAB$B_NOK		 		; NUMBER OF DEFINED KEYS FOR INDEX FILE 

			.BLKB	1 

$DEF	XAB$W_PVN		 		; PROLOGUE VERSION NUMBER (RELATIVE AND INDEX FILES) 

			.BLKW	1 

$DEF	XAB$C_SUMLEN

$DEF	XAB$K_SUMLEN			; XABSUM LENGTH 

;-- 

;++ 

; 

;	KEY DEFINITION XAB FIELD DEFINITIONS 

; 

; 

$EQU	XAB$C_KEY	21		; XABKEY ID CODE 

	. = 4 		; HAS SAME COD, BLN, SPARE, AND NXT FIELD 

			; AS ALL XABS 

; 

; THE FIELD LAYOUT OF THE KEY XAB IS SUCH THAT IT MATCHS AS 

; CLOSELY AS POSSIBLE THE LAYOUT OF A KEY DECRIPTOR IN THE 

; INDEX FILE PROLOGUE. THIS IS SO THE CONTENTS MAY BE MOVED 

; BETWEEN THE TWO STRUCTURES AS EFFICIENTLY AS POSSIBLE. 

; 

			.BLKW	2 

$DEF	XAB$B_IAN		 		; INDEX LEVEL AREA NUMBER 

			.BLKB	1 

$DEF	XAB$B_LAN		 		; LOWEST INDEX LEVEL AREA NUMBER 

			.BLKB	1 

$DEF	XAB$B_DAN		 		; DATA LEVEL AREA NUMBER 

			.BLKB	1 

$DEF	XAB$B_LVL		 		; LEVEL OF ROOT BUCKET 

			.BLKB	1 

$DEF	XAB$B_IBS		 		; SIZE OF INDEX BUCKETS IN VIRTUAL BLOCKS 

			.BLKB	1 

$DEF	XAB$B_DBS		 		; SIZE OF DATA BUCKETS IN VIRTUAL BLOCKS 

			.BLKB	1 

$DEF	XAB$L_RVB		 		; ROOT BUCKET START VBN 

			.BLKL	1 

$DEF	XAB$B_FLG		 		; KEY OPTION FLAGS 

	$VIELD	XAB,0,<-  

		<DUP,,M>- 		; DUPLICATE KEY VALUES ALLOWED 

		<CHG,,M>- 		; KEY FIELD MAY CHANGE ON UPDATE 

		<NUL,,M>- 		; NULL KEY VALUE ENABLE 

		<,1,M>-  

		<INI,,M>- 		; INTERNAL FLAG INDICATING THAT INDEX 

-			; HAS NOT BEEN INITIALIZED 

		>	

			.BLKB	1 

$DEF	XAB$B_DTP		 		; KEY FIELD DATA TYPE 

$EQU	XAB$C_STG	0		; STRING 

$EQU	XAB$C_IN2	1		; SIGNED 15 BIT INTEGER (2 BYTES) 

$EQU	XAB$C_BN2	2		; 2 BYTE BINARY 

$EQU	XAB$C_IN4	3		; SIGNED 31 BIT INTEGER (4 BYTES) 

$EQU	XAB$C_BN4	4		; 4 BYTE BINARY 

$EQU	XAB$C_PAC	5		; PACKED DECIMAL (1-16 BYTES) 

			.BLKB	1 

$DEF	XAB$B_NSG		 		; NUMBER OF KEY SEGMENTS 

			.BLKB	1 

$DEF	XAB$B_NUL		 		; NUL KEY CHARACTER 

			.BLKB	1 

$DEF	XAB$B_TKS		 		; TOTAL KEY FIELD SIZE (BYTES) 

			.BLKB	1 

$DEF	XAB$B_REF		 		; KEY OF REFERENCE (0=PRIM KEY, 

			; 1-254 = ALTERNATE KEYS) 

			.BLKB	1 

$DEF	XAB$W_MRL		 		; MINIMUN RECORD LENGTH TO CONTAIN KEY FIELD 

			.BLKW	1 

$DEF	XAB$W_IFL		 		; INDEX BUCKET FILL SIZE (BYTES) 

			.BLKW	1 

$DEF	XAB$W_DFL		 		; DATA BUCKET FIL SIZE (BYTES) 

			.BLKW	1 

$DEF	XAB$W_POS		 	; KEY FIELD RECORD OFFSET POSITIONS 

$DEF	XAB$W_POS0		 	; SEGMENT 0 

			.BLKW	1 

$DEF	XAB$W_POS1		 	; SEGMENT 1 

			.BLKW	1 

$DEF	XAB$W_POS2		 	; SEGMENT 2 

			.BLKW	1 

$DEF	XAB$W_POS3		 	; SEGMENT 3 

			.BLKW	1 

$DEF	XAB$W_POS4		 	; SEGMENT 4 

			.BLKW	1 

$DEF	XAB$W_POS5		 	; SEGMENT 5 

			.BLKW	1 

$DEF	XAB$W_POS6		 	; SEGMENT 6 

			.BLKW	1 

$DEF	XAB$W_POS7		 	; SEGMENT 7 

			.BLKW	1 

$DEF	XAB$B_SIZ		 	; KEY FIELD SEGMENT SIZES 

$DEF	XAB$B_SIZ0		 	; SEGMENT 0 

			.BLKB	1 

$DEF	XAB$B_SIZ1		 	; SEGMENT 1 

			.BLKB	1 

$DEF	XAB$B_SIZ2		 	; SEGMENT 2 

			.BLKB	1 

$DEF	XAB$B_SIZ3		 	; SEGMENT 3 

			.BLKB	1 

$DEF	XAB$B_SIZ4		 	; SEGMENT 4 

			.BLKB	1 

$DEF	XAB$B_SIZ5		 	; SEGMENT 5 

			.BLKB	1 

$DEF	XAB$B_SIZ6		 	; SEGMENT 6 

			.BLKB	1 

$DEF	XAB$B_SIZ7		 	; SEGMENT 7 

			.BLKB	1 

				 		; SPARE 

; 

; THE POSITIONS OF THE ABOVE FIELDS ARE DICTATED BY THE KEY DESCRIPTOR 

; RECORD LAYOUT IN THE INDEX FILE PROLOGUE. 

; 

			.BLKW	1 

$DEF	XAB$L_KNM		 		; POINTER TO 32 CHARACTER KEY NAME BUFFER 

			.BLKL	1 

$DEF	XAB$L_DVB		 		; FIRST DATA BUCKET START VBN 

			.BLKL	1 

$DEF	XAB$C_KEYLEN

$DEF	XAB$K_KEYLEN			; XABKEY LENGTH 

;-- 

;++ 



	$DEFEND	XAB,$GBL,DEF



	.ENDM	$XABDEF

 

; 

;		RMS ESCAPE DEFINITIONS 

; 

;  THE FOLLOWING VALUES IDENTIFY VARIOUS REQUESTS FOR NON-STANDARD RMS 

;  FUNCTIONS.  THEY ARE CURRENTLY INPUT TO THE $MODIFY FUNCTION IN THE 

;  CTX FIELD OF THE FAB ONLY IF THE ESC BIT IS SET IN FOP.  INCORRECT 

;  USE OF THESE CAPABILTIES COULD CAUSE RMS TO FAIL, HENCE GREAT CAUTION 

;  SHOULD BE EXERCISED IN THEIR USE. 

; 

	.MACRO	$RMEDEF,$GBL



	$DEFINI	RME,$GBL



 

$EQU	RME$C_SETRFM	1		; CHANGE RFM, MRS, AND FSZ (IF VFC) IN IFAB ONLY 



	$DEFEND	RME,$GBL,DEF



	.ENDM	$RMEDEF

