Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-06 - decus/20-153/pure.mac
There are 9 other files named pure.mac in the archive. Click here to see a list.
SUBTTL	PURE CONSTANTS	BOB CURRIER

;WITH DUE CREDIT TO A.BLACKINGTON/CAM/SEB FOR THEIR COBOL PURE CODE
;  WHICH I USED (MOSTLY THE PHASE A STUFF)

; [201] ADDED EXTERNAL COBST.

	DEFINE .TITLE (X),<TITLE X FOR RPGII 1A(1)		>

TWOSEG
RELOC	400000

;THIS SOURCE IS IDENTICAL FOR PROGRAMS PURAB, PUREC, PURED, PUREE & PURFG
;	EXCEPT FOR THE VALUE OF MLOAD.

;ASSEMBLE WITH THE APPROPRIATE PARAMETER FILE PURAB.MAC,
;    PUREC.MAC, PURED.MAC, PUREE.MAC, OR PURFG.MAC TO MAKE THE
;    CORRESPONDING REL FILE




A.==1
B.==2
C.==4
D.==10
E.==20
F.==40
G.==100

AB.==A.!B.
ABC.==A.!B.!C.
ABCD.==A.!B.!C.!D.
ABCDE.==A.!B.!C.!D.!E.
ADEFG.==A.!D.!E.!F.!G.
CDE.==C.!D.!E.
BC.==B.!C.
BCE.==B.!C.!E.
BCD.==B.!C.!D.
BCDE.==B.!C.!D.!E.
BCDEFG==B.!C.!D.!E.!F.!G.
BDE.==B.!D.!E.
CD.==C.!D.
CDEFG.==C.!D.!E.!F.!G.
DE.==D.!E.
DEFG.==D.!E.!F.!G.!
EG.==E.!G.
FG.==F.!G.

IFNDEF %MLOAD,< %MLOAD=="A">		;GIVE THIS A VALUE FOR ONE-SEG COMPILER

IFE %MLOAD-"A",<MLOAD==A.!B.>
IFE %MLOAD-"C",<MLOAD==C.>
IFE %MLOAD-"D",<MLOAD==D.>
IFE %MLOAD-"E",<MLOAD==E.>
IFE %MLOAD-"F",<MLOAD==F.!G.>

	IFN MLOAD&AB.,	<.TITLE PURAB
		SUBTTL CONSTANTS USED BY PHASE A & B
		ENTRY PUREA
		PUREA:
		ENTRY PUREB
		PUREB:
		>

	IFN MLOAD&C.,	<.TITLE PUREC
		SUBTTL CONSTANTS USED BY PHASE C
		ENTRY PUREC
		PUREC:
	>

	IFN MLOAD&D.,	<.TITLE PURED 
		SUBTTL CONSTANTS USED BY PHASE D
		 ENTRY PURED
		 PURED:>

	IFN MLOAD&E.,	<.TITLE PUREE
		 SUBTTL CONSTANTS USED BY PHASE E
		 ENTRY PUREE
		 PUREE:>

	IFN MLOAD&FG.,	<.TITLE PURFG
		 SUBTTL CONSTANTS USED BY PHASES F & G
		ENTRY PUREF
		PUREF:
		ENTRY PUREG
		PUREG:
		>


	INTERNAL MLOAD1
	MLOAD1=="B"	;HIGHEST PHASE IN FIRST MACHINE LOAD
;GET NEXT MACHINE LOAD

IFE	ONESEG,<

	IFN MLOAD&AB.,<INTERNAL RPGIIC
RPGIIC:	MOVE	TA,[SIXBIT "RPGIIC"]
	JRST	GETFAZ
	>

	IFN MLOAD&ABC.,<INTERNAL RPGIID
RPGIID:	SKIPA	TA,[SIXBIT "RPGIID"]
	>

	IFN MLOAD&ABCD.,<INTERNAL RPGIIE
RPGIIE:	MOVE	TA,[SIXBIT "RPGIIE"]
	>

	IFN MLOAD&E.,<INTERNAL RPGIIF
RPGIIF:	MOVE	TA,[SIXBIT "RPGIIF"]
	>

	IFN MLOAD&ABCDE.,<EXTERNAL GETFAZ
	JRST	GETFAZ
	>>


	DEFINE SETUP (A,B), <
		INTERNAL A
		A: B
	>

	DEFINE SETVAL (A,B), <
		INTERNAL A
		A==B>
;CONSTANTS USED BY ALL PHASES


	SETUP ERAPOS,<POINT 7,DW,21>;  CHARACTER POSITION FIELD IN DIAG WORD
	SETUP ERALN,<POINT 13,DW,14>;  LINE NUMBER FIELD IN DIAG WORD
	SETUP ERANUM,<POINT 9,DW,35>;  DIAG NUMBER FIELD IN DIAG WORD
	SETUP ERAFAZ,<POINT 4,DW,25>;  PHASE NUMBER FIELD IN DIAG WORD
	SETUP OUTBOP,<OUTBUF 2>;	OUTBUF UUO
	SETUP INBOP,<INBUF 2>;		INBUF UUO

	SETVAL LINPAG,^D56;		;LINES PER PRINTED PAGE
	SETVAL CPMAXN,^D104		;CHARACTERS PER PRINTED LINE
	SETVAL ENDCL,CPMAXN-^D32	;LAST POSITION IN WHICH A COPIED WORD CAN START

	SETVAL MAXWSS,777777	;SIZE OF LARGEST ALLOWED ITEM IN WORKING-STORAGE
	SETVAL MAXFSS,7777	;SIZE OF LARGEST ALLOWED ITEM IN FILE SECTION
	SETVAL MAXOCC,77777	;GREATEST NUMBER OF OCCURENCES ALLOWED
	SETVAL WRKSIZ,^D10*2000	;SIZE OF IMPURE AREA
	SETVAL NAMCST,2		;A CONSTANT USED BY TRYNAM&BLDNAM

EXTERNAL PPSIZE,PPLIST

	SETUP PPOINT,<XWD PPSIZE,PPLIST-1>
;PARAMETERS USED WHEN PLAYING WITH TABLE LINKS

	SETUP LNKCOD,<POINT 3,TA,20>	;CODE IN A TABLE LINK
	SETVAL LMASKB,77777	;MASK OF LINK BITS FOR TABLE-LINK OF BIG TABLE
	SETVAL LMASKS,77777	;SAME FOR SMALL TABLE
	DEFINE TABVAL (NAME,CODE),<
	INTERNAL TB.'NAME,TC.'NAME,TM.'NAME
	TB.'NAME==CODE
	TC.'NAME==CODE'*100000
	TM.'NAME==77777
	>

	TABVAL FIL,0
	TABVAL DAT,1
	TABVAL LIT,2
	TABVAL VAL,3
	TABVAL PRO,4
	TABVAL EXT,5
	TABVAL ICH,6
	TABVAL IND,7

	SETVAL TM.TAG,77777
;CONSTANTS USED BY PHASE A

	IFN MLOAD&A.!ONESEG,<

	SETUP ENTROP,<ENTER I1>;  ENTER UUO


;QUANTUM VALUES FOR SIZES OF NM1TAB&NM2TAB.
;SEE 'NTNSIZ' IN IMPURE FOR NUMBER OF ENTRIES.

	SETVAL NTSIZE,.
	DEC	1009
	DEC	1499
	DEC	1999
	DEC	2503
	DEC	3001
	DEC	3499
	DEC	4001
	DEC	4507
	DEC	5003
	DEC	5501
	DEC	6007
	DEC	6491
	DEC	7001
	DEC	7499
	DEC	8009
	DEC	8501
	DEC	9001
	DEC	9497
	DEC	10007

>
;CONSTANTS USED BY PHASES A,B,C,D

	IFN MLOAD&ABCDE.!ONESEG,<

	SETUP I0CHAN,<POINT 4,I0,12>;  AC FIELD OF "I0"
	SETUP OPENOP,<OPEN I1>;	OPEN UUO
	SETUP LOOKOP,<LOOKUP I1>;	LOOKUP UUO

	SETUP	ALLSPC,SIXBIT/      /	; WORD OF ALL SPACES FOR COMPARISON WITH PROGRAM ID

	SETVAL TRACEI,1B32	;CORESW FLAG FOR TRACEING ID
	SETVAL TRACEE,1B33	;CORESW FLAG FOR TRACEING ED
	SETVAL TRACED,1B34	;CORESW FLAG FOR TRACEING DD
	SETVAL TRACEP,1B35	;CORESW FLAG FOR TRACEING PD

	SETUP NAMVAL,<POINT 15,(TA),17>;VALUE OF RESERVED WORD IN NAMTAB ENTRY

	SETUP KASC,<SIXBIT/ASCII/>
	SETUP KBUF,<SIXBIT/BUFOF/>	;CONSTANTS USED BY FI SCAN

	>
	IFN MLOAD&DE.!ONESEG,<
;GENFIL OPERATOR CODES


	SETVAL	OPADD,	001		; ADD 2 TO 1
	SETVAL	OPZADD,	002		; CLEAR R, ADD 2
	SETVAL	OPSUB,	003		; SUBTRACT 2 FROM 1
	SETVAL	OPZSUB,	004		; CLEAR R, SUBTRACT 2
	SETVAL	OPMULT,	005		; MULTIPLY 1 BY 2
	SETVAL	OPDIV,	006		; DIVIDE 1 BY 2
	SETVAL	OPMVR,	007		; MOVE REMAINDER TO R

	SETVAL	OPXFOT,	010		; SUM ARRAY ELEMENTS INTO R
	SETVAL	OPSQRT,	011		; DERIVE SQUARE ROOT OF 2
	SETVAL	OPMOVE,	012		; MOVE 2 TO R, RIGHT JUSTIFIED
	SETVAL	OPMOVL,	013		; MOVE 2 TO R, LEFT JUSTIFIED
	SETVAL	OPMLLZ,	014		; MOVE ZONE OF LOW 2 TO LOW R
	SETVAL	OPMHHZ,	015		; MOVE ZONE OF HIGH 2 TO HIGH R
	SETVAL	OPMLHZ,	016		; MOVE ZONE OF LOW 2 TO HIGH R
	SETVAL	OPMHLZ,	017		; MOVE ZONE OF HIGH 2 TO LOW R

	SETVAL	OPCOMP,	020		; COMPARE FACTOR 1 TO 2
	SETVAL	OPTSTZ,	021		; IDENTIFY ZONE OF R
	SETVAL	OPBITN,	022		; SET ON SPECIFIED BITS
	SETVAL	OPBITF,	023		; SET OFF SPECIFIED BITS
	SETVAL	OPTSTB,	024		; TEST SPECIFIED BITS
	SETVAL	OPSETN,	025		; SET ON SPECIFIED INDICATORS
	SETVAL	OPSETF,	026		; SET OFF SPECIFIED INDICATORS
	SETVAL	OPGOTO,	027		; BRANCH

	SETVAL	OPTAG,	030		; DEFINE TAG
	SETVAL	OPEXIT,	031		; BRANCH TO EXTERNAL ROUTINE
	SETVAL	OPRLAB,	032		; TRANSFER DATA TO EXTERNAL ROUTINE
	SETVAL	OPTLOK,	033		; TABLE LOOKUP
	SETVAL	OPALOK,	034		; ARRAY LOOKUP
	SETVAL	OPBGSR,	035		; BEGIN SUBROUTINE
	SETVAL	OPENSR,	036		; END SUBROUTINE
	SETVAL	OPEXSR,	037		; CALL SUBROUTINE

	SETVAL	OPFORC,	040		; FORCE I/O
	SETVAL	OPXCPT,	041		; FORCE OUTPUT PRINTING
	SETVAL	OPDSPL,	042		; GET/PUT DATA ON USER TTY
	SETVAL	OPREAD,	043		; READ FROM DEMAND FILE
	SETVAL	OPCHAN,	044		; CHAIN
	SETVAL	OPDBUG,	045		; DUMP DEBUG DATA
	SETVAL	OPDET,	046		; DETAIL ESCAPE
	SETVAL	OPCAL,	047		; TOTAL ESCAPE

	SETVAL	OPMOVA,	050		; MOVE ALL
	SETVAL	OPTIME,	051		; GET TIME OF DAY

	>
	DEFINE D.PNTR (TBLNAM,TBLID),<

	DEFINE TBLID'.ITM (ITMID,WRDNO,LFTBIT,RTBIT),<
	INTERNAL TBLID'.'ITMID
TBLID'.'ITMID: POINT RTBIT-LFTBIT+1,WRDNO-1(TA),RTBIT
	>

	DEFINE TBLID'.FLG (FLGID,WRDNO,BITNO),<
	INTERNAL TBLID'.'FLGID
TBLID'.'FLGID: POINT 1,WRDNO-1(TA),BITNO
	>
	>

	RADIX 10
;FILTAB DEFINITIONS

	IFN MLOAD&BCDEFG!ONESEG,<

	D.PNTR	FILTAB,FI

	FI.ITM	NAM,1,3,17;	NAMTAB LINK
	FI.ITM	TYP,1,18,20;	FILE TYPE
	FI.ITM	DES,1,21,23;	FILE DESIGNATION
	FI.ITM	PRO,1,24,26;	PROCESSING MODE
	FI.ITM	ORG,1,27,28;	FILE ORGANIZATION
	FI.ITM	RAF,1,29,30;	RECORD ADDRESS FORMAT
	FI.ITM	DEV,1,31,34;	DEVICE NAME
		SETVAL	.FIMF1,0;	MFCU1
		SETVAL	.FIMF2,1;	MFCU2
		SETVAL	.FICDR,2;	READ01
		SETVAL	.FILPT,3;	PRINTER
		SETVAL	.FILP2,4;	PRINTR2 (obsolete)
		SETVAL	.FITTY,5;	CONSOLE
		SETVAL	.FIDSK,6;	DISK
		SETVAL	.FIMTA,7;	TAPE0-TAPE9
	FI.FLG	EOF,1,35;	END OF FILE PROCESSING

	FI.ITM	KYP,2,0,11;	KEY POSITION
	FI.ITM	BKL,2,12,23;	BLOCK LENGTH
	FI.ITM	RCL,2,24,35;	RECORD LENGTH
	FI.ITM	SEQ,3,0,1;	SEQUENCE CHECKING
	FI.ITM	BUF,3,2,8;	TAPE BUFFER OFFSET
	FI.FLG	AST,3,9;	ASCII TAPE OPTION
	FI.ITM	REW,3,10,11;	TAPE REWIND OPTION
	FI.ITM	EXT,3,12,17;	NUMBER OF EXTENTS
	FI.ITM	ADD,3,18,19;	FILE ADDITION
	FI.ITM	OVI,3,20,27;	OVERFLOW INDICATOR
	FI.FLG	ADF,3,28;	RA LINK FLAG
	FI.ITM	LPP,3,29,35;	LINES PER PAGE
	FI.ITM	OVL,4,0,5;	OVERFLOW LINE
	FI.ITM	UNT,4,6,9;	unit number for mag-tapes
	FI.ITM	KYL,4,12,16;	LENGTH OF KEY FIELD
	FI.ITM	EXI,4,17,24;	EXTERNAL INDICATOR
	FI.ITM	COR,5,0,17;	CORE INDEX SIZE
	FI.ITM	ADL,5,18,35;	LINK TO ADDROUT OR LIMIT FILE
	FI.ITM	DAT,6,0,17;	LINK TO DATAB
	FI.ITM	LIN,6,18,29;	LINE NUMBER OF FILE SPEC
	FI.ITM	PHY,7,0,35;	PHYSICAL NAME OF FILE
	FI.ITM	OTF,8,0,17;	link to corresponding OTFTAB item

>
;DATAB DEFINITIONS

	IFN MLOAD&BCDEFG!ONESEG,<

	D.PNTR	DATTAB,DA

	DA.ITM	NAM,1,3,17;	NAMTAB LINK
	DA.ITM	MAJ,1,18,35;	LINK TO NEXT MAJOR ITEM
	DA.ITM	BRO,2,0,17;	LINK TO NEXT MINOR ITEM
	DA.ITM	IND,2,18,35;	LINK TO INDICATORS
	DA.ITM	VAL,3,0,17;	LINK TO VALUE
	DA.ITM	COR,3,18,35;	LINK TO CORE LOCATION
	DA.ITM	NPS,4,0,1;	NUMBER OF ENTRIES/SEQ TYPE
	DA.FLG	RTR,4,2;	RECORD TYPE REQUIRED
	DA.FLG	TRA,4,3;	TRAILER ITEM
	DA.FLG	LHI,4,4;	LOOK-AHEAD ITEM
	DA.ITM	STS,4,5,7;	STACKER SELECT
	DA.ITM	FLD,4,8,9;	FIELD TYPE
	DA.ITM	SIZ,4,10,21;	FIELD SIZE
	DA.ITM	DEC,4,22,25;	DECIMAL POSITIONS
	DA.FLG	PRI,4,26;	PRINT & PUNCH
	DA.FLG	PRO,4,27;	PRINT ONLY
	DA.FLG	STR,4,28;	STIRLING SIGN
	DA.ITM	RES,4,29,34;	BYTE RESIDUE FOR CORE POINTER
	DA.FLG	IMD,4,35;	IMMEDIATE INDEX
	DA.ITM	RII,5,0,7;	RECORD IDENTIFYING INDICATOR
	DA.ITM	CLI,5,8,15;	CONTROL LEVEL INDICATOR
	DA.ITM	FPL,5,16,23;	POSITIVE FIELD INDICATOR
	DA.ITM	STP,5,24,35;	STIRLING POSITION
	DA.ITM	ORT,6,0,1;	OUTPUT RECORD TYPE
	DA.FLG	ARC,6,2;	ADD RECORD
	DA.FLG	FOV,6,3;	FETCH OVERFLOW
	DA.ITM	SPA,6,4,5;	SPACE AFTER
	DA.ITM	SKA,6,6,12;	SKIP AFTER
	DA.ITM	EDT,6,13,16;	EDIT CODE
	DA.FLG	BLA,6,17;	BLANK AFTER
	DA.ITM	SPB,6,18,19;	SPACE BEFORE
	DA.ITM	END,6,20,31;	END POSITION
	DA.FLG	LDC,6,32;	LOAD AT COMPILE TIME
	DA.FLG	LDR,6,33;	LOAD AT PRE-EXECUTION TIME
	DA.FLG	LDE,6,34;	LOAD AT EXECUTION
	DA.FLG	DMP,6,35;	DUMP AT END OF JOB
	DA.ITM	OCC,7,0,14;	NUMBER OF OCCURS
	DA.FLG	ALT,7,15;	ALTERNATE TABLE
	DA.FLG	INF,7,16;	INPUT SECTION FLAG
	DA.FLG	RND,7,17;	ROUND THE RESULT (HALF-ADJUST)
	DA.ITM	ALL,7,18,35;	TABLE LINK TO ALT TABLE
	DA.ITM	EPR,8,0,9;	ENTRIES/RECORD
	DA.ITM	SEQ,8,10,11;	SEQUENCE CHECKING
	DA.FLG	ARE,8,12;	ARRAY ENTRY
	DA.FLG	ADD,8,13;	ADD RECORD
	DA.ITM	FMT,8,14,17;	FIELD FORMAT (IE SIXBIT, ASCII,EBCDIC)
	DA.ITM	LDP,8,18,35;	POINTER TO FILE THIS LOADS FROM
	DA.ITM	DPP,9,0,17;	POINTER TO FILE THIS DUMPS TO
	DA.ITM	SNM,9,18,35;	LINK TO ITEM WITH SAME NAME
	DA.ITM	FRP,10,0,11;	FROM POINTER
	DA.ITM	TOP,10,12,23;	TO POINTER
	DA.ITM	MAT,10,24,31;	MATCHING RECORD INDICATOR
	DA.FLG	TAB,10,32;	TABLE FLAG (VALID FOR OCHTAB ITEMS ONLY)
	DA.ITM	FMN,11,0,7;	NEGATIVE FIELD INDICATOR
	DA.ITM	FBZ,11,8,15;	BLANK OR ZERO FIELD INDICATOR
	DA.ITM	SKB,11,16,22;	SKIP BEFORE
	DA.ITM	FRR,11,23,30;	FIELD RECORD RELATION
	DA.FLG	DUN,11,31;	ITEM SEEN
	DA.FLG	NDF,11,32;	NOT FULLY DEFINED
	DA.FLG	FLS,11,33;	defined in file section
	DA.ITM	ICH,12,0,17;	ICHTAB POINTER
	DA.ITM	ARP,12,18,35;	POINTER TO ARRAY
	DA.ITM	INP,13,0,17;	POINTER TO INDEX
	DA.ITM	LIN,13,18,30;	LINE NUMBER
	DA.FLG	LTF,13,31;	LITERAL FLAG
	DA.ITM	RSV,13,32,35;	RESERVED WORD FLAG/CODE
	DA.ITM	ISZ,14,0,11;	input size
	>
;EXTAB DEFINITIONS

	IFN MLOAD&BCDEFG!ONESEG.,<

	D.PNTR	EXTTAB,EX

	EX.ITM	NAM,1,3,17	;NAMTAB LINK
	EX.FLG	NRS,2,0;	USED BY NON-RESIDENT SEGMENT
	EX.FLG	USN,2,1;	OPSYS OR USER NAME
	EX.FLG	PID,2,2;	PROGRAM-ID ENTRY
	EX.FLG	ENT,2,3		;ENTRY ENTRY
	EX.FLG	CAL,2,4		;REFERENCED BY A CALL
	EX.ITM	CNT,2,15,17	;COUNT OF EXTRA WORDS ALLOCATED
	EX.ITM	HLD,2,18,35	;MISC USES (INCL HLDTAB LNK FOR CANCEL)

	>


;PROTAB DEFINITIONS

	IFN MLOAD&BCDEFG!ONESEG,<

	D.PNTR	PROTAB,PR

	PR.ITM	ID,1,0,2;	TABLE ID
	PR.ITM	NAM,1,3,17;	NAMTAB LINK
	PR.ITM	LNK,1,18,35;	LINK TO ASSIGNED CORE LOCATION
	PR.FLG	SEG,2,0;	SEGMENT FLAG
	PR.FLG	BSR,2,1;	BEGSR FLAG

	>
;OTFTAB DEFINITIONS

	IFN	MLOAD&EG.!ONESEG,<

	D.PNTR	OTFTAB,OT

	OT.ITM	COR,1,0,17;		POINTER TO CORE INDEX	*
	OT.ITM	ADP,1,18,35;		POINTER TO ADDROUT	*
	OT.ITM	BFP,2,0,17;		POINTER TO RECORD BUFFER*
	OT.ITM	OPC,2,18,35;		POINTER TO OUTPUT CHAIN	*
	OT.ITM	IPC,3,0,17;		POINTER TO INPUT CHAIN	*
	OT.ITM	FTB,3,18,35;		POINTER TO FTBTAB ENTRY	*
	OT.ITM	NAM,4,0,35;		PHYSICAL NAME
	OT.ITM	TYP,5,0,2;		FILE TYPE
	OT.ITM	DES,5,3,5;		FILE DESCRIPTION
	OT.ITM	PRO,5,6,8;		PROCESSING MODE
	OT.ITM	ORG,5,9,10;		ORGANIZATION
	OT.ITM	RAF,5,11,12;		RECORD ADDRESS FORMAT
	OT.ITM	DEV,5,13,16;		DEVICE
	OT.FLG	EOF,5,17;		EOF PROCESSING FLAG
	OT.ITM	BLK,5,18,35;		BLOCKING FACTOR
	OT.ITM	KYP,6,0,11;		KEY POSITION
	OT.ITM	SEQ,6,12,13;		SEQUENCE CHECKING
	OT.ITM	BUF,6,14,19;		BUFFER OFFSET
	OT.FLG	AST,6,20;		ASCII TAPE OPTION
	OT.ITM	REW,6,21,22;		REWIND OPTION
	OT.ITM	EXT,6,23,28;		NUMBER OF EXTENTS
	OT.ITM	ADD,6,29,30;		FILE ADDITION OPTION
	OT.ITM	KYL,6,31,35;		LENGTH OF KEY FIELD
	OT.ITM	OVI,7,0,7;		OVERFLOW INDICATOR
	OT.ITM	EXI,7,8,15;		EXTERNAL INDICATOR
	OT.ITM	OVL,7,16,21;		OVERFLOW LINE
	OT.ITM	CHN,7,28,31;		CURRENT CHANNEL
	OT.ITM	CHI,7,32,35;		INDEX CHANNEL
	OT.ITM	CRS,8,0,17;		CORE INDEX SIZE
	OT.ITM	BSZ,8,18,35;		BUFFER SIZE (WORDS)
	OT.ITM	BSC,9,0,17;		BUFFER SIZE (CHARACTERS)
	OT.FLG	LAS,9,18;		I AM LAST
	OT.ITM	LPP,9,19,25;		LINES PER PAGE

OTFSIZ==:^D9;				SIZE OF OTFTAB ENTRY

	>
;OCHTAB DEFINITIONS

	IFN	MLOAD&EG.!ONESEG,<

	D.PNTR	OCHTAB,OC

	OC.ITM	IDX,1,0,17;		POINTER TO INDEX	*
	OC.ITM	NXR,1,18,35;		NEXT RECORD		*
	OC.ITM	NXF,2,0,17;		NEXT FIELD		*
	OC.ITM	IND,2,18,35;		INDTAB POINTER		*
	OC.ITM	SRC,3,0,35;		SOURCE POINTER		*
	OC.ITM	FLD,4,0,1;		FIELD TYPE
	OC.ITM	SIZ,4,2,13;		SIZE
	OC.ITM	DEC,4,14,17;		DECIMAL POSITIONS
	OC.ITM	STP,4,18,29;		STERLING POSITION
	OC.FLG	PRI,4,30;		MFCU PRINT & PUNCH
	OC.FLG	PRO,4,31;		MFCU PRINT ONLY
	OC.FLG	STR,4,32;		STERLING SIGN
	OC.ITM	ORT,4,33,34;		OUTPUT RECORD TYPE
	OC.FLG	ADD,4,35;		ADD A RECORD
	OC.FLG	FOV,5,0;		FORCED OVERFLOW
	OC.ITM	SKB,5,1,7;		SKIP BEFORE
	OC.ITM	SKA,5,8,14;		SKIP AFTER
	OC.ITM	SPB,5,15,16;		SPACE BEFORE
	OC.ITM	SPA,5,17,18;		SPACE AFTER
	OC.ITM	END,5,19,30;		END POSITION
	OC.ITM	STS,5,31,34;		STACKER SELECT
	OC.FLG	IMD,5,35;		INDEX IMMEDIATE
	OC.ITM	OCC,6,0,14;		OCCURS
	OC.ITM	EDT,6,15,18;		EDIT CODE
	OC.FLG	LTF,6,19;		LITERAL OUTPUT FLAG
	OC.ITM	LSZ,6,20,28;		SIZE OF LITERAL
	OC.ITM	RSV,6,29,32;		RESERVED WORD
	OC.FLG	BLA,6,33;		BLANK AFTER
	OC.FLG	TAB,6,34;		TABLE FLAG
	OC.ITM	ARP,7,0,17;		ARRAY POINTER		*
	OC.ITM	EDP,7,18,35;		EDIT WORD/LITERAL PNTR	*

	>
;ICHTAB DEFINITIONS

	IFN	MLOAD&EG.!ONESEG,<

	D.PNTR	ICHTAB,IC

	IC.ITM	DES,1,0,35;		ASSIGNED CORE LOC	*
	IC.ITM	RII,2,0,17;		POINTER TO IDTTAB RII	*
	IC.ITM	NXF,2,18,35;		NEXT FIELD		*
	IC.ITM	NXR,3,0,17;		NEXT RECORD		*
	IC.ITM	ARP,3,18,35;		POINTER TO ARRAY	*
	IC.ITM	INP,4,0,17;		POINTER TO INDEX	*
	IC.ITM	FMN,5,0,7;		MINUS INDICATOR
	IC.ITM	FBZ,5,8,15;		BLANK/ZERO INDICATOR
	IC.ITM	FPL,5,16,23;		PLUS INDICATOR
	IC.ITM	CLI,5,24,31;		CONTROL LEVEL INDICATOR
	IC.ITM	NPS,5,32,33;		NUMBER PER SEQUENCE
	IC.ITM	FLD,5,34,35;		FIELD TYPE
	IC.ITM	FRR,6,0,7;		FIELD RECORD RELATION
	IC.ITM	MAT,6,8,15;		MATCHING INDICATOR
	IC.FLG	RTR,6,16;		RECORD TYPE REQUIRED
	IC.FLG	LHI,6,17;		LOOK AHEAD ITEM
	IC.ITM	STS,6,18,20;		STACKER SELECT
	IC.ITM	SIZ,6,21,32;		SIZE
	IC.ITM	SEQ,6,33,34;		SEQUENCE CHECK
	IC.FLG	IMD,6,35;		IMMEDIATE
	IC.ITM	SRC,7,0,11;		CHARACTER POSITION IS SOURCE
	IC.ITM	OCC,7,12,26;		OCCURS
	IC.ITM	FMT,7,27,31;		DATA FORMAT

	>
;INDTAB DEFINITIONS

	IFN	MLOAD&CDEFG.!ONESEG,<

	D.PNTR	IDTTAB,ID

	ID.FLG	OR,1,0;			OR/AND FLAG
	ID.FLG	NOT,1,1;		NOT FLAG
	ID.ITM	IND,1,2,9;		INDICATOR/CHARACTER
	ID.ITM	POS,1,10,21;		POSITION
	ID.FLG	END,1,22;		END FLAG
	ID.ITM	RII,1,23,30;		RII (OR LINE ONLY)
	ID.ITM	SEQ,1,31,35;		ASSIGNED SEQ NUMBER (OR LINE ONLY)

	ID.ITM	SPB,1,18,19;		[357] space before
	ID.ITM	SKB,1,20,26;		[357] skip before
	ID.ITM	SPA,1,27,28;		[357] space after
	ID.ITM	SKA,1,29,35;		[357] skip after

	>
;FTBTAB DEFINITIONS

	IFN	MLOAD&EG.!ONESEG,<

	D.PNTR	FTBTAB,FT

	FT.ITM	FNM,1,0,35;		FILE NAME
	FT.ITM	CVR,6,0,5;		COMPILER VERSION NUMBER
	FT.FLG	BLC,6,6;		BUFFER LOCATION IS ASSIGNED
	FT.FLG	SDF,6,7;		SORT DESCRIPTOR FLAG
	FT.ITM	NOD,6,8,17;		NUMBER OF DEVICES
	FT.ITM	DNM,6,18,35;		ADDR OF FIRST DEVICE NAME
	FT.ITM	NFL,7,0,4;		NUMBER OF FILE LIMITS
	FT.ITM	PMT,7,5,17;		FILE POSITION ON MAG-TAPE
	FT.ITM	NFT,7,18,35;		NEXT FILE TABLE
	FT.ITM	NAB,8,0,4;		NUMBER OF ALTERNATE BUFFERS
	FT.ITM	MRS,8,5,17;		MAXIMUM RECORD SIZE (CHARACTERS)
	FT.ITM	RRC,8,18,35;		RECORDS BETWEEN RERUN DUMP
	FT.FLG	VLR,9,0;		VARIABLE LENGTH EBCDIC RECORDS
	FT.FLG	NSL,9,2;		NON-STANDARD LABELS
	FT.FLG	STL,9,3;		STANDARD LABELS
	FT.FLG	IOF,9,6;		INPUT/OUTPUT FILE
	FT.ITM	DDM,9,7,9;		DEVICE DATA MODE
	FT.FLG	RRE,9,10;		RERUN DUMP AT END-OF-REEL
	FT.FLG	RCR,9,11;		RERUN ON RECORD COUNT
	FT.FLG	OPT,9,13;		FILE IS OPTIONAL
	FT.ITM	CDM,9,14,15;		CORE DATA MODE
	FT.ITM	MOD,9,16,17;		I/O MODE
	FT.ITM	REC,9,18,35;		ADDRESS OF RECORD AREA
	FT.ITM	NLS,10,0,17;		NON-STANDARD LABEL SIZE
	FT.ITM	FSD,10,18,35;		LINK TO FILE THAT SHARES DEVICE
	FT.ITM	BKF,11,6,17;		BLOCKING FACTOR
	FT.ITM	ACK,11,18,35;		ADDRESS OF ACTUAL KEY TABLE
	FT.ITM	VID,12,0,35;		BYTE POINTER TO VALUE-OF-ID
	FT.ITM	VDW,13,0,35;		BYTE POINTER TO VALUE-OF-DATE-WRITTEN
	FT.ITM	SBA,14,0,17;		LINK TO FILE THAT SHARES BUFFER AREA
	FT.ITM	EUP,14,18,35;		ADDRESS OF ERROR-USE PROCEDURE
	FT.ITM	BBR,15,0,17;		ADDRESS OF BEFORE-BEGINNING-REEL PROCEDURE
	FT.ITM	BBF,15,18,35;		ADDRESS OF BEFORE-BEGINNING-FILE PROCEDURE
	FT.ITM	ABR,16,0,17;		ADDRESS OF AFTER-BEGINNING-REEL PROCEDURE
	FT.ITM	ABF,16,18,35;		ADDRESS OF AFTER-BEGINNING-FILE PROCEDURE
	FT.ITM	BER,17,0,17;		ADDRESS OF BEFORE-ENDING-REEL PROCEDURE
	FT.ITM	BEF,17,18,35;		ADDRESS OF BEFORE-ENDING-FILE PROCEDURE
	FT.ITM	AER,18,0,18;		ADDRESS	OF AFTER-ENDING-REEL PROCEDURE
	FT.ITM	AEF,18,18,35;		ADDRESS OF AFTER-ENDING-FILE PROCEDURE
	FT.ITM	DNS,19,0,2;		MAGTAPE DENSITY
	FT.FLG	PAR,19,4;		MAGTAPE PARITY
	FT.FLG	OUP,19,5;		OPEN USE-PROCEDURE WHEN ENTER FAILS
	FT.ITM	PPN,19,18,35;		POINTER TO PPN
	FT.ITM	BSK,20,0,35;		BYTE POINTER TO SYMBOLIC KEY
	FT.ITM	BRK,21,0,35;		BYTE POINTER TO RECORD KEY
	FT.ITM	KTY,22,15,17;		ISAM KEY TYPE
	FT.FLG	KSG,22,20;		ISAM KEY IS SIGNED
	FT.ITM	KLB,22,24,35;		ISAM KEY LENGTH IN BYTES
	FT.ITM	OWA,23,0,8;		OWNER WRITE ACCESS FOR ISAM
	FT.ITM	OTA,23,9,17;		OTHER WRITE ACCESS FOR ISAM
	FT.ITM	RTC,23,18,35;		ISAM RETAINED RECORD COUNT
	FT.ITM	PFS,24,0,35;		POINTER TO FILE-STATUS DATA ITEM
	FT.ITM	PEN,25,0,35;		POINTER TO ERROR-NUMBER DATA-ITEM
	FT.ITM	PAC,26,0,35;		POINTER TO ACTION-CODE DATA ITEM
	FT.ITM	PID,27,0,35;		POINTER TO VALUE-OF-ID DATA ITEM
	FT.ITM	PBN,28,0,35;		POINTER TO BLOCK-NUMBER DATA ITEM
	FT.ITM	PRN,29,0,35;		POINTER TO RECORD-NUMBER DATA ITEM
	FT.ITM	PFN,30,0,35;		POINTER TO FILE-NAME DATA ITEM
	FT.ITM	PFT,31,0,35;		POINTER TO FILE-TABLE DATA ITEM
	FT.ITM	LHL,32,0,35;		POINTER TO LOW,,HIGH FILE LIMIT
	>
;ARRTAB definitions

	IFN	MLOAD&E.!ONESEG,<

	D.PNTR	ARRTAB,AR

	AR.ITM	PNT,1,0,35;		pointer to array
	AR.ITM	SIZ,2,0,9;		size of array entry
	AR.ITM	OCC,2,10,19;		number of array entries
	AR.ITM	EPR,2,20,29;		number of entries/record
	AR.FLG	LDM,2,30;		is 1 if dump, 0 if load
	AR.FLG	LAS,2,31;		this is the last item
	AR.ITM	FIL,3,0,17;		link to OTFTAB item for file
	AR.ITM	ASZ,3,18,27;		size of alternating item
	AR.ITM	ALT,4,0,35;		pointer to alternating array

	>
;FLAGS AND BITS IN GENFIL OPERATORS

	IFN MLOAD&DE.!ONESEG,<

	EXTERNAL OPRTR


OBIT9:	POINT 1,OPRTR,9
OBIT10:	POINT 1,OPRTR,10
OBIT11:	POINT 1,OPRTR,11
OBIT12:	POINT 1,OPRTR,12
OBIT13:	POINT 1,OPRTR,13
OBIT14:	POINT 1,OPRTR,14
OBIT15:	POINT 1,OPRTR,15

	DEFINE OPBIT (X,Y),<SETVAL OP.'X,OBIT'Y>
	DEFINE OPFLD (W,X,Y,Z),<SETUP OP.'W,<POINT X,OPRTR+Z,Y>>

;FIELDS IN OPRTR WORD

	OPFLD	LN,13,28,0		; LINE NUMBER
	OPFLD	OP,8,8,0		; OP-CODE
	OPFLD	OPR,1,0,0		; OPERAND FLAG
	OPFLD	LIT,1,1,0		; LITERAL FLAG
	OPFLD	AC,1,2,0		; TEMP/AC FLAG
	OPFLD	LNK,18,35,0		; TABLE LINK
	OPFLD	NUM,1,2,0		; NUMERIC/ALPHA FLAG
	OPFLD	FIG,1,3,0		; FIGURATIVE CONSTANT FLAG

	>
	RADIX 8

;CONSTANTS USED BY B,C,D,E,F,G

	IFN MLOAD&BCDEFG!ONESEG,<

	SETUP TABCOD,<POINT 3,0(DT),2>	;TABLE CODE IN MAJOR TABLES

	SETVAL FTFLAG,5	;FILTAB WORD WHICH CONTAINS FLAGS
	SETUP FTBLOK,<POINT 7,4(DT),11>	;BLOCKING FACTOR FOR FILE
	SETUP FTDEVC,<POINT 6,3(DT),17>	;NUMBER OF DEVICES FOR THE FILE
	SETUP FTCMOD,<POINT 2,5(DT),15>	;CORE MODE (0=SIXBIT,2=ASCII)
	SETUP FTRSIZ,<POINT 12,6(DT),17> ;RECORD SIZE IN FILE-TABLE
	SETUP FTAMOD,<POINT 2,5(DT),17>	;ACCESS MODE IN FILTAB
	SETUP FTRMOD,<POINT 2,5(DT),1>	;RECORDING MODE IN FILTAB
	SETUP FTLABL,<POINT 2,5(DT),3>	;LABEL DEFINITION IN FILTAB
	SETUP FTRECD,<POINT 18,6(DT),35>;LOCATION OF "DATA RECORD" LINK IN FILE-TABLE
	SETUP FTDBAS,<POINT 18,^D15(DT),35>;BASE ADDRESS FOR ASSOCIATED DATA ENTRIES
	SETUP PTSEGN,<POINT 1,1(DT),0>	;SEGMENT NUMBER FOR PROTAB
	SETVAL PTFLAG,2		;PROTAB WORD WHICH CONTAINS FLAGS

	>
;ASSEMBLY CODES

	IFN MLOAD&BCDEFG!ONESEG,<

	SETVAL AC.CNS,0	;ADDRESS IS A CONSTANT .LT. 100000
	SETVAL AC.ICH,1	;ADDRESS IS AN ICHTAB ENTRY
	SETVAL AC.PRO,2	;ADDRESS IS A PROCEDURE NAME
	SETVAL AC.EXT,3	;ADDRESS IS AN EXTERNAL NAME
	SETVAL AC.FTB,4	;ADDRESS IS AN FTBTAB ENTRY
	SETVAL AC.OCH,5	;ADDRESS IS AN OCHTAB ENTRY
	SETVAL AC.CNB,6	;ADDRESS IS A CONSTANT .GT. 77777
	SETVAL AC.MSC,7	;ADDRESS IS MISCELLANEOUS

	SETVAL AS.CNS,<AC.CNS*1B20>
	SETVAL AS.ICH,<AC.ICH*1B20>
	SETVAL AS.PRO,<AC.PRO*1B20>
	SETVAL AS.EXT,<AC.EXT*1B20>
	SETVAL AS.FTB,<AC.FTB*1B20>
	SETVAL AS.OCH,<AC.OCH*1B20>
	SETVAL AS.CNB,<AC.CNB*1B20>
	SETVAL AS.MSC,<AC.MSC*1B20>

	SETVAL AC.ABS,0	;INCREMENT IS ABSOLUTE NUMBER
	SETVAL AC.OTB,1	;INCREMENT TO %OTF
	SETVAL AC.OCB,2	;OCHBAS
	SETVAL AC.LIT,3	;INCREMENT TO %LIT
	SETVAL AC.ICB,4	;ICHBAS
	SETVAL AC.DOT,5	;CURRENT PC
	SETVAL AC.TMP,6	;INCREMENT TO %TEMP
	SETVAL AC.DAT,7	;DATBAS

	SETVAL AS.ABS,<AC.ABS*1B20>
	SETVAL AS.OTB,<AC.OTB*1B20>
	SETVAL AS.OCB,<AC.OCB*1B20>
	SETVAL AS.LIT,<AC.LIT*1B20>
	SETVAL AS.ICB,<AC.ICB*1B20>
	SETVAL AS.DOT,<AC.DOT*1B20>
	SETVAL AS.TMP,<AC.TMP*1B20>
	SETVAL AS.DAT,<AC.DAT*1B20>

	SETVAL AS.BYT,4B20	;BYTE POINTER
	SETVAL AS.XWD,5B20	;XWD
	SETVAL AS.ASC,6B20+1B21	;ASCII
	SETVAL AS.SIX,6B20+1B22	;SIXBIT
	SETVAL AS.D1,6B20+1B23	;1-WORD DECIMAL
	SETVAL AS.D2,6B20+1B24	;2-WORD DECIMAL
	SETVAL AS.FLT,6B20+1B25	;COMP-1
	SETVAL AS.OCT,6B20+1B26	;OCTAL

	SETVAL AS.PN,7B20+1B21	;PROCEDURE NAME
	SETVAL AS.%X,7B20+1B22	;TAG DEFINITION
	SETVAL AS.REL,7B20+1B23	;RELOC
	SETVAL AS.ENT,7B20+1B24	;ENTRY

	>
;TABLE OF PRESET EXTERNAL NAMES

	IFN	MLOAD&ADEFG.!ONESEG,<

	NUMEXT==0
	USRNO==0
	USRFLG==0

	DEFINE EXTAB (X),<
	IFN MLOAD&A.!ONESEG,<
	SIXBIT "X"
	>
	IFN MLOAD&E.!ONESEG,<
	SETVAL X,NUMEXT*2+AS.EXT+1
	>
	NUMEXT==NUMEXT+1
IFN USRFLG,<USRNO==USRNO+1>
	>

DEFINE EXTMCS(EXTRTN),<
	EXTAB	EXTRTN
	IFN MLOAD&EG.!ONESEG,<%'EXTRTN==:300000+NUMEXT*2-1>
	>

EXTNAM:	EXTAB RESET.
	IFN MLOAD&G.!ONESEG,<RESET==:300000+NUMEXT*2-1> ;PHASE G ADDR OF RESET.

	EXTAB	FUNCT.
	IFN MLOAD&G.!ONESEG,<%FUNCT.==:NUMEXT-1>	; THIS IS ACTUALLY AN INTERNAL.

;THE FOLLOWING ONES MUST BE LAST, THEY ARE TREATED AS USER EXTERNALS

FIXLST:	EXTAB MEMRY.
	EXTAB .OTFBS

USR:	USRFLG==1

	EXTAB RPGST.
	IFN MLOAD&G.!ONESEG,<RPGSTR==:300000+NUMEXT*2-1> ; PHASE G ADDR OF RPGST.


DEFINE EXTABN(DBROUT),<
	EXTAB	DBROUT
	IFN MLOAD&D.!ONESEG,<%'DBROUT==:500000+NUMEXT*2-1>
	>

	IFN MLOAD&A.!ONESEG,<
	SETUP EXTPTR,<XWD -NUMEXT,EXTNAM>
	>

	SETVAL NUMEXT,<<NUMEXT-USRNO>*2>

	>
;CONSTANTS USED BY PHASE F

	IFN MLOAD&F.!ONESEG,<

	SETUP ERALNA,<POINT 14,DW,14>;	LINE NUMBER IN "DW" PLUS "IMBED" BIT

>

;CONSTANTS USED BY PHASE G

	IFN MLOAD&G.!ONESEG, <

	SETUP	ASOP,<POINT 7,W1,8>;	INSTRUCTION OP-CODE
	SETUP	INCTYP,<POINT 3,W2,20>;	INCREMENT CODE TYPE
	SETUP	ADRTYP,<POINT 3,W1,20>;	ADDRESS CODE TYPE

>

	END