Google
 

Trailing-Edge - PDP-10 Archives - CFS_TSU04_19910205_1of1 - update/cblsrc/ftdefs.mac
There are 9 other files named ftdefs.mac in the archive. Click here to see a list.
; UPD ID= 1266 on 6/9/83 at 11:47 AM by NIXON                           
UNIVERSAL FTDEFS FILE-TABLE DEFINIFITIONS for COBOL OTS, CLEAND and SORT


	SEARCH COPYRT
	SALL

;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
;  OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.

COPYRIGHT (C) 1975, 1983, 1984 BY DIGITAL EQUIPMENT CORPORATION

.DIRECTIVE .NOBIN

;****** REVISION HISTORY

; EDIT 545	STORE NO. OF CHARACTERS IN VAR. LEN. RECORD IN FILE TABLE.


; GET ASSEMBLY SWITCHES

SEARCH INTERM

SALL

%%FTDF==2	;EDIT NUMBER

IFNDEF	ISTKS,<ISTKS==0>	;TYPE  # OF IN'S AND OUT'S

I16==16			;16 HAS POINTER TO FILE-TABLE
CH==4			;ACC USED BY CLEAND

;**** TEMP INCREASE BOTH BY 4 SO WE CAN ADD EXTRA ITEMS ***
SZ.DEV==40+4		;Size of DEVICE table
SZ.OFT==41+4		;Size of FILE table
COMMENT \

The run-time file tables consist of two parts indexed by acc 16.
The positive part contains file specific information set by the compiler
from information in the SELECT and FD clauses. This part does not change
at run time. The negative part contains information about the device and
file set by the OTS at run time. Generally the positive part is not changed
at run time and the negative part is not set by the compiler.
The exceptions are the flag words F.WFLG, D.RFLG, D.F1
The file table is set up by CLEAND.

The various constants are named as follows:

D.xxxx		offset into device table (negative)
F.xxxx		offset into file table (positive)
B%xxxx		bit in either table
BM%xxx		bit mask in either table
F%Bxxx		byte pointer to field in either table (indexed by I16)
F%Cxxx		byte pointer to field in either table (indexed by CH)


DEVICE TABLE 
------ -----

	WORD -36:		LINAGE-COUNTER

	WORD -35:
		LHS		Size of buffer in words (TOPS-20 only)
		RHS		Size of buffer in bytes (TOPS-20 only)

	WORD -34:
		RHS		JFN of file (TOPS-20 only)

	WORD -33:
		BITS 27-35	Actual padding character

	WORD -32:		Record count for checkpointing

	WORD -31:		Saved value of D.RCL after DELETE/REWRITE

	WORD -30:		Address of RMS control block

	WORD -29:		REC SEQ offset to extended section of sixbit mta file

	WORD -28:		Number of characters in last record read

	WORD -27:		Number of words per record (random and ISAM)
	 			Characters per record (non-random or ISAM)

	WORD -26:		Last block of SEQIO file

	WORD -25:		Free characters per logical block

	WORD -24:		Total characters per logical block

	WORD -23:		WRITE conversion instruction

	WORD -22:		READ conversion instruction

	WORD -21:		Bytes per word

	WORD -20:		RERUN device name in sixbit

	WORD -19:
		BIT 0		Variable length EBCDIC records (*)
		BIT 1		File is optional (*)
		BIT 2		Native mode I/O on TOPS-20
		BIT 3		Labels are standard (*)
		BIT 4		Labels are standard but monitor does label processing
		BIT 5		MOUNTR is handling labels, but no labeling
		BITS 18-35	ISAM save area for shared buffer

	WORD -18:		Number of INPUTs executed

	WORD -17:		Number of OUTPUTs executed

	WORD -16:
		BITS 0-17	Buffer location
		BITS 18-35	Label record size

	WORD -15:
		BITS 0-11	Magtape reel number
		BITS 12-15	I/O channel number
		BIT 16		Lock flag
		BIT 17		HUF (head under file) flag

		BIT 25		1 if last READ was bad
		BIT 26		1 if MTA STD ASCII needs INDUSTRY-COMP mode (TM03 trouble)
		BIT 27		A terminate has been done for this report file
		BIT 28		1 if last write was AFTER-ADVANCING ("CR" before buffer advance)
		BIT 29		1 if file was OPENed EXTEND
		BIT 30		1 if last I/O was delete or rewrite (next rec saved)
		BIT 31		1 if last ISAM I/O operation was a READ
		BIT 32		Read reversed blocked greater than 10
		BIT 33		First ISAM read is seq., for IBS scan code
		BIT 34		OPEN REVERSEd active 
		BIT 35		STANDARD-ASCII (*)

	WORD -14:		Current physical block number

	WORD -13:		Number of buffers per logical block

	WORD -12:		Number of buffers to fill current logical block

	WORD -11:		Number of records to fill current logical block

	WORD -10:		IOWD for current device

	WORD -9:		Output buffer header

	WORD -8:		Output buffer byte pointer

	WORD -7:		Output buffer byte count

	WORD -6:		Input buffer header

	WORD -5:		Input buffer byte pointer

	WORD -4:		Input buffer byte count

	WORD -3:		Number of records to RERUN dump

	WORD -2:		Number of records processed

	WORD -1:		Device characteristics
FILE TABLE
---- -----

Note, these words start at 1 whereas the F.Wxxx definitions start at 0.

	WORDS 1-5:		30 character program name in sixbit

	WORD 6:
		BITS 0-5	Compiler's version number

		BIT 6		Buffer location assigned

		BIT 7		SORT file

		BIT 8		Default recording mode (not set by user)

		BITS 12-17	Number of devices assigned to file

		BITS 18-35	Address of first device name

	WORD 7:
		BITS 0-2	Not used

		BITS 3-4	File access mode
				0 - SEQUENTIAL
				1 - RANDOM
				2 - DYNAMIC
				3 - Not used

		BITS 5-8	Tape label format bits

		BIT 5		U format system label

		BIT 6		S format system label

		BIT 7		D format system label

		BIT 8		F format system label

		BITS 9-11	System label type

		BITS 12-17	File position on mag-tape

		BITS 18-35	Link to next file table

	WORD 8:
		BITS 0-6	Number of buffers

		BIT 7		LINAGE-COUNTER required

		BITS 18-35	Number of records between rerun dumps

	WORD 9:
		BITS 0-3	Device (external) recording mode
		BIT 0		ASCII
		BIT 1		SIXBIT
		BIT 2		EBCDIC
		BIT 3		BINARY
		BIT 4		File is OPEN for INPUT
		BIT 5		File is OPEN for OUTPUT
		BIT 6		File is an INPUT/OUTPUT file
		BIT 7		An EOF was seen
		BIT 8		Device and core data modes differ
		BIT 9		Optional file not present
		BIT 10		RERUN dump at END-OF-REEL
		BIT 11		RERUN dump via RECORD-COUNT
		BITS 12-14	Core data mode
		BIT 12		ASCII
		BIT 13		SIXBIT
		BIT 14		EBCDIC
		BITS 15-17	File Organization
		BIT 15		INDEXED-SEQUENTIAL
		BIT 16		SEQUENTIAL
		BIT 17		RELATIVE
		BITS 18-35	Address of record area

	WORD 10:
		LH		Unused
		RH		Link to file table that shares device

	WORD 11:
		LH		Blocking factor
		RH		Address of RELATIVE KEY

	WORD 12:		Byte pointer to VALUE OF ID

	WORD 13:		Byte pointer to VALUE OF DATE-WRITTEN

	WORD 14:
		LH		Link to file table that shares buffer area
		RH		Address of error use procedure

	WORD 15:
		LH		Maximum record size in characters
		RH		Minimum record size in characters

	WORD 16:
		LH		Lines per page
		RH		WITH FOOTING AT count

	WORD 17:
		WD		Approx. key size for START
		LH		Lines at top
		RH		Lines at bottom

	WORD 18:
		LH		DEBUGGING USE procedure
		RH		LINAGE counter initialization routine

	WORD 19:
		BITS 0-2	Mag-tape density
				000 - Default
				001 - 200 BPI
				010 - 556 BPI
				011 - 800 BPI
				100 - 1600 BPI
				101 - 6250 BPI

		BIT 4		Mag-tape parity
				0 - Odd
				1 - Even

		BIT 5		Deferred ISAM flag

		BIT 6		OPEN use procedure when ENTER fails

		BIT 7		RMS flag

		BIT 8		BYTE mode flag

		BIT 9		Checkpoint flag

		BITS 10-17	Checkpoint record count

		BITS 18-35	Address of PPN

	WORD 20:
				Unused.

	WORD 21:		Byte pointer to RECORD KEY

	WORD 22:		ISAM key description word

	WORD 23:  F.WSMU - 	definitions of names below are in LSU.MAC
		BITS 0-3	Owner access			FTOWA
		BITS 9-12	Other access			FTOTA
		BIT  13		Retained NEXT has shared	RTNXSH
				access to file.
		BIT  14		Retained NEXT needs exclusive	RTNXCL
				access to the file.
		BIT  15		LFENQ. OPEN flag		LFQOPN
			= 0 if OPEN not thru LFENQ.
			= 1 after LFENQ. OPEN

		BITS 16-17	Retained Index Share Flag	IDXSHR
			= 0 if Index Retained Exclusive
			= 1 if Index Retained Shared
			= 3 if Index Retained Group "Shared"
				This indicates the funny "shared"
				where we don't want to use it and
				we also don't want others to use it.

		BITS 18-35	Contains pointer to address of currently
				Retained Key. Is set to -1 if this value
				not yet determined.

	WORD 24:		Byte pointer to FILE-STATUS data-item

	WORD 25:		Byte pointer to ERROR-NUMBER data-item

	WORD 26:		Byte pointer to ACTION-CODE data-item

	WORD 27:		Byte pointer to VALUE-OF-ID data-item

	WORD 28:		Byte pointer to BLOCK-NUMBER data-item

	WORD 29:		Byte pointer to RECORD-NUMBER data-item

	WORD 30:		Byte pointer to FILE-NAME data-item

	WORD 31:		Byte pointer to FILE-TABLE data-item

	WORD 32:
		LH		Link to protection code
		BITS 18-27	Not used
		BITS 28-35	Size of VALUE-OF-ID

	WORD 33:
		BITS 0-35	Byte pointer to padding character
		or
		BITS 28-35	Padding character
	WORD 34:
		LH - Address of Block of RMS Key Descriptors in 
			constant area under START.
		RH 		BIT FIELDS WHICH CAN APPLY TO RMS FILES
			BITS 18-21	SMU Lock bits for Self. Set at Run Time.
			BITS 22-25	SMU Lock bits for Other. Set at Run Time.
			BIT 35		Apply Basic-Locking to this file.
			BIT 34		Write / no-Write switch for <CR> for ASCII STM files

\
SUBTTL	DEVICE TABLE CONSTANTS

;Bits marked (*) are set by the compiler

D.LCV==-44	; LINAGE-COUNTER value

D.FBS==-43	; Size of buffer (TOPS-20 only)

D.JFN==-42	; JFN of file (TOPS-20 only)

D.PADD==-41	;RUN-TIME PADDING CHARACTER
	F%PADD==POINT 9,D.PADD(I16),35

D.CRC==-40	;RECORD COUNT FOR CHECKPOINT EVERY N RECORDS

D.SRCL==-37	; SAVED VALUE OF D.RCL AFTER DELETE/RERIT 

D.RMSP==-36	;ADDR OF AN RMS CONTROL BLOCK
		;NON-ZERO ONLY IF THIS FILE IS AN OPEN RMS FILE
		;THE CONTROL BLOCK ITSELF IS DESCRIBED IN LBLPRM.MAC

D.EXOF==-35	; REC SEQ OFFSET TO EXTENDED SECTION OF SIXBIT MTA FILE

D.CLRR==-34	;[545] NO. OF CHARACTERS IN LAST RECORD READ

D.WPR=-33	; NO. OF WORDS PER RECORD,RANDOM AND ISAM
D.CPR=-33	; CHARS PER RECORD ,NON-RANDOM/ISAM FILES (INCLUDING OVERHEAD)

D.LBN=-32	; LAST BLOCK OF SEQIO FILE

D.FCPL=-31	; FREE CHARS PER LOG-BLOCK

D.TCPL=-30	; TOTAL CHARS PER LOG-BLOCK

D.WCNV=-27	; THE WRITE CONVERSION INSTRUCTION

D.RCNV=-26	; THE READ CONVERSION INSTRUCTION

D.BPW=-25	;BYTES PER WORD

D.RD=-24	;RERUN DEVICE NAME IN SIXBIT

D.F1=-23	;0-17 FLAGS IN LHS OF ACC FLG1 AT RUN-TIME
	B%VLER==1B0	;VARIABLE LENGTH EBCDIC RECORDS (*)
	B%OPTF==1B1	;FILE IS OPTIONAL (*)
	B%NIO==1B2	;NATIVE I/O
	F%NIO==POINT 1,D.F1(I16),2
	B%STL==1B3	;LABELS ARE STANDARD (*)
;	STNDRD==40000	;LABELS ARE STANDARD
	MSTNDR==20000	;STANDARD BUT MONITOR DOES LABEL PROCESSING
	MTNOLB==10000	;MOUNTR HANDLING LABELS,BUT NO LABELING

		;RMSIO FLAGS IN RHS (NOT IN FLG1 AT RUN-TIME)
	LF%INP==1B33	;FILE IS OPEN FOR INPUT
	LF%OUT==1B34	;FILE IS OPEN FOR OUTPUT

D.IBL=-23	; [377]  18-35	ISAM SAVE AREA FOR SHARED BUFFER

D.IE=-22	;# OF INPUTS EXECUTED

D.OE=-21	;# OF OUTPUTS EXECUTED

D.BL=-20	;0-17 BUFFER LOCATION
D.LRS=-20	;18-35 LABEL RECORD SIZE

D.RN=-17	;0-11 MAGTAPE REEL NUMBER
	F%BRN==POINT 12,D.RN(I16),11	;MTA REEL NUMBER
D.CN=-17	;12-15 IO CHANNEL NUMBER
	F%BCN==POINT 4,D.CN(I16),15	;CHANNEL NUMBER
D.LF=-17	;BIT-16 LOCK FLAG
	F%BLF==POINT 1,D.LF(I16),16	;LOCK FLAG
D.HF=-17	;BIT-17 HUF FLAG
	B%HUF==1B17	;HUF (HEAD UNDER FILE) FLAG
	DB.HF==1B17	;HUF (HEAD UNDER FILE) FLAG
	F%BHF==POINT 1,D.HF(I16),17	;HUF FLAG

D.RFLG=-17	; 18-35 FLAGS
	B%SASC==1	; STANDARD ASCII (*)
	SASCII==1	; REQUEST FOR STANDARD ASCII
	RDDREV==2	; OPEN REVERSED ACTIVE 
	FSTIDX==4	;[605] FIRST ISAM READ IS SEQ, FOR IBS SCAN CODE
	RDRVBK==10	; READ REV BLOCKED GTR 10
	RDLAST==20	; =1 IF LAST ISAM IO OPERATION WAS READ
	SAVNXT==40	; =1 IF LAST I-O WAS DELETE OR REWRITE (NXT REC SAVED)
	EXTOPN==100	; =1 IF FILE WAS OPENED EXTEND
	AFTADV==200	; =1 IF LAST WRITE WAS AFTER-ADVANCING ("CR" BEFORE BFR-ADV)
	;RPW BIT FOR TERMINATE HAS BEEN DONE ==400
	F%BRPT==POINT 1,D.RFLG(I16),31	;A TERMINATE HAS BEEN DONE FOR THIS REPORT FILE
	INDASC==1000	; =1 IF MTA STD ASCII NEEDS INDUSTRY-COMP MODE (TM03 TROUBLE)
			; DON'T CLEAR AT CLOSE TIME
	B%BDRD==2000	; =1 IF LAST READ WAS BAD
	RF1CLR==B%BDRD!AFTADV!EXTOPN!SAVNXT!RDLAST!RDRVBK!FSTIDX!RDDREV	;BITS TO CLEAR AT CLOSE TIME

D.CBN=-16	;CURRENT PHYSCIAL BLOCK NUMBER

D.BPL=-15	;# OF BUFFERS PER LOGICAL BLOCK

D.BCL=-14	;# OF BUFFERS TO FILL CURRENT LOGICAL BLOCK

D.RCL=-13	;# OF RECORDS TO FILL CURRENT LOGICAL BLOCK

D.ICD=-12	;IOWD FOR CURRENT DEVICE

D.OBH=-11	;OUTPUT BUFFER HEADER

D.OBB=-10	;OUTPUT BUFFER BYTE POINTER
	F%BOBS==POINT 6,D.OBB(I16),11	;OUTPUT BUFFER BYTE SIZE

D.OBC=-7	;OUTPUT BUFFER BYTE COUNT

D.IBH=-6	;INPUT BUFFER HEADER

D.IBB=-5	;INPUT BUFFER BYTE POINTER
	F%BIBS==POINT 6,D.IBB(I16),11	;INPUT BUFFER BYTE SIZE

D.IBC=-4	;INPUT BUFFER BYTE COUNT

D.RRD=-3	;# OF RECORDS TO A RERUN DUMP

D.RP=-2		;# OF RECORDS PROCESSED

D.DC=-1		;DEVICE CHARACTERISTICS
D.OPT=-1	;-1 IF A "NOT-PRESENT" OPTIONAL ISAM FILE
SUBTTL	FILE TABLE CONSTANTS

;Bits marked (*) are changed at run-time

F.WFNM==0			; 30 CHARACTER PROGRAM NAME - SIXBIT

F.WCVR==5			; COMPILER'S VERSION NUMBER
	F%BCVR==POINT 6,F.WCVR(I16),5
	F%CCVR==POINT 6,CH,5

F.WBLC==5			; BUFFER LOCATION IS ASSIGNED (*)
	B%BLA==1B6
	F%BBLC==POINT 1,F.WBLC(I16),6
F.WSDF==5			; SORT-DESCRIPTION FILE FLAG
	B%SDF==1B7
	F%BSDF==POINT 1,F.WSDF(I16),7
	F%CSDF==POINT 1,CH,7

F.WDRM==5			; DEFAULT RECORDING MODE (I.E. NOT SET BY USER)
	B%DRM==1B8
	F%BDRM==POINT 1,F.WDRM(I16),8
	F%CDRM==POINT 1,CH,8

F.WNOD==5			; NUMBER OF DEVICES ASSIGNED TO FILE
	F%BNOD==POINT 6,F.WNOD(I16),17
	F%CNOD==POINT 6,CH,17

F.WDNM==5			; ADR OF FIRST DEVICE NAME - SIXBIT
	F%BDNM==POINT 18,F.WDNM(I16),35

F.WFAM==6			; FILE ACCESS MODE
	F%BFAM==POINT 2,F.WFAM(I16),4
	F%CFAM==POINT 2,CH,4
	%FAM.S==0		;ACCESS MODE IS SEQUENTIAL
	%FAM.R==1		;ACCESS MODE IS RANDOM
	%FAM.D==2		;ACCESS MODE ISDYNAMIC

F.WLAB==6			; SYSTEM LABEL FORMAT (B9-B11)
	F%BLBU==POINT 1,F.WLAB(I16),5	; "U" FORMAT SYSTEM LABEL FLAG
	F%BLBS==POINT 1,F.WLAB(I16),6	; "S" FORMAT SYSTEM LABEL FLAG
	F%BLBD==POINT 1,F.WLAB(I16),7	; "D" FORMAT SYSTEM LABEL FLAG
	F%BLBF==POINT 1,F.WLAB(I16),8	; "F" FORMAT SYSTEM LABEL FLAG
	F%BFMT==POINT 4,F.WLAB(I16),8	; TO GET ALL 4 LABEL FORMAT BITS
	F%BLBT==POINT 3,F.WLAB(I16),11	; SYSTEM LABEL TYPE
F.WPMT==6			; FILE POSITION ON MAG-TAPE
	F%BPMT==POINT 6,F.WPMT(I16),17
	F%CPMT==POINT 6,CH,17
F.RNFT==6			; LINK TO NEXT FILE TABLE
	F%BNFT==POINT 18,F.RNFT(I16),35	; LINK TO NEXT FILE-TABLE

F.WNAB==7			; NUMBER OF ACTUAL BUFFERS
	F%BNAB==POINT 6,F.WNAB(I16),5
	F%CNAB==POINT 6,CH,5
F.WLCR==7			; LINAGE-COUNTER required
	F%BLCR==POINT 1,F.WLCR(I16),7
	F%CLCR==POINT 1,CH,7
F.RRRC==7			; NUMBER OF RECORDS BETWEEN RERUN DUMPS

F.WFLG==10			; FLAGS,,ADR OF RECORD AREA
				;LHS IS COPIED TO ACC FLF AT RUN-TIME
				; **WARNING** DO NOT DISTURB DDM??? OR CDM???
	B%DDMA==1B0	;DEVICE DATA MODE IS ASCII
	B%DDMS==1B1	;DEVICE DATA MODE IS SIXBIT
	B%DDME==1B2	;DEVICE DATA MODE IS EBCDIC
	B%DDMB==1B3	;DEVICE DATA MODE IS BINARY
	F%BDDM==POINT 3,F.WFLG(I16),9	; DEVICE DATA MODE
	F%ADDM==POINT	4,F.WFLG(I16),3		;[427] DEVICE DATA MODE
	;[427]		ASCII	10
	;[427]		SIXBIT	04
	;[427]		EBCDIC	02
	;[427]		BINARY	01
	DDMASC==400000	;DEVICE DATA MODE IS ASCII
	DDMSIX==200000	;DEVICE DATA MODE IS SIXBIT
	DDMEBC==100000	;DEVICE DATA MODE IS EBCDIC
	DDMBIN==40000	;DEVICE DATA MODE IS BINARY
	OPNIN==20000	;FILE IS OPEN FOR INPUT (*)
	OPNOUT==10000	;FILE IS OPEN FOR OUTPUT (*)
	OPNIO==30000	;[622] FILE IS OPEN FOR I-O (*)
	B%IOF==1B6	;FILE IS AN INPUT/OUTPUT FILE
	IOFIL==4000	;[622] FILE IS AN INPUT/OUTPUT FILE
	ATEND==2000	;AN "EOF" WAS SEEN (*)
	B%DCMD==1B8	;DEVICE AND CORE DATA MODES DIFFER
	CONNEC==1000	;DEVICE & CORE DATA MODES DIFFER
	NOTPRS==400	;OPTIONAL FILE NOT PRESENT
	B%RER==1B10		;RERUN DUMP AT END-OF-REEL
	F%CRER==POINT 1,CH,10
	B%RRC==1B11		;RERUN DUMP VIA RECORD-COUNT
	F%CRRC==POINT 1,CH,11
	B%CDMA==1B12	;CORE DATA MODE IS ASCII
	B%CDMS==1B13	;CORE DATA MODE IS SIXBIT
	B%CDME==1B14	;CORE DATA MODE IS EBCDIC
	F%BCDM==POINT 2,F.WFLG(I16),15	; CORE DATA MODE
	F%ACDM==POINT	3,F.WFLG(I16),14	;[427] CORE DATA MODE.
	;[427]		ASCII	4
	;[427]		SIXBIT	2
	;[427]		EBCDIC	1
	CDMASC==40	;CORE DATA MODE IS ASCII
	CDMSIX==20	;CORE DATA MODE IS SIXBIT
	CDMEBC==10	;CORE DATA MODE IS EBCDIC
	F%BORG==POINT 3,F.WFLG(I16),17
	B%ORGI==1B15	;ORGANIZATION IS INDEX-SEQUENTIAL
	B%ORGS==1B16	;ORGANIZATION IS SEQUENTIAL
	B%ORGR==1B17	;ORGANIZATION IS RELATIVE
	IDXFIL==4	;ORGANIZATION IS INDEX-SEQUENTIAL
	SEQFIL==2	;ORGANIZATION IS SEQUENTIAL
	RANFIL==1	;ORGANIZATION IS RANDOM
F.RREC==10			; ADDRESS OF RECORD AREA
	F%BREC==POINT 18,F.RREC(I16),35	; ADR OF RECORD AREA

F.RFSD==11			; LINK TO FILE-TABLE THAT SHARES DEVICE
F.WBKF==12			; THE BLOCKING FACTOR
	F%BBKF==POINT 12,F.WBKF(I16),17
	F%CBKF==POINT 12,CH,17
F.RACK==12			; ADR OF RELATIVE KEY TABLE
F.WVID==13			; BYTE POINTER TO VALUE OF ID
F.WVDW==14			; BYTE POINTER TO VALUE OF DATE WRITTEN
F.LSBA==15			; LINK TO FILE-TABLE THAT SHARES BUFFER AREA
F.REUP==15			; ADR OF ERROR USE PROCEDURE
F.WMRS==16			; MAXIMUM RECORD SIZE IN CHARS
	F%BMRS==POINT 18,F.WMRS(I16),17
	F%CMRS==POINT 18,CH,17
F.WLRS==16			; MINIMUM RECORD SIZE IN CHARS
	F%BLRS==POINT 18,F.WLRS(I16),35
	F%CLRS==POINT 18,CH,35
F.LPP==17			;LINES PER PAGE (LHS)
F.WFA==17			;WITH FOOTING AT (RHS)
F.LAT==20			;LINES AT TOP (LHS)
F.LAB==20			;LINES AT BOTTOM (RHS)
F.DEB==21			;DEBUGGING USE PROCEDURE (LHS)
F.LCI==21			;LINAGE COUNTER INITAILIZATION (RHS)

F.AKS==20			; ***TEMP*** APPROX. KEY SIZE FOR START VERB

F.WDNS==22			; MAG-TAPE DENSITY AND PARITY
	F%BDNS==POINT 3,F.WDNS(I16),2	; MAG-TAPE DENSITY
	F%CDNS==POINT 3,CH,2
	F%BPAR==POINT 1,F.WDNS(I16),4	; MAG-TAPE PARITY
	F%CPAR==POINT 1,CH,4
F.WDIO==22			; DEFERRED ISAM OUTPUT FLAG
	F%BDIO==POINT 1,F.WDIO(I16),5
	F%CDIO==POINT 1,CH,5
F.WOUP==22			; OPEN USE-PROCEDURE WHEN ENTER FAILS
	F%BOUP==POINT 1,F.WOUP(I16),6
	F%COUP==POINT 1,CH,6
F.RMS==22			; RMS FLAG
	F%BRMS==POINT 1,F.RMS(I16),7
	F%CRMS==POINT 1,CH,7
F.WBM==22			; BYTE MODE
	F%BBM==POINT 1,F.WBM(I16),8
	F%CBM==POINT 1,CH,8
F.CKP==22			; CHECKPOINT FLAG
	F%BCKP==POINT 1,F.CKP(I16),9
	F%CCKP==POINT 1,CH,9
F.CRC==22			; CHECKPOINT RECORD COUNT
	F%BCRC==POINT 8,F.CRC(I16),17
	F%CCRC==POINT 8,CH,17
F.RPPN==22			; ADR OF USER-NUMBER [PPN]
	F%BPPN==POINT 18,F.RPPN(I16),35


F.WBRK==24			; BYTE POINTER TO RECORD KEY
F.WBSK==F.WBRK			; EASIEST WAY TO FAKE OUT LIBOL
F.WIKD==25			; ISAM KEY DESCRIPTION WORD
	;THE BYTE POINTERS SUBJECT TO THE DEFINITION OF F.WSMU BELOW ARE INVALID
	; AND THE PROPER ONES APPEAR IN LSU.MAC. THE DOCUMENTATIONS OF
	; THE PROPER BYTE POINTERS ARE GIVEN IN THE COMMENTS SECTION ABOVE.
F.WSMU==26			;
	F%COWN==POINT 9,CH,8	;OWNER ACCESS
	F%COTH==POINT 9,CH,17	;OTHER ACCESS
	F%BSLF==POINT 4,F.WSMU(I16),3	;SELF BYTE FOR OPTION 1
	F%BQOF==POINT 1,F.WSMU(I16),15	;[565] LFENQ. OPEN FLAG
					;[565] 0= NOT AFTER LFENQ. OPEN
					;[565] 1= AFTER LFENQ. OPEN
F.WPFS==27			; POINTER TO FILE-STATUS DATA-ITEM
F.WPEN==30			; POINTER TO ERROR-NUMBER DATA-ITEM
F.WPAC==31			; POINTER TO ACTION-CODE DATA-ITEM
F.WPID==32			; POINTER TO VALUE-OF-ID DATA-ITEM
F.WPBN==33			; POINTER TO BLOCK-NUMBER DATA-ITEM
F.WPRN==34			; POINTER TO RECORD-NUMBER DATA-ITEM
F.WPFN==35			; POINTER TO FILE-NAME DATA-ITEM
F.WPFT==36			; POINTER TO FILE-TABLE ADR DATA-ITEM
F.PROT==37			; POINTER TO FILE PROTECTION CODE
	F%BPRT==POINT 18,F.PROT(I16),17
F.SZID==37			; SIZE OF VALUE-OF-ID
	F%BSID==POINT 8,F.SZID(I16),35
F.PADD==40			; POINTER TO PADDING CHARACTER
F.RMKL==41			; ADDR OF BLOCK OF RMS KEY DESCRIPTORS
				; (IN LEFT HALF)

F.APBL==41			;VARIOUS RMS FILE FLAGS.
	F%NOCR==POINT 1,F.APBL(I16),34	;WRITE / NO-WRITE <CR> FOR ASCII STM
	F%APBL==POINT 1,F.APBL(I16),35 	;APPLY BASIC-LOCKING TO THIS FILE.
SUBTTL	RANDOM ACCESS CONSTANTS

R.IOWD==0	; IOWRD FOR RANDOM/IO FILES
R.TERM==1	; IOWRD TERMINATOR
R.BPNR==2	; BYTE POINTER TO NEXT RECORD IN BUFFER
R.BPLR==3	; LAST RECORD
R.BPFR==4	; FIRST RECORD
R.DATA==6	; BUFFER HAS ACTIVE DATA TO BE WRITTEN OUT
R.WRIT==7	; LAST IO OPERATION FOR THIS FILE WAS A WRITE
R.STRT==10	; LAST IO OPERATION FOR THIS FILE WAS A START
R.DLRW==11	; WORD TO SAVE CURRENT DSK BLK NUM WHILE A DELETE/RERIT
		; IS BEING DONE, SO THAT THE "CURRENT" POSITION CAN BE RESTORED
SUBTTL	ISAM STATISTICS CONSTANTS

	; THE FOLLOWING DEFINES THE TABLE OFFSETS FOR FIELDS WITHIN
	; THE ISAM FILE STATISTICS BLOCK AND THE DATA AREA USED BY
	; LIBOL FOR CURRENT FILE STATIS

ADR==0
DEFINE	TABADR(N,L) <
N==ADR
ADR==ADR+L
>

TABADR	STAHDR,1	;SIZE OF STATISTICS BLOCK IN SIXBIT BYTES
TABADR	DDEVNM,1	;DATA FILE'S DEVICE NAME
TABADR	DFILNM,1	;DATA FILE'S FILE NAME
TABADR	DEXT,1		;DATA FILE'S EXTENSION
TABADR	DCDATE,1	;DATA FILE'S CREATION DATE
TABADR	DADATE,1	;DATA FILE'S ACCESS DATE
TABADR	MXLVL,1		;NUMBER OF LEVELS IN INDEX FILE
TABADR	DBF,1		;DATA FILE BLOCKING FACTOR
TABADR	DMTREC,1	;NUMBER OF EMPTY RECORDS PER DATA BLOCK
TABADR	EPIB,^D20	;TWO WORDS PER INDEX LEVEL
			;FIRST WORD:  NUMBER OF ENTRIES PER INDEX BLOCK
			;SECOND WORD:  NUMBER OF EMPTY ENTRIES
TABADR	DMXBLK,1	;TOTAL BLOCKS IN DATA FILE
TABADR	DMTBLK,1	;EMPTY BLOCKS IN DATA FILE
TABADR	IMXSCT,1	;TOTAL SECTORS IN INDEX FILE
TABADR	IMTSCT,1	;EMPTY SECTORS IN INDEX FILE
TABADR	FMTSCT,1	;FIRST EMPTY SECTOR IN INDEX FILE
TABADR	DMXREC,1	;MAXIMUM DATA RECORD SIZE IN WORDS
TABADR	DBPRK,1		;BYTE POINTER TO RECORD KEY RELATIVE TO DATA RECORD
TABADR	RWRSTA,1	;NUMBER OF READ, WRITE, REWRITE STATEMENTS SINCE INITIALIZATION
TABADR	IOUUOS,1	;NUMBER OF IN'S AND OUT'S SINCE INITIALIZATION
TABADR	SBLOC,1		;RELATIVE ADR OF FIRST SAT BLOCK
TABADR	SBTOT,1		;TOTAL SAT BLOCKS
TABADR	ISPB,1		;INDEX FILE, SECTORS PER LOGICAL BLOCK
TABADR	FILSIZ,1	;MAXIMUM POSSIBLE NUMBER OF DATA BLOCKS IN FILE
TABADR	KEYTYP,0	;KEY-TYPE IN LEFT HALF
TABADR	KEYDES,1	;DESCRIPTION OF RECORD KEY
TABADR	IESIZ,1		;INDEX ENTRY SIZE IN WORDS
TABADR	TOPIBN,1	;TOP INDEX BLOCK NUMBER
TABADR	%DAT,1		;% OF DATA FILE EMPTY
TABADR	%IDX,1		;% OF INDEX FILE EMPTY
TABADR	RECBYT,1	;SIZE OF LARGEST DATA BLOCK IN BYTES
TABADR	MAXSAT,1	;MAX # OF RECORDS FILE CAN BECOME
TABADR	ISAVER,1	;"ISAM" VERSION NUMBER
TABADR	PAGBUF,1	;I/O SW..	0 = SECTOR MULTIPLES, NONZERO = PAGES

STABL==ADR	;EQUALS SIZE OF STATISTICS BLOCK
TABADR	IOWRD,14+1	;TABLE OF DUMP MODE IOWD'S FOR EACH INDEX LEVEL
			;0 DATA BLOCK
			;1-12 INDEX BLOCKS
			;13 SAT BLOCK
			;14 STATISTICS BLOCK
TABADR	OMXLVL,1	;ORIGINAL MAX NUMBER OF LEVELS IN INDEX FILE
TABADR	OKEYDS,1	;[515] KEY DESCRIPTOR AT RESET TIME
TABADR	ORCBYT,1	;[515] RECORD SIZE AT RESET TIME
TABADR	OEPIB,1		;[515] ENTRIES PER INDEX BLOCK AT RESET TIME
TABADR	CORE0,1		;LAST,,FIRST -  CORE AREA CLEARED AT CLOSE
TABADR	ICHAN,1		;CHANNEL NUMBER FOR INDEX DEVICE
TABADR	USOBJ,14+1	;USETI/O OBJECT: DATA, 10 INDEX, SAT & STA
TABADR	CNTRY,14+1	;CURRENT INDEX ENTRY
TABADR	NNTRY,14+1	;FLAG, CNTRY POINTS TO NEXT ENTRY NOT CURRENT
TABADR	LIVE,1		;(-1) IF DATA NOT YET OUTPUT
TABADR	BRISK,1		;IF -1 OUTPUT ONLY WHEN INPUT IS IMMINENT
TABADR	CLVL,1		;CURRENT LEVEL
TABADR	RWDLKY,1	; NNTRY,,ADDR OF CNTRY KEY COPYS FOR RWT/DEL
TABADR	RCARSZ,1	; ReCord ARea SiZe in words
TABADR	RWDLRT,1	; NNTRY,,Addr of RWDLKY during RETAIN
TABADR	SVNXRT,1	; Saves D.RFLG during RETAIN, when none zero flags that
			;  RWDLKY points to RETAINS del/rewrt key save area,
			;  that RWDLKY must be restored at the end of RETAIN

TABADR	PRVRET,1	;HOLDS ADDRESS OF PREVIOUS CNTRY FOR THIS FILE IN CASE RETAIN NEXT FOLLOWS
TABADR	PRVSKB,1	;HOLDS BYTE PTR OF RRT ENTRY FOR PREVIOUS CNTRY FOR THIS FILE
TABADR	IAKBP,1		;INDEX ADJUSTED SYMBOLIC KEY BYTE-POINTER
TABADR	IAKBP1,1	;POINTER TO SECOND KEY WORD
TABADR	DAKBP,1		;DATA ADJUSTED SYMBOLIC KEY BP
TABADR	DAKBP1,1	;POINTER TO THE SECOND KEY WORD
TABADR	SINC,1		;BINARY SEARCH INCREMENT
TABADR	IBLEN,1		;INDEX BLOCK LENGTH NOT COUNTING HEADERS
TABADR	IKWCNT,1	;INDEX, NUMBER OF WORDS IN THE KEY
TABADR	DKWCNT,1	;DATA, NUMBER OF WORDS IN KEY
TABADR	FWMASK,1	;MASK FOR FIRST WORD OF DATA KEY
TABADR	LWMASK,1	;MASK FOR LAST WORD OF DATA KEY
TABADR	ICMP,1		;HOLDS ADR OF THE INDEX COMPARE ROUTINE
TABADR	DCMP,1		;HOLDS ADR OF DATA COMPARE OR CONVERT ROUTINE
TABADR	DCMP1,1		;HOLDS ADR OF DATA COMPARE ROUTINE IF KEY IS NUMERIC DISPLAY
TABADR	GDX.I,1		; ADR OF CONVERT ROUTINE -- SK VS INDEX-ENTRY
TABADR	GDX.D,1		; ADR OF CONVERT ROUTINE -- SK VS DATA FILE KEY
TABADR	GDPSK,1		;PARAMETER FOR SYM-KEY CONVERSION
TABADR	GDPRK,1		;PARAMETER FOR REC-KEY CONVERSION
TABADR	GDPRK1,1	;
TABADR	GETSET,1	;DISPATCH LOC: ADJKEY OR GD67 OR FPORFP
TABADR	RECBP,1		;RECORD AREA BYTE-POINTER
TABADR	RSBP,1		;BYTE POINTER TO RECORD SIZE IN BUFFER
TABADR	RSBP1,1		;ANOTHER BP TO RECORD SIZE
TABADR	LRW,1		;FIRST FREE RECORD WORD, USED BY SETLRW
IFN ISTKS,<
	TABADR	INSSS0,1	;EXP (LVL)INSSSS
	TABADR	OUTSS0,1	;EXP (LVL)OUTSSS
	TABADR	INSSSS,16	;NUMBER OF INS/LEVEL
	TABADR	OUTSSS,16	;NUMBER OF OUTS/LEVEL
>
TABADR	IOWRD0,1	;POINTS TO CURRENT IOWRD
TABADR	USOBJ0,1	;POINTS TO CURRENT USOBJ
TABADR	CNTRY0,1	;POINTS TO CURRENT CNTRY
TABADR	NNTRY0,1	;FLAG, CNTRY POINTS TO NEXT ENTRY
TABADR	BPSB,1		;NUMBER OF BITS PER SAT BLOCK
ITABL==ADR-STABL	;INDEX TABLE LEN 
TABADR	BA,0		;START OF BUFFER AREA
ISCLR1==IOWRD		;[432] [377] START OF ISAM SHARED BUFFER AREA TO SAVE
ISCLR2==ICHAN-1		; [377] END OF ISAM SHARED BUFFER TO SAVE
ISMCLR==ISCLR2-ISCLR1	; [377] DIFFERENCE OR SIZE OF AREA LESS 1 TO SAVE




END