!	$BEGIN	RMSUSR,013 

! 

!	RMS USER STRUCTURE DEFINITIONS 

! 

!	MODIFIED BY: 

! 

!	L F LAVERDURE,   14-JUL-78  9:24 

!	E H MARISON,	 19-APR-78  16:20 

!	E H MARISON,	 26-APR-78  13:08 

!	W KOENIG,	 16-JUN-78, ADDED DCT BIT IN KEY XAB 

! 

!	FILE ACCESS BLOCK (FAB) DEFINITIONS 

! 

! 

!...$FABDEF	

 

!+++++***** 

!   THE FIELDS THRU CTX MUST NOT BE MODIFIED DUE TO 

!   COMMONALITY BETWEEN FAB/RAB/XAB 

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

LITERAL	FAB$C_BID	= 3; 		! CODE FOR FAB 

MACRO		FAB$B_BLN	= 1,0,8,0%; 		! BLOCK LEN 

MACRO		FAB$W_IFI	= 2,0,16,0%; 		! INTERNAL FILE INDEX 

			 

						! MOVE TO BIT 6 

MACRO		FAB$V_PPF_RAT	= 2,6,8,0%; 	! RAT VALUE FOR PROCESS-PERMANENT FILES 

LITERAL	FAB$M_PPF_RAT	= 1^14 - 1^6; 

MACRO		FAB$V_PPF_IND	= 2,14,1,0%; 		! INDRECT ACCESS TO PROCESS-PERMANENT FILE 

LITERAL	FAB$M_PPF_IND	= 1^15 - 1^14; 

			! (I.E., RESTRICTED OPERATIONS) 

			

MACRO		FAB$L_FOP	= 4,0,32,0%; 		! FILE OPTIONS 

			 

						! RESERVED FOR ASY (NOT IMPLEMENTED) 

MACRO		FAB$V_MXV	= 4,1,1,0%; 		! MAXIMIZE VERSION NUMBER 

LITERAL	FAB$M_MXV	= 1^2 - 1^1; 

MACRO		FAB$V_SUP	= 4,2,1,0%; 		! SUPERSEDE EXISTING FILE 

LITERAL	FAB$M_SUP	= 1^3 - 1^2; 

MACRO		FAB$V_TMP	= 4,3,1,0%; 		! CREATE TEMPORARY FILE 

LITERAL	FAB$M_TMP	= 1^4 - 1^3; 

MACRO		FAB$V_TMD	= 4,4,1,0%; 		! CREATE TEMP FILE MARKED FOR DELETE 

LITERAL	FAB$M_TMD	= 1^5 - 1^4; 

MACRO		FAB$V_DFW	= 4,5,1,0%; 		! DEFERRED WRITE (REL AND IDX) 

LITERAL	FAB$M_DFW	= 1^6 - 1^5; 

MACRO		FAB$V_SQO	= 4,6,1,0%; 		! SEQUENTIAL ACCESS ONLY 

LITERAL	FAB$M_SQO	= 1^7 - 1^6; 

MACRO		FAB$V_RWO	= 4,7,1,0%; 		! REWIND MT ON OPEN 

LITERAL	FAB$M_RWO	= 1^8 - 1^7; 

MACRO		FAB$V_POS	= 4,8,1,0%; 		! USE NEXT MAGTAPE POSITION 

LITERAL	FAB$M_POS	= 1^9 - 1^8; 

MACRO		FAB$V_WCK	= 4,9,1,0%; 		! WRITE CHECKING 

LITERAL	FAB$M_WCK	= 1^10 - 1^9; 

MACRO		FAB$V_NEF	= 4,10,1,0%; 		! INHIBIT END OF FILE POSITIONING 

LITERAL	FAB$M_NEF	= 1^11 - 1^10; 

MACRO		FAB$V_RWC	= 4,11,1,0%; 		! REWIND MT ON CLOSE 

LITERAL	FAB$M_RWC	= 1^12 - 1^11; 

MACRO		FAB$V_DMO	= 4,12,1,0%; 		! DISMOUNT MT ON CLOSE (NOT IMPLEMENTED) 

LITERAL	FAB$M_DMO	= 1^13 - 1^12; 

MACRO		FAB$V_SPL	= 4,13,1,0%; 		! SPOOL FILE ON CLOSE 

LITERAL	FAB$M_SPL	= 1^14 - 1^13; 

MACRO		FAB$V_SCF	= 4,14,1,0%; 		! SUBMIT COMMAND FILE ON CLOSE 

LITERAL	FAB$M_SCF	= 1^15 - 1^14; 

MACRO		FAB$V_DLT	= 4,15,1,0%; 		! DELETE SUB-OPTION 

LITERAL	FAB$M_DLT	= 1^16 - 1^15; 

MACRO		FAB$V_NFS	= 4,16,1,0%; 		! NON-FILE STRUCTURED OPERATION 

LITERAL	FAB$M_NFS	= 1^17 - 1^16; 

MACRO		FAB$V_UFO	= 4,17,1,0%; 		! USER FILE OPEN - NO RMS OPERATIONS 

LITERAL	FAB$M_UFO	= 1^18 - 1^17; 

MACRO		FAB$V_PPF	= 4,18,1,0%; 		! PROCESS PERMANENT FILE (PIO SEGMENT) 

LITERAL	FAB$M_PPF	= 1^19 - 1^18; 

MACRO		FAB$V_INP	= 4,19,1,0%; 		! PROCESS-PERMANENT FILE IS 'INPUT' 

LITERAL	FAB$M_INP	= 1^20 - 1^19; 

MACRO		FAB$V_CTG	= 4,20,1,0%; 		! CONTIGUOUS EXTENSION 

LITERAL	FAB$M_CTG	= 1^21 - 1^20; 

MACRO		FAB$V_CBT	= 4,21,1,0%; 		! CONTIGUOUS BEST TRY 

LITERAL	FAB$M_CBT	= 1^22 - 1^21; 

MACRO		FAB$V_JNL	= 4,22,1,0%; 		! EXPLICIT LOGGING (NOT IMPLEMENTED) 

LITERAL	FAB$M_JNL	= 1^23 - 1^22; 

MACRO		FAB$V_RCK	= 4,23,1,0%; 		! READ CHECKING 

LITERAL	FAB$M_RCK	= 1^24 - 1^23; 

MACRO		FAB$V_NAM	= 4,24,1,0%; 		! USE NAME BLOCK DVI, DID, AND/OR FID FIELDS FOR OPEN 

LITERAL	FAB$M_NAM	= 1^25 - 1^24; 

MACRO		FAB$V_CIF	= 4,25,1,0%; 		! CREATE IF NON-EXISTENT 

LITERAL	FAB$M_CIF	= 1^26 - 1^25; 

MACRO		FAB$V_UFM	= 4,26,1,0%; 		! USER FILE OPEN MODE (USER IF 1, SUPER IF 0) 

LITERAL	FAB$M_UFM	= 1^27 - 1^26; 

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

			!  (NOTE: THIS BIT MUST IMMEDIATELY PRECEDE ESC) 

MACRO		FAB$V_ESC	= 4,27,1,0%; 		! 'ESCAPE' TO NON-STANDARD FUNCTION ($MODIFY) 

LITERAL	FAB$M_ESC	= 1^28 - 1^27; 

MACRO		FAB$V_TEF	= 4,28,1,0%; 		! TRUNCATE AT EOF ON CLOSE (WRITE-ACCESSED SEQ. DISK FILE ONLY) 

LITERAL	FAB$M_TEF	= 1^29 - 1^28; 

MACRO		FAB$V_OFP	= 4,29,1,0%; 		! OUTPUT FILE PARSE (ONLY NAME TYPE STICKY) 

LITERAL	FAB$M_OFP	= 1^30 - 1^29; 

MACRO		FAB$V_KFO	= 4,30,1,0%; 		! KNOWN FILE OPEN (IMAGE ACTIVATOR ONLY RELEASE 1) 

LITERAL	FAB$M_KFO	= 1^31 - 1^30; 

			

MACRO		FAB$L_STS	= 8,0,32,0%; 		! STATUS 

MACRO		FAB$L_STV	= 12,0,32,0%; 		! STATUS VALUE 

MACRO		FAB$L_ALQ	= 16,0,32,0%; 		! ALLOCATION QUANTITY 

MACRO		FAB$W_DEQ	= 20,0,16,0%; 		! DEFAULT ALLOCATION QUANTITY 

MACRO		FAB$B_FAC	= 22,0,8,0%; 		! FILE ACCESS 

			 

MACRO		FAB$V_PUT	= 22,0,1,0%; 		! PUT ACCESS 

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

MACRO		FAB$V_GET	= 22,1,1,0%; 		! GET ACCESS 

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

MACRO		FAB$V_DEL	= 22,2,1,0%; 		! DELETE ACCESS 

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

MACRO		FAB$V_UPD	= 22,3,1,0%; 		! UPDATE ACCESS 

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

MACRO		FAB$V_TRN	= 22,4,1,0%; 		! TRUNCATE ACCESS 

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

MACRO		FAB$V_BIO	= 22,5,1,0%; 		! BLOCK I/O ACCESS 

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

MACRO		FAB$V_BRO	= 22,6,1,0%; 		! BLOCK AND RECORD I/O ACCESS 

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

MACRO		FAB$V_EXE	= 22,7,1,0%; 		! EXECUTE ACCESS (CALLER MUST BE EXEC OR KERNEL MODE, 

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

			!  UFO MUST ALSO BE SET) 

			

MACRO		FAB$B_SHR	= 23,0,8,0%; 		! FILE SHARING 

			 

MACRO		FAB$V_SHRPUT	= 23,0,1,0%; 	! PUT ACCESS 

LITERAL	FAB$M_SHRPUT	= 1^1 - 1^0; 

MACRO		FAB$V_SHRGET	= 23,1,1,0%; 	! GET ACCESS 

LITERAL	FAB$M_SHRGET	= 1^2 - 1^1; 

MACRO		FAB$V_SHRDEL	= 23,2,1,0%; 	! DELETE ACCESS 

LITERAL	FAB$M_SHRDEL	= 1^3 - 1^2; 

MACRO		FAB$V_SHRUPD	= 23,3,1,0%; 	! UPDATE ACCESS 

LITERAL	FAB$M_SHRUPD	= 1^4 - 1^3; 

MACRO		FAB$V_MSE	= 23,4,1,0%; 		! MULTI-STREAM CONNECTS ENABLED 

LITERAL	FAB$M_MSE	= 1^5 - 1^4; 

MACRO		FAB$V_NIL	= 23,5,1,0%; 		! NO SHARING 

LITERAL	FAB$M_NIL	= 1^6 - 1^5; 

MACRO		FAB$V_UPI	= 23,6,1,0%; 		! USER PROVIDED INTERLOCKING (ALLOWS MULTIPLE 

LITERAL	FAB$M_UPI	= 1^7 - 1^6; 

			!  WRITERS TO SEQ. FILES) 

			

MACRO		FAB$L_CTX	= 24,0,32,0%; 		! USER CONTEXT 

!-----***** 

MACRO		FAB$B_RTV	= 28,0,8,1%; 	! RETRIEVAL WINDOW SIZE 

MACRO		FAB$B_ORG	= 29,0,8,0%; 		! FILE ORGANIZATION 

			 

				 

MACRO		FAB$V_ORG	= 29,4,4,0%;  

			

LITERAL	FAB$C_SEQ	= 0; 		! SEQUENTIAL 

LITERAL	FAB$C_REL	= 16; 		! RELATIVE 

LITERAL	FAB$C_IDX	= 32; 		! INDEXED 

LITERAL	FAB$C_HSH	= 48; 		! HASHED 

MACRO		FAB$B_RAT	= 30,0,8,0%; 		! RECORD FORMAT 

			 

MACRO		FAB$V_FTN	= 30,0,1,0%; 		! FORTRAN CARRIAGE-CTL 

LITERAL	FAB$M_FTN	= 1^1 - 1^0; 

MACRO		FAB$V_CR	= 30,1,1,0%; 		! LF-RECORD-CR CARRIAGE CTL 

LITERAL	FAB$M_CR	= 1^2 - 1^1; 

MACRO		FAB$V_PRN	= 30,2,1,0%; 		! PRINT-FILE CARRIAGE CTL 

LITERAL	FAB$M_PRN	= 1^3 - 1^2; 

MACRO		FAB$V_BLK	= 30,3,1,0%; 		! RECORDS DON'T CROSS BLOCK BOUNDARIES 

LITERAL	FAB$M_BLK	= 1^4 - 1^3; 

			

MACRO		FAB$B_RFM	= 31,0,8,0%; 		! RECORD FORMAT 

LITERAL	FAB$C_RFM_DFLT	= 2; 		! VAR LEN IS DEFAULT 

LITERAL	FAB$C_UDF	= 0; 		! UNDEFINED 

LITERAL	FAB$C_FIX	= 1; 		! FIXED LENGTH RECORDS 

LITERAL	FAB$C_VAR	= 2; 		! VARIABLE LENGTH RECORDS 

LITERAL	FAB$C_VFC	= 3; 		! VARIABLE FIXED CONTROL 

LITERAL	FAB$C_MAXRFM	= 3; 		! MAXIMUM RFM SUPPORTED 

MACRO		FAB$L_JNL	= 32,0,32,0%; 		! LCB ADDRESS 

MACRO		FAB$L_XAB	= 36,0,32,0%; 		! XAB ADDRESS 

MACRO		FAB$L_NAM	= 40,0,32,0%; 		! NAM BLOCK ADDRESS 

MACRO		FAB$L_FNA	= 44,0,32,0%; 		! FILE NAME STRING ADDRESS 

MACRO		FAB$L_DNA	= 48,0,32,0%; 		! DEFAULT FILE NAME STRING ADDR 

MACRO		FAB$B_FNS	= 52,0,8,0%; 		! FILE NAME STRING SIZE 

MACRO		FAB$B_DNS	= 53,0,8,0%; 		! DEFAULT NAME STRING SIZE 

MACRO		FAB$W_MRS	= 54,0,16,0%; 		! MAXIMUM RECORD SIZE 

MACRO		FAB$L_MRN	= 56,0,32,0%; 		! MAXIMUM RECORD NUMBER 

MACRO		FAB$W_BLS	= 60,0,16,0%; 		! BLOCKSIZE FOR TAPE 

MACRO		FAB$B_BKS	= 62,0,8,0%; 		! BUCKET SIZE 

MACRO		FAB$B_FSZ	= 63,0,8,0%; 		! FIXED HEADER SIZE 

MACRO		FAB$L_DEV	= 64,0,32,0%; 		! DEVICE CHARACTERISTICS 

MACRO		FAB$L_SDC	= 68,0,32,0%; 		! SPOOLING DEVICE CHARACTERISTICS 

LITERAL	FAB$C_BLN	= 80; 

LITERAL	FAB$K_BLN	= 80; 			! LENGTH OF FAB 



 

! 

!	 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 

! 

!...$RABDEF	

 

!+++++***** 

!  THE FIELDS THRU CTX CANNOT BE CHANGED DUE TO COMMONALITY 

!  WITH THE FAB 

! 

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

LITERAL	RAB$C_BID	= 1; 		! CODE FOR RAB 

MACRO		RAB$B_BLN	= 1,0,8,0%; 		! BLOCK LENGTH 

MACRO		RAB$W_ISI	= 2,0,16,0%; 		! INTERNAL STREAM INDEX 

			! (IFI IN FAB) 

			 

						! MOVE TO BIT 6 

MACRO		RAB$V_PPF_RAT	= 2,6,8,0%; 	! RAT VALUE FOR PROCESS-PERMANENT FILES 

LITERAL	RAB$M_PPF_RAT	= 1^14 - 1^6; 

MACRO		RAB$V_PPF_IND	= 2,14,1,0%; 	! INDIRECT ACCESS TO PROCESS-PERMANENT FILE 

LITERAL	RAB$M_PPF_IND	= 1^15 - 1^14; 

			! (I.E., RESTRICTED OPERATIONS) 

			

MACRO		RAB$L_ROP	= 4,0,32,0%; 		! RECORD OPTIONS 

			 

			! THE FOLLOWING BITS MAY BE 

			! INPUT TO VARIOUS RAB-RELATED 

			! OPERATIONS 

			! 

MACRO		RAB$V_ASY	= 4,0,1,0%; 		! ASYNCHRONOUS OPERATIONS 

LITERAL	RAB$M_ASY	= 1^1 - 1^0; 

MACRO		RAB$V_TPT	= 4,1,1,0%; 		! TRUNCATE PUT  -  ALLOW SEQUENTIAL PUT NOT AT 

LITERAL	RAB$M_TPT	= 1^2 - 1^1; 

			!   EOF, THUS TRUNCATING FILE (SEQ. ORG ONLY) 

						! (SPARE) 

MACRO		RAB$V_UIF	= 4,4,1,0%; 		! UPDATE IF EXISTENT 

LITERAL	RAB$M_UIF	= 1^5 - 1^4; 

MACRO		RAB$V_MAS	= 4,5,1,0%; 		! MASS-INSERT MODE 

LITERAL	RAB$M_MAS	= 1^6 - 1^5; 

MACRO		RAB$V_FDL	= 4,6,1,0%; 		! FAST RECORD DELETION 

LITERAL	RAB$M_FDL	= 1^7 - 1^6; 

MACRO		RAB$V_HSH	= 4,7,1,0%; 		! USE HASH CODE IN BKT 

LITERAL	RAB$M_HSH	= 1^8 - 1^7; 

			! 

MACRO		RAB$V_EOF	= 4,8,1,0%; 		! CONNECT TO EOF 

LITERAL	RAB$M_EOF	= 1^9 - 1^8; 

MACRO		RAB$V_RAH	= 4,9,1,0%; 		! READ AHEAD 

LITERAL	RAB$M_RAH	= 1^10 - 1^9; 

MACRO		RAB$V_WBH	= 4,10,1,0%; 		! WRITE BEHIND 

LITERAL	RAB$M_WBH	= 1^11 - 1^10; 

MACRO		RAB$V_BIO	= 4,11,1,0%; 		! CONNECT FOR BIO ONLY 

LITERAL	RAB$M_BIO	= 1^12 - 1^11; 

						! (1 SPARE) 

MACRO		RAB$V_LOA	= 4,13,1,0%; 		! USE BUCKET FILL PERCENTAGE 

LITERAL	RAB$M_LOA	= 1^14 - 1^13; 

MACRO		RAB$V_LIM	= 4,14,1,0%; 		! COMPARE FOR KEY LIMIT REACHED ON $GET/$FIND SEQ. (IDX ONLY) 

LITERAL	RAB$M_LIM	= 1^15 - 1^14; 

						! (1 SPARE) 

			! 

			! THE FOLLOWING BITS ARE INPUT TO 

			! $FIND OR $GET 

			! (SEPARATE BYTE) 

			! 

MACRO		RAB$V_LOC	= 4,16,1,0%; 		! USE LOCATE MODE 

LITERAL	RAB$M_LOC	= 1^17 - 1^16; 

MACRO		RAB$V_WAT	= 4,17,1,0%; 		! WAIT IF RECORD NOT AVAILABLE 

LITERAL	RAB$M_WAT	= 1^18 - 1^17; 

			! (NOT IN RELEASE 1) 

MACRO		RAB$V_ULK	= 4,18,1,0%; 		! MANUAL UNLOCKING 

LITERAL	RAB$M_ULK	= 1^19 - 1^18; 

MACRO		RAB$V_RLK	= 4,19,1,0%; 		! ALLOW READERS FOR THIS LOCKED RECORD 

LITERAL	RAB$M_RLK	= 1^20 - 1^19; 

MACRO		RAB$V_NLK	= 4,20,1,0%; 		! DO NOT LOCK RECORD 

LITERAL	RAB$M_NLK	= 1^21 - 1^20; 

MACRO		RAB$V_KGE	= 4,21,1,0%; 		! KEY > OR = 

LITERAL	RAB$M_KGE	= 1^22 - 1^21; 

MACRO		RAB$V_KGT	= 4,22,1,0%; 		! KEY GREATER THAN 

LITERAL	RAB$M_KGT	= 1^23 - 1^22; 

MACRO		RAB$V_NXR	= 4,23,1,0%; 		! GET NON-EXISTENT RECORD 

LITERAL	RAB$M_NXR	= 1^24 - 1^23; 

			! 

			!  THE FOLLOWING BITS ARE TERMINAL QUALIFIERS ONLY 

			!  (SEPARATE BYTE) 

			! 

MACRO		RAB$V_RNE	= 4,24,1,0%; 		! READ NO ECHO 

LITERAL	RAB$M_RNE	= 1^25 - 1^24; 

MACRO		RAB$V_TMO	= 4,25,1,0%; 		! USE TIME-OUT PERIOD 

LITERAL	RAB$M_TMO	= 1^26 - 1^25; 

MACRO		RAB$V_CVT	= 4,26,1,0%; 		! CONVERT TO UPPER CASE 

LITERAL	RAB$M_CVT	= 1^27 - 1^26; 

MACRO		RAB$V_RNF	= 4,27,1,0%; 		! READ NO FILTER 

LITERAL	RAB$M_RNF	= 1^28 - 1^27; 

						! SPARE (FOR DSABLMBX IF EVER SUPPORTED) 

MACRO		RAB$V_PTA	= 4,29,1,0%; 		! PURGE TYPE AHEAD 

LITERAL	RAB$M_PTA	= 1^30 - 1^29; 

MACRO		RAB$V_PMT	= 4,30,1,0%; 		! USE PROMPT BUFFER 

LITERAL	RAB$M_PMT	= 1^31 - 1^30; 

MACRO		RAB$V_CCO	= 4,31,1,0%; 		! CANCEL CONTROL O ON OUTPUT 

LITERAL	RAB$M_CCO	= 1^32 - 1^31; 

			

MACRO		RAB$B_ROP1	= 5,0,8,0%; 	! VARIOUS OPTIONS 

MACRO		RAB$B_ROP2	= 6,0,8,0%; 	! GET/FIND OPTIONS 

MACRO		RAB$B_ROP3	= 7,0,8,0%; 	! TERMINAL READ OPTIONS 

! 

MACRO		RAB$L_STS	= 8,0,32,0%; 		! STATUS 

MACRO		RAB$L_STV	= 12,0,32,0%; 		! STATUS VALUE 

MACRO		RAB$W_RFA	= 16,0,0,0%; 	! RECORD'S FILE ADDRESS 

LITERAL	RAB$S_RFA	= 6; 

MACRO		RAB$L_RFA0	= 16,0,32,0%;  

MACRO		RAB$W_RFA4	= 20,0,16,0%;  

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

			!  THIS RESERVED WORD) 

MACRO		RAB$L_CTX	= 24,0,32,0%; 		! USER CONTEXT 

!-----***** 

MACRO		RAB$B_RAC	= 30,0,8,0%; 		! RECORD ACCESS 

LITERAL	RAB$C_SEQ	= 0; 		! SEQUENTIAL ACCESS 

LITERAL	RAB$C_KEY	= 1; 		! KEYED ACCESS 

LITERAL	RAB$C_RFA	= 2; 		! RFA ACCESS 

MACRO		RAB$B_TMO	= 31,0,8,0%; 		! TIME-OUT PERIOD 

MACRO		RAB$W_USZ	= 32,0,16,0%; 		! USER BUFFER SIZE 

MACRO		RAB$W_RSZ	= 34,0,16,0%; 		! RECORD BUFFER SIZE 

MACRO		RAB$L_UBF	= 36,0,32,0%; 		! USER BUFFER ADDRESS 

MACRO		RAB$L_RBF	= 40,0,32,0%; 		! RECORD BUFFER ADDRESS 

MACRO		RAB$L_RHB	= 44,0,32,0%; 		! RECORD HEADER BUFFER ADDR 

MACRO		RAB$L_KBF	= 48,0,32,0%; 		! KEY BUFFER ADDRESS 

MACRO		RAB$L_PBF	= 48,0,32,0%; 	! PROMPT BUFFER ADDR 

MACRO		RAB$B_KSZ	= 52,0,8,0%; 		! KEY BUFFER SIZE 

MACRO		RAB$B_PSZ	= 52,0,8,0%; 	! PROMPT BUFFER SIZE 

MACRO		RAB$B_KRF	= 53,0,8,0%; 		! KEY OF REFERENCE 

MACRO		RAB$B_MBF	= 54,0,8,1%; 	! MULTI-BUFFER COUNT 

MACRO		RAB$B_MBC	= 55,0,8,0%; 		! MULTI-BLOCK  COUNT 

MACRO		RAB$L_BKT	= 56,0,32,0%; 		! BUCKET HASH CODE, VBN, OR RRN 

MACRO		RAB$L_DCT	= 56,0,32,0%; 	! DUPLICATES COUNT ON KEY ACCESSED ON ALTERNATE KEY 

MACRO		RAB$L_FAB	= 60,0,32,0%; 		! RELATED FAB FOR CONNECT 

LITERAL	RAB$C_BLN	= 68; 

LITERAL	RAB$K_BLN	= 68; 			! LENGTH OF RAB 



 

! 

!	 NAME BLOCK FIELD DEFINITIONS 

! 

!  THE NAM BLOCK IS USED TO COMMUNICATE OPTIONAL 

!  FILENAME-RELATED INFORMATION 

! 

!...$NAMDEF	

 

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

LITERAL	NAM$C_BID	= 2; 		! CODE FOR NAM BLOCK 

MACRO		NAM$B_BLN	= 1,0,8,0%; 		! BLOCK LENGTH 

!+++++++++++++++++++++++ 

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

! 

MACRO		NAM$B_RSS	= 2,0,8,0%; 		! RESULTANT STRING AREA SIZE 

LITERAL	NAM$C_MAXRSS	= 128; 		! MAXIMUM RESULTANT NAME STRING SIZE (NETWORK) 

LITERAL	NAM$C_MAXRSSLCL	= 96; 		!MAXIMUM RESULTANT NAME STRING SIZE (LOCAL) 

			!	DEV (15+1) 

			!	DIR (60) 

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

MACRO		NAM$B_RSL	= 3,0,8,0%; 		! RESULTANT STRING LENGTH 

MACRO		NAM$L_RSA	= 4,0,32,0%; 		! RESULTANT STRING AREA ADDRESS 

!----------------------- 

!+++++++++++++++++++++++ 

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

! 

MACRO		NAM$B_ESS	= 10,0,8,0%; 		! ESPANDED STRING AREA SIZE 

MACRO		NAM$B_ESL	= 11,0,8,0%; 		! EXPANDED STRING LENGTH 

MACRO		NAM$L_ESA	= 12,0,32,0%; 		! EXPANDED STRING AREA ADDRESS 

!----------------------- 

MACRO		NAM$L_RLF	= 16,0,32,0%; 		! RELATED FILE NAM BLOCK ADDR 

MACRO		NAM$T_DVI	= 20,0,0,0%; 	! DEVICE ID 

LITERAL	NAM$S_DVI	= 16; 

LITERAL	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 

MACRO		NAM$W_FID	= 36,0,0,0%; 	! FILE ID 

LITERAL	NAM$S_FID	= 6; 

MACRO		NAM$W_FID_NUM	= 36,0,16,0%; 	! FILE NUMBER 

MACRO		NAM$W_FID_SEQ	= 38,0,16,0%; 	! SEQUENCE NUMBER 

MACRO		NAM$W_FID_RVN	= 40,0,16,0%; 	! RELATIVE VOLUME NUMBER 

MACRO		NAM$W_DID	= 42,0,0,0%; 	! DIRECTORY ID 

LITERAL	NAM$S_DID	= 6; 

MACRO		NAM$W_DID_NUM	= 42,0,16,0%; 	! FILE NUMBER 

MACRO		NAM$W_DID_SEQ	= 44,0,16,0%; 	! SEQUENCE NUMBER 

MACRO		NAM$W_DID_RVN	= 46,0,16,0%; 	! RELATIVE VOLUME NUMBER 

MACRO		NAM$L_WCC	= 48,0,32,0%; 		! WILD CARD CONTEXT 

MACRO		NAM$L_FNB	= 52,0,32,0%; 		! FILE NAME STATUS BITS 

			 

MACRO		NAM$V_EXP_VER	= 52,0,1,0%; 	! VERSION WAS EXPLICIT 

LITERAL	NAM$M_EXP_VER	= 1^1 - 1^0; 

MACRO		NAM$V_EXP_TYPE	= 52,1,1,0%; 	! TYPE WAS EXPLICIT 

LITERAL	NAM$M_EXP_TYPE	= 1^2 - 1^1; 

MACRO		NAM$V_EXP_NAME	= 52,2,1,0%; 	! NAME WAS EXPLICIT 

LITERAL	NAM$M_EXP_NAME	= 1^3 - 1^2; 

MACRO		NAM$V_WILD_VER	= 52,3,1,0%; 	! VERSION CONTAINED A WILD CARD 

LITERAL	NAM$M_WILD_VER	= 1^4 - 1^3; 

MACRO		NAM$V_WILD_TYPE	= 52,4,1,0%; 	! TYPE CONTAINED A WILD CARD 

LITERAL	NAM$M_WILD_TYPE	= 1^5 - 1^4; 

MACRO		NAM$V_WILD_NAME	= 52,5,1,0%; 	! NAME CONTAINED A WILD CARD 

LITERAL	NAM$M_WILD_NAME	= 1^6 - 1^5; 

MACRO		NAM$V_EXP_DIR	= 52,6,1,0%; 	! DIRECTORY WAS EXPLICIT 

LITERAL	NAM$M_EXP_DIR	= 1^7 - 1^6; 

MACRO		NAM$V_EXP_DEV	= 52,7,1,0%; 	! DEVICE WAS EXPLICIT 

LITERAL	NAM$M_EXP_DEV	= 1^8 - 1^7; 

MACRO		NAM$V_WILDCARD	= 52,8,1,0%; 	! FILENAME STRING INCLUDED A WILD CARD 

LITERAL	NAM$M_WILDCARD	= 1^9 - 1^8; 

			! (INCLUSIVE OR OF OTHER WILD CARD BITS) 

						! (SPARES) 

MACRO		NAM$V_LOWVER	= 52,14,1,0%; 	! LOWER NUMBERED VERSION(S) OF FILE EXIST(S) 

LITERAL	NAM$M_LOWVER	= 1^15 - 1^14; 

MACRO		NAM$V_HIGHVER	= 52,15,1,0%; 	! HIGHER 		" 

LITERAL	NAM$M_HIGHVER	= 1^16 - 1^15; 

			! 

MACRO		NAM$V_PPF	= 52,16,1,0%; 		! PROCESS-PERMANENT FILE REFERENCED INDIRECTLY 

LITERAL	NAM$M_PPF	= 1^17 - 1^16; 

MACRO		NAM$V_NODE	= 52,17,1,0%; 		! FILENAME SPECIFICATION INCLUDED A NODENAME 

LITERAL	NAM$M_NODE	= 1^18 - 1^17; 

MACRO		NAM$V_QUOTED	= 52,18,1,0%; 	! FILENAME SPEC INCLUDED A QUOTED STRING 

LITERAL	NAM$M_QUOTED	= 1^19 - 1^18; 

MACRO		NAM$V_GRP_MBR	= 52,19,1,0%; 	! DIRECTORY SPEC WAS OF GROUP-MEMBER FORMAT 

LITERAL	NAM$M_GRP_MBR	= 1^20 - 1^19; 

MACRO		NAM$V_WILD_DIR	= 52,20,1,0%; 	! DIRECTORY SPEC INCLUDED A WILD CARD 

LITERAL	NAM$M_WILD_DIR	= 1^21 - 1^20; 

MACRO		NAM$V_DIR_LVLS	= 52,21,3,0%; 	! NUMBER OF DIRECTORY LEVELS (0=UFD ONLY) 

LITERAL	NAM$M_DIR_LVLS	= 1^24 - 1^21; 

			

			 

						! SEPARATE BYTE FOR WILD CARD DIRECTORY FLAGS 

MACRO		NAM$V_WILD_UFD	= 52,24,1,0%; 	! UFD INCLUDED A WILD CARD 

LITERAL	NAM$M_WILD_UFD	= 1^25 - 1^24; 

MACRO		NAM$V_WILD_SFD1	= 52,25,1,0%; 	! SFD1 INCLUDED A WILD CARD 

LITERAL	NAM$M_WILD_SFD1	= 1^26 - 1^25; 

MACRO		NAM$V_WILD_SFD2	= 52,26,1,0%; 	! SFD2 INCLUDED A WILD CARD 

LITERAL	NAM$M_WILD_SFD2	= 1^27 - 1^26; 

MACRO		NAM$V_WILD_SFD3	= 52,27,1,0%; 	! SFD3 INCLUDED A WILD CARD 

LITERAL	NAM$M_WILD_SFD3	= 1^28 - 1^27; 

MACRO		NAM$V_WILD_SFD4	= 52,28,1,0%; 	! SFD4 INCLUDED A WILD CARD 

LITERAL	NAM$M_WILD_SFD4	= 1^29 - 1^28; 

MACRO		NAM$V_WILD_SFD5	= 52,29,1,0%; 	! SFD5 INCLUDED A WILD CARD 

LITERAL	NAM$M_WILD_SFD5	= 1^30 - 1^29; 

MACRO		NAM$V_WILD_SFD6	= 52,30,1,0%; 	! SFD6 INCLUDED A WILD CARD 

LITERAL	NAM$M_WILD_SFD6	= 1^31 - 1^30; 

MACRO		NAM$V_WILD_SFD7	= 52,31,1,0%; 	! SFD7 INCLUDED A WILD CARD 

LITERAL	NAM$M_WILD_SFD7	= 1^32 - 1^31; 

			

			 

						! ALTERNATE DEFINITIONS FOR WILD_UFD AND WILD_SFD1 

MACRO		NAM$V_WILD_GRP	= 52,24,1,0%; 	! GROUP CONTAINED A WILD CARD 

LITERAL	NAM$M_WILD_GRP	= 1^25 - 1^24; 

MACRO		NAM$V_WILD_MBR	= 52,25,1,0%; 	! MEMBER CONTAINED A WILD CARD 

LITERAL	NAM$M_WILD_MBR	= 1^26 - 1^25; 

			

!-----***** 

LITERAL	NAM$C_BLN	= 56; 

LITERAL	NAM$K_BLN	= 56; 			! NAME BLOCK LENGTH 

! 

!  THE FOLLOWING FIELDS CONSTITUTE A LONGER NAME BLOCK THAT IS 

!  SUITABLE FOR USE WITH WILD CARD DIRECTORY OPERATIONS 

! 

MACRO		NAM$L_DWC	= 56,0,0,0%; 		! DIRECTORY WILD CARD CONTEXT 

LITERAL	NAM$S_DWC	= 24; 

MACRO		NAM$B_CURLVL	= 56,0,8,0%; 		! CURRENT LEVEL 

MACRO		NAM$W_PRV_DID	= 58,0,0,0%; 	! PREVIOUS LEVEL DID 

LITERAL	NAM$S_PRV_DID	= 6; 

MACRO		NAM$L_DIRWCC1	= 64,0,32,0%; 		! MFD DIRECTORY CONTEXT 

MACRO		NAM$L_DIRWCC2	= 68,0,32,0%; 	! UFD DIRECTORY CONTEXT 

MACRO		NAM$L_DIRWCC3	= 72,0,32,0%; 	! SFD1 DIRECTORY CONTEXT 

MACRO		NAM$L_DIRWCC4	= 76,0,32,0%; 	! SFD2 DIRECTORY CONTEXT 

LITERAL	NAM$C_BLN_DIRWC	= 80; 

LITERAL	NAM$K_BLN_DIRWC	= 80; 	 



 

! 

!	 DEFINITIONS FOR ALL XABS 

!		$XABDEF 

! 

! 

!...$XABDEF	

! 

!  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) 

! 

MACRO		XAB$B_COD	= 0,0,8,0%; 		! XAB ID CODE 

MACRO		XAB$B_BLN	= 1,0,8,0%; 		! BLOCK LENGTH 

MACRO		XAB$L_NXT	= 4,0,32,0%; 		! XAB CHAIN LINK 

					!UP TILL NOW COMMON AMONG ALL XABS 

			!WITH POSSIBLE EXCEPTION OF SPARE FIELD 

MACRO		XAB$W_RVN	= 8,0,16,0%;  

MACRO		XAB$Q_RDT	= 12,0,0,1%;  

LITERAL	XAB$S_RDT	= 8; 

MACRO		XAB$L_RDT0	= 12,0,32,0%;  

MACRO		XAB$L_RDT4	= 16,0,32,1%;  

			!COMMON AMONG DAT AND RDT XABS 

					!BACK TO END OF TOTAL COMMONALITY 

MACRO		XAB$B_BKZ	= 22,0,8,0%; 		!COMMON TO FHC AND ALQ XABS 



!++ 

!	FILE HEADER CHARACTERISTICS XAB DEFINITIONS 

!		$XABFHCDEF 

! 

!+++++***** 

!...$XABFHCDEF	 

!  THE FIELDS OF THIS XAB CANNOT BE REARRANGED SINCE 

!  THEY CORRESPOND TO AN ON-DISK STRUCTURE 

! 

LITERAL	XAB$C_FHC	= 29; 		! XABFHC ID CODE 

			!THESE 4 FIELDS ARE COMMON TO ALL XABS AND 

			!HAVE BEEN DEFINED BY $XABDEF 

MACRO		XAB$B_RFO	= 8,0,8,0%; 		! RECORD FORMAT AND FILE ORG 

MACRO		XAB$B_ATR	= 9,0,8,0%; 		! RECORD ATTRIBUTES 

MACRO		XAB$W_LRL	= 10,0,16,0%; 		! LONGEST RECORD'S LENGTH 

MACRO		XAB$L_HBK	= 12,0,32,0%; 		! HI VBN ALLOCATED 

			! (N.B. REVERSED ON DISK!) 

MACRO		XAB$W_HBK0	= 12,0,16,0%;  

MACRO		XAB$W_HBK2	= 14,0,16,0%;  

MACRO		XAB$L_EBK	= 16,0,32,0%; 		! EOF VBN 

			! (N.B. REVERSED ON DISK) 

MACRO		XAB$W_EBK0	= 16,0,16,0%;  

MACRO		XAB$W_EBK2	= 18,0,16,0%;  

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

			! DEFINED ABOVE IN $XABDEF, SINCE IT IS SHARED 

			! BY THE ALL XAB) 

MACRO		XAB$B_HSZ	= 23,0,8,0%; 		! HEADER SIZE FOR VFC 

MACRO		XAB$W_MRZ	= 24,0,16,0%; 		! MAX RECORD SIZE 

MACRO		XAB$W_DXQ	= 26,0,16,0%; 		! DEFAULT EXTEND QUANTITY 

!-----***** 

MACRO		XAB$L_SBN	= 40,0,32,0%; 		! STARTING LBN IF CONTIGUOUS 

LITERAL	XAB$C_FHCLEN	= 44; 

LITERAL	XAB$K_FHCLEN	= 44; 		! LENGTH OF XABFHC 



!-- 

!++ 

! 

!	ALLOCATION XAB DEFINITIONS 

!		$XABALLDEF 

!...$XABALLDEF	 

! 

! 

!+++++***** 

!  THE FIELDS THRU BKZ CANNOT BE REARRANGED DUE TO 

!  THEIR COMMONALITY WITH FAB 

LITERAL	XAB$C_ALL	= 20; 		! XABALL ID CODE 

			!THESE 4 FIELDS ARE COMMON TO ALL XABS AND 

			!HAVE BEEN DEFINED BY $XABDEF 

MACRO		XAB$B_AOP	= 8,0,8,0%; 		! ALLOCATION OPTIONS 

			 

MACRO		XAB$V_HRD	= 8,0,1,0%; 		! FAIL IF REQUESTED ALIGNMENT IMPOSSIBLE 

LITERAL	XAB$M_HRD	= 1^1 - 1^0; 

MACRO		XAB$V_ONC	= 8,1,1,0%; 		! LOCATE ALLOCATED SPACE WITHIN A CYLINDER 

LITERAL	XAB$M_ONC	= 1^2 - 1^1; 

						! (SPARES) 

MACRO		XAB$V_CBT	= 8,5,1,0%; 		! CONTIGUOUS ALLLOCATION, BEST TRY 

LITERAL	XAB$M_CBT	= 1^6 - 1^5; 

						! SPARE 

MACRO		XAB$V_CTG	= 8,7,1,0%; 		! CONTIGUOUS ALLOCATION 

LITERAL	XAB$M_CTG	= 1^8 - 1^7; 

			

MACRO		XAB$B_ALN	= 9,0,8,0%; 		! ALIGNMENT TYPE 

LITERAL	XAB$C_ANY	= 0; 		! ANY ALLOCATION O.K. 

LITERAL	XAB$C_CYL	= 1; 		! CYLINDER BOUNDARY 

LITERAL	XAB$C_LBN	= 2; 		! ALLOCATE AT SPECIFIED LBN 

LITERAL	XAB$C_VBN	= 3; 		! ALLOCATE NEAR SPECIFIED VBN 

LITERAL	XAB$C_RFI	= 4; 		! ALLOCATE NEAR RELATED FILE 

MACRO		XAB$W_VOL	= 10,0,16,0%; 		! RELATIVE VOLUME NO. FOR ALLOCATION 

			! (NOT APPLICABLE IF ALN = VBN OR RFI) 

MACRO		XAB$L_LOC	= 12,0,32,0%; 		! ALLOCATION LOCATION 

MACRO		XAB$L_ALQ	= 16,0,32,0%; 		! ALLOCATION QUANTITY 

MACRO		XAB$W_DEQ	= 20,0,16,0%; 		! DEFAULT ALLOCATION QUANTITY 

			! DEFINED ABOVE IN $XABDEF,SINCE IT IS SHARED BY THE FHC 

			! XAB AND HAS THE SAME OFFSET, OF COURSE) 

!-----***** 

MACRO		XAB$B_AID	= 23,0,8,0%; 		! AREA ID NUMBER 

MACRO		XAB$W_RFI	= 24,0,0,0%; 	! RELATED FILE ID 

LITERAL	XAB$S_RFI	= 6; 

MACRO		XAB$W_RFI0	= 24,0,16,0%; 	! FILE NUMBER 

MACRO		XAB$W_RFI2	= 26,0,16,0%; 	! SEQ NUMBER 

MACRO		XAB$W_RFI4	= 28,0,16,0%; 	! REV NUMBER 

LITERAL	XAB$C_ALLLEN	= 32; 

LITERAL	XAB$K_ALLLEN	= 32; 		! LENGTH OF XABALL 



!-- 

!++ 

! 

!	DATE/TIME XAB DEFINITIONS 

!		$XABDATDEF 

!...$XABDATDEF	 

! 

LITERAL	XAB$C_DAT	= 18; 		! XABDAT ID CODE 

			!THESE 4 FIELDS ARE COMMON TO ALL XABS AND 

			!HAVE BEEN DEFINED BY $XABDEF 

MACRO		XAB$Q_CDT	= 20,0,0,1%; 	! CREATION DATE & TIME 

LITERAL	XAB$S_CDT	= 8; 

MACRO		XAB$L_CDT0	= 20,0,32,0%;  

MACRO		XAB$L_CDT4	= 24,0,32,1%;  

MACRO		XAB$Q_EDT	= 28,0,0,1%; 	! EXPIRATION DATE & TIME 

LITERAL	XAB$S_EDT	= 8; 

MACRO		XAB$L_EDT0	= 28,0,32,0%;  

MACRO		XAB$L_EDT4	= 32,0,32,1%;  

LITERAL	XAB$C_DATLEN	= 36; 

LITERAL	XAB$K_DATLEN	= 36; 		! LENGTH OF XABDAT 



!-- 

!++ 

! 

!	REVISION DATE/TIME XAB DEFINITIONS 

!		$XABRDTDEF 

!...$XABRDTDEF	 

LITERAL	XAB$C_RDT	= 30; 		! XABRDT ID CODE 

			!THESE 4 FIELDS ARE COMMON TO ALL XABS AND 

			!HAVE BEEN DEFINED BY $XABDEF 

LITERAL	XAB$C_RDTLEN	= 20; 

LITERAL	XAB$K_RDTLEN	= 20; 		! LENGTH OF RDT XAB 



!-- 

!++ 

! 

!	PROTECTION XAB FIELD DEFINITIONS 

!		$XABPRODEF 

! 

!...$XABPRODEF	 

! 

LITERAL	XAB$C_PRO	= 19; 		! XABPRO ID CODE 

			!THESE 4 FIELDS ARE COMMON TO ALL XABS AND 

			!HAVE BEEN DEFINED BY $XABDEF 

MACRO		XAB$W_PRO	= 8,0,16,0%; 		! PROTECTION MASK 

			 

MACRO		XAB$V_SYS	= 8,0,4,0%; 		! SYSTEM 

MACRO		XAB$V_OWN	= 8,4,4,0%; 		! OWNER 

MACRO		XAB$V_GRP	= 8,8,4,0%; 		! GROUP 

MACRO		XAB$V_WLD	= 8,12,4,0%; 		! WORLD 

			

			 

MACRO		XAB$V_NOREAD	= 8,0,1,0%; 	! DENY READ ACCESS 

LITERAL	XAB$M_NOREAD	= 1^1 - 1^0; 

MACRO		XAB$V_NOWRITE	= 8,1,1,0%; 	! DENY WRITE ACCESS 

LITERAL	XAB$M_NOWRITE	= 1^2 - 1^1; 

MACRO		XAB$V_NOEXE	= 8,2,1,0%; 		! DENY EXECUTION ACCESS 

LITERAL	XAB$M_NOEXE	= 1^3 - 1^2; 

MACRO		XAB$V_NODEL	= 8,3,1,0%; 		! DENY DELETE ACCESS 

LITERAL	XAB$M_NODEL	= 1^4 - 1^3; 

			

MACRO		XAB$L_UIC	= 12,0,32,0%; 		! UIC CODE 

MACRO		XAB$W_MBM	= 12,0,16,0%; 	! MEMBER CODE 

MACRO		XAB$W_GRP	= 14,0,16,0%; 	! GROUP CODE 

LITERAL	XAB$C_PROLEN	= 16; 

LITERAL	XAB$K_PROLEN	= 16; 		! XABPRO LENGTH 



!-- 

!++ 

! 

!	TERMINAL CONTROL XAB FIELD DEFINITIONS 

!		$XABTRMDEF 

! 

! 

!...$XABTRMDEF	 

! 

LITERAL	XAB$C_TRM	= 31; 		!XABTRM ID CODE 

			!THESE 4 FIELDS ARE COMMON TO ALL XABS AND 

			!HAVE BEEN DEFINED BY $XABDEF 

MACRO		XAB$L_AST_ADDR	= 8,0,32,0%; 	!AST ADDRESS 

MACRO		XAB$L_AST_PARM	= 12,0,32,0%; 	!AST PARAMETER 

MACRO		XAB$W_MBX_CHAN	= 16,0,16,0%; 	!ASSOCIATED MAILBOX CHANNEL NUMBER 

MACRO		XAB$B_FLAGS	= 18,0,8,0%;  

			 

MACRO		XAB$V_DSABL_AST	= 18,0,1,0%; 	!DISABLE AST 

LITERAL	XAB$M_DSABL_AST	= 1^1 - 1^0; 

			

LITERAL	XAB$C_TRMLEN	= 24; 

LITERAL	XAB$K_TRMLEN	= 24; 		!LENGTH OF XAB OF TYPE TERMINAL CONTROL 



!-- 

!++ 

! 

!	SUMMARY XAB FIELD DEFINITIONS 

!		$XABSUMDEF 

! 

!...$XABSUMDEF	 

! 

LITERAL	XAB$C_SUM	= 20; 		! XABSUM ID CODE 

			!THESE 4 FIELDS ARE COMMON TO ALL XABS AND 

			!HAVE BEEN DEFINED BY $XABDEF 

MACRO		XAB$B_NOA	= 8,0,8,0%; 		! NUMBER OF DEFINED AREAS FOR INDEX FILE 

MACRO		XAB$B_NOK	= 9,0,8,0%; 		! NUMBER OF DEFINED KEYS FOR INDEX FILE 

MACRO		XAB$W_PVN	= 10,0,16,0%; 		! PROLOGUE VERSION NUMBER (RELATIVE AND INDEX FILES) 

LITERAL	XAB$C_SUMLEN	= 12; 

LITERAL	XAB$K_SUMLEN	= 12; 		! XABSUM LENGTH 



!-- 

!++ 

! 

!	KEY DEFINITION XAB FIELD DEFINITIONS 

!		$XABKEYDEF 

! 

!...$XABKEYDEF	 

! 

LITERAL	XAB$C_KEY	= 21; 		! XABKEY ID CODE 

			!THESE 4 FIELDS ARE COMMON TO ALL XABS AND 

			!HAVE BEEN DEFINED BY $XABDEF 

! 

! 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. 

! 

MACRO		XAB$B_IAN	= 8,0,8,0%; 		! INDEX LEVEL AREA NUMBER 

MACRO		XAB$B_LAN	= 9,0,8,0%; 		! LOWEST INDEX LEVEL AREA NUMBER 

MACRO		XAB$B_DAN	= 10,0,8,0%; 		! DATA LEVEL AREA NUMBER 

MACRO		XAB$B_LVL	= 11,0,8,0%; 		! LEVEL OF ROOT BUCKET 

MACRO		XAB$B_IBS	= 12,0,8,0%; 		! SIZE OF INDEX BUCKETS IN VIRTUAL BLOCKS 

MACRO		XAB$B_DBS	= 13,0,8,0%; 		! SIZE OF DATA BUCKETS IN VIRTUAL BLOCKS 

MACRO		XAB$L_RVB	= 14,0,32,0%; 		! ROOT BUCKET START VBN 

MACRO		XAB$B_FLG	= 18,0,8,0%; 		! KEY OPTION FLAGS 

			 

MACRO		XAB$V_DUP	= 18,0,1,0%; 		! DUPLICATE KEY VALUES ALLOWED 

LITERAL	XAB$M_DUP	= 1^1 - 1^0; 

MACRO		XAB$V_CHG	= 18,1,1,0%; 		! ALT KEY ONLY --KEY FIELD MAY CHANGE ON UPDATE 

LITERAL	XAB$M_CHG	= 1^2 - 1^1; 

MACRO		XAB$V_NUL	= 18,2,1,0%; 		! ALT KEY ONLY --NULL KEY VALUE ENABLE 

LITERAL	XAB$M_NUL	= 1^3 - 1^2; 

				 

MACRO		XAB$V_INI	= 18,4,1,0%; 		! INTERNAL FLAG INDICATING THAT INDEX 

LITERAL	XAB$M_INI	= 1^5 - 1^4; 

			! HAS NOT BEEN INITIALIZED 

MACRO		XAB$V_DCT	= 18,5,1,0%; 		! SET TO INDICATE THAT THE USER WANTS TO MAINTAIN 

LITERAL	XAB$M_DCT	= 1^6 - 1^5; 

			! A DUPLICATES COUNT 

			

 

					! PRIMARY KEY ONLY FLAGS 

						! SPACE OVER DUP 

MACRO		XAB$V_NRF	= 18,1,1,0%; 		! NO RFA/RRV IN RECORDS (SINGLE KEY ONLY) 

LITERAL	XAB$M_NRF	= 1^2 - 1^1; 

MACRO		XAB$V_PRG	= 18,2,1,0%; 		! DELETED RECORDS AND RRV'S MAY BE PURGED 

LITERAL	XAB$M_PRG	= 1^3 - 1^2; 

			

 

MACRO		XAB$B_DTP	= 19,0,8,0%; 		! KEY FIELD DATA TYPE 

LITERAL	XAB$C_STG	= 0; 		! STRING 

LITERAL	XAB$C_IN2	= 1; 		! SIGNED 15 BIT INTEGER (2 BYTES) 

LITERAL	XAB$C_BN2	= 2; 		! 2 BYTE BINARY 

LITERAL	XAB$C_IN4	= 3; 		! SIGNED 31 BIT INTEGER (4 BYTES) 

LITERAL	XAB$C_BN4	= 4; 		! 4 BYTE BINARY 

LITERAL	XAB$C_PAC	= 5; 		! PACKED DECIMAL (1-16 BYTES) 

MACRO		XAB$B_NSG	= 20,0,8,0%; 		! NUMBER OF KEY SEGMENTS 

MACRO		XAB$B_NUL	= 21,0,8,0%; 		! NUL KEY CHARACTER 

MACRO		XAB$B_TKS	= 22,0,8,0%; 		! TOTAL KEY FIELD SIZE (BYTES) 

MACRO		XAB$B_REF	= 23,0,8,0%; 		! KEY OF REFERENCE (0=PRIM KEY, 

			! 1-254 = ALTERNATE KEYS) 

MACRO		XAB$W_MRL	= 24,0,16,0%; 		! MINIMUN RECORD LENGTH TO CONTAIN KEY FIELD 

MACRO		XAB$W_IFL	= 26,0,16,0%; 		! INDEX BUCKET FILL SIZE (BYTES) 

MACRO		XAB$W_DFL	= 28,0,16,0%; 		! DATA BUCKET FIL SIZE (BYTES) 

MACRO		XAB$W_POS	= 30,0,0,0%; 	! KEY FIELD RECORD OFFSET POSITIONS 

LITERAL	XAB$S_POS	= 16; 

MACRO		XAB$W_POS0	= 30,0,16,0%; 	! SEGMENT 0 

MACRO		XAB$W_POS1	= 32,0,16,0%; 	! SEGMENT 1 

MACRO		XAB$W_POS2	= 34,0,16,0%; 	! SEGMENT 2 

MACRO		XAB$W_POS3	= 36,0,16,0%; 	! SEGMENT 3 

MACRO		XAB$W_POS4	= 38,0,16,0%; 	! SEGMENT 4 

MACRO		XAB$W_POS5	= 40,0,16,0%; 	! SEGMENT 5 

MACRO		XAB$W_POS6	= 42,0,16,0%; 	! SEGMENT 6 

MACRO		XAB$W_POS7	= 44,0,16,0%; 	! SEGMENT 7 

MACRO		XAB$B_SIZ	= 46,0,0,0%; 	! KEY FIELD SEGMENT SIZES 

LITERAL	XAB$S_SIZ	= 8; 

MACRO		XAB$B_SIZ0	= 46,0,8,0%; 	! SEGMENT 0 

MACRO		XAB$B_SIZ1	= 47,0,8,0%; 	! SEGMENT 1 

MACRO		XAB$B_SIZ2	= 48,0,8,0%; 	! SEGMENT 2 

MACRO		XAB$B_SIZ3	= 49,0,8,0%; 	! SEGMENT 3 

MACRO		XAB$B_SIZ4	= 50,0,8,0%; 	! SEGMENT 4 

MACRO		XAB$B_SIZ5	= 51,0,8,0%; 	! SEGMENT 5 

MACRO		XAB$B_SIZ6	= 52,0,8,0%; 	! SEGMENT 6 

MACRO		XAB$B_SIZ7	= 53,0,8,0%; 	! SEGMENT 7 

! 

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

! RECORD LAYOUT IN THE INDEX FILE PROLOGUE. 

! 

MACRO		XAB$L_KNM	= 56,0,32,0%; 		! POINTER TO 32 CHARACTER KEY NAME BUFFER 

MACRO		XAB$L_DVB	= 60,0,32,0%; 		! FIRST DATA BUCKET START VBN 

LITERAL	XAB$C_KEYLEN	= 64; 

LITERAL	XAB$K_KEYLEN	= 64; 		! XABKEY LENGTH 

!-- 

!++ 



 

! 

!		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. 

! 

!...$RMEDEF	

 

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



