Google
 

Trailing-Edge - PDP-10 Archives - BB-H506D-SM_1983 - cobol/source/p.mac
There are 20 other files named p.mac in the archive. Click here to see a list.
; UPD ID= 3557 on 5/16/81 at 12:45 AM by NIXON                          
UNIVERSAL P FOR COBOL
SUBTTL	PARAMETERS FOR COBOL 			AL BLACKINGTON/CAM



;COPYRIGHT (C) 1974, 1981 BY
;DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
;
;
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
;ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH LICENSE AND WITH THE
;INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY  OTHER
;COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
;OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF THE  SOFTWARE  IS  HEREBY
;TRANSFERRED.
;
;
;THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT  NOTICE
;AND  SHOULD  NOT  BE  CONSTRUED  AS A COMMITMENT BY DIGITAL EQUIPMENT
;CORPORATION.
;
;DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY  OF  ITS
;SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
;EDITS
;NAME	DATE		COMMENTS

;V12B****************
;DAW	5-Nov-80	[1070] FIX MOVE CORRESPONDING OF ITEMS WITH SUBSCRIPTS.
;DMN	 1-FEB-80	[762] IMPLEMENT AND USE D. P. FLOATING POINT LITERALS
SEARCH	INTERM

%%P==3		;EDIT NUMBER OF P.MAC ITSELF
;		TO ASSURE THAT ALL ARE COMPILED WITH THE SAME VERSION
;		OF P.MAC

%HISEG==400000		;ORIGIN OF HIGH SEGMENT

DEBUG==:DEBUG
RPW==:RPW
ISAM==:ISAM
DBMS6==:DBMS6
DBMS4==:DBMS4
DBMS==:DBMS
MCS==:MCS
ONESEG==:ONESEG
EBCMP.==:EBCMP.
MPWCEX==:MPWCEX
BIS==:BIS
TOPS20==:TOPS20
ANS68==:ANS68
ANS74==:ANS74
TCS==:TCS
CSTATS==:CSTATS
XPNTST==:XPNTST
FT68274==:FT68274

SWSET%==SWSET%	;ASSEMBLY SWITCH WORD
;ACCUMULATORS

SW=0		;SWITCHES
LN=1		;ASSIGNED SOURCE LINE NUMBER
CP=2		;CHARACTER POSITION WITHIN SOURCE LINE
DT=3		;ADDRESS OF A TABLE ENTRY
CH=4		;I/O CHARACTER
DW==CH		;DIAGNOSTIC WORD

W1=6		;FIRST OUTPUT WORD FROM I/O
W2=7		;SECOND OUTPUT WORD FROM I/O

TE=12		;TEMP
TD=13		;TEMP
TC=14		;TEMP
TB=15		;TEMP
TA=16		;TEMP

PP=17		;PUSH-DOWN POINTER



;ACCUMULATORS USED BY PHASE A

DA==LN		;ADDRESS OF A DEVICE TABLE
DC==CP		;A DEVICE CHANNEL NUMBER

I0==5		;UUO TO BE EXECUTED
I1==6		;UUO PARAMETER
I2==I1+1	;UUO PARAMETER
I3==I2+1	;UUO PARAMETER
I4==I3+1	;UUO PARAMETER



;ACCUMULATORS USED BY "GET SOURCE" ROUTINES

CT=10		;CHARACTER COUNTER IN "GETWRD"; TYPE CODE FROM "GETITM"
LC=11		;LITERAL CHARACTER COUNTER IN "GETWRD"
PA==TA		;BYTE POINTER USED IN "GETWRD"
PB==TB		;BYTE POINTER USED IN "GETWRD"
;ACCUMULATORS USED BY PHASES B, C, D

NODPTR==3	;INTEGRITY GUARANTEED
SAVPTR==5	;INTEGRITY GUARANTEED
TYPE==10	;GETITM OUTPUT TYPE CODE
NODE==TB
NSONS==TC
SON==TD
SONADR==TE



;ACCUMULATORS USED BY PHASE E

EACA=DT
EACB=5
EACC=10
EACD=11



;ACCUMULATORS USED DURING PHASE G

OP=5		;POINTS TO AN ENTRY IN THE OP-TABLE
RB=CP		;BYTE POINTER TO NEXT PLACE TO PUT RELOCATION BITS
GP=LN		;IOWD TO NEXT LOCATION TO STASH A BINARY OUTPUT WORD
PC=11		;PROGRAM COUNTER


;VARIOUS COMPILER PARAMETERS

	MAXSUB==3	;MAXIMUM NUMBER OF SUBSCRIPTS ALLOWED
	OPNSIZ==2	;SIZE OF AN OPERAND IN EOPTAB (# WORDS)
	OPNMAX==OPNSIZ+<OPNSIZ*MAXSUB*2> ;MAX SIZE OF OPERAND AND SUBSCRIPTS
;I/O CHANNEL NUMBERS
TTY==1		;USER'S CONSOLE
SRC==2		;SOURCE
LST==3		;LISTING
BIN==4		;BINARY
LIB==5		;LIBRARY FOR COPY VERB

NAM==6		;NAMFIL
ERA==7		;ERAFIL
GEN==10		;GENFIL
CPY==11		;CPYFIL
AS1==12		;AS1FIL
AS2==13		;AS2FIL
AS3==14		;AS3FIL
LIT==15		;LITFIL
CRF==16		;CRFFIL

FSC==NAM	;FIRST SCRATCH CHANNEL
LSC==CRF	;LAST SCRATCH CHANNEL
ASY==AS1

COM==17		;COMMAND FILE ON DISK

SF1==SRC	;SCRATCH FILE FOR CREF SORT
SF2==BIN	;SCRATCH FILE FOR CREF SORT
SF3==LIB	;SCRATCH FILE FOR CREF SORT

;[%316] THE DBMS CHANNELS (DB NAMES REFFED IN COBOLD)

	IFN DBMS,<
DBCHAN==0		;DBMS CHANNEL!!!
DBCHN2==1		;SECOND DBMS CHANNEL
SKECHN==0		;[%316] SCHEMA CHANNEL (INPUT)
RELCHN==1		;[%316] FILE THAT GETS (ASCII) PROCED. CODE
VOKCHN==AS3		;[%316] FOR DCL'S
	>
;UUO'S USED

$RESET==0	;RESET
$DEVCH==4	;DEVCHR
$WAIT==10	;WAIT FOR I/O
$CORE==11	;CORE
$EXIT==12	;EXIT
IFE TOPS20,<
$CLEAR==13	;UTPCLR
>
$DATE==14	;DATE
$APREN==16	;APRENB
$TIME==23	;MSTIME
$RTIME==27	;RUNTIM
$PJOB==30	;PJOB
$RUN==35	;RUN
$GTSEG==40	;GETSEG
$TMPCR==44	;TMPCOR


;ASCII CONTROL CHARACTERS

$HT==11
$LF==12
$VT==13
$FF==14
$CR==15
$DLE==20
$DC1==21
$DC2==22
$DC3==23
$DC4==24
$CZ==32
$ALT==33	;ALTMODE
$QT==42		;QUOTE
;MONITOR COMMUNICATION

$BIN==1B23	;DEVICE CAN WRITE BINARY

$OUT==1		;DEVICE CAN DO OUTPUT
$IN==2		;DEVICE CAN DO INPUT
$DIREC==4	;DEVICE HAS A DIRECTORY
$TTY==10	;DEVICE IS A TTY
$MTA==100	;DEVICE IS A MAG-TAPE
$DTA==100	;DEVICE IS A DEC-TAPE
$LPT==40000	;DEVICE IS A LINE-PRINTER
$CDR==100000	;DEVICE IS A CARD-READER
$DSK==200000	;DEVICE IS A DISK
$AVAIL==40	;DEVICE IS AVAILABLE
$CONSL==10000	;DEVICE IS A CONSOLE

$REW==1		;REWIND MTA
$ERAS==740000	;DEVICE ERROR FLAGS
$EOT==2000	;END OF MAG-TAPE

$PPOVF==200000	;ENABLE PUSH-DOWN OVERFLOW TRAP
$ILMEM==20000	;ENABLE ILLEGAL MEMORY REFERENCE TRAP
$NONEX==10000	;ENABLE NON-EXISTENT MEMORY TRAP

$APRF==$PPOVF!$ILMEM!$NONEX

$CLS40==40	;CLOSE DISCARDING NEW FILE, KEEPING OLD
;FLAGS SET IN ACCUMULATOR "SW"

FTERA==1B0		;TYPE ERRORS ON CONSOLE
FCOPY==1B1		;"COPY REPLACEMENT" IN PROGRESS
FNOLST==1B2		;NO LISTING
FRLIB==1B3		;WE ARE READING LIBRARY FILE
FOBJEC==1B4		;LIST OBJECT CODE IF 0
FFATAL==1B5		;THERE IS A FATAL ERROR
FMAP==1B6		;MAPS REQUESTED
FEOF==1B7		;END OF SOURCE
FESRC==1B8		;NO MORE SOURCE FILES IN THIS COMMAND
FECOM==1B9		;END OF COMMAND FILE
FSYNER==1B10		;ERROR OCCURRED IN SYNTAX
FECOPY==1B11		;FINISH UP COPY FILE
FREENT==1B12		;OBJECT PROGRAM IS TO BE RE-ENTRANT
FSEQ==1B13		;SOURCE IS SEQUENCED
FNOCPY==1B14		;DO NOT PUT OUT CPYFIL CHARACTER
FDSKC==1B15		;COMMANDS TAKEN FROM DISK
FDEBUG==1B16		;ACTIVATE "EXHIBIT"
FNDTRC==1B16		;TRACE SYNTAX NODES
FLTTY==1B17		;LISTING FILE IS TTY



;BITS IN RH USED BY COMMAND SCANNER

FCOMCH==1B18		;REGET A COMMAND CHARACTER
FCOMWD==1B19		;REGET A COMMAND WORD
FHELP==1B20		;TYPE HELP MESSAGE



;BITS IN RH OF "SW" USED BY "GET SOURCE" ROUTINES

FREGCH==1B18		;REGET PREVIOUS SOURCE CHARACTER
FREGWD==1B19		;REGET PREVIOUS SOURCE WORD
FGTPER==1B20		;GETWRD RETURNS A PERIOD
FLETTR==1B21		;WORD CONTAINS A NON-DIGIT
FGTMIN==1B22		;GETWRD RETURNS A MINUS OR HYPHEN
FNCOFF==1B23		;TURNED OFF FNOCPY SWITCH
FRTST==1B24		;MAKING TEST FOR REPLACEMENT MATCH
FARITH==1B25		;ARITHMETIC EXPRESSIONS ARE LEGAL
FALIT==1B26		;WE ARE PROCESSING AN ALPHA LITERAL
FPERWD==1B27		;RETURN A NON-EXISTENT PERIOD
FNEEDS==1B28		;A SPACE IS REQUIRED ON SOURCE

FGETST==FPERWD!FREGWD!FGTPER!FGTMIN
;BITS IN RIGHT-HALF OF "SW" USED BY ID&ED SCANS

FOBJCP==1B31		;OBJECT-COMPUTER PARAGRAPH SEEN
FOPT==1B32		;THIS FILE IS OPTIONAL
FSAME==1B33		;PARSING A "SAME RECORD AREA"
FSTAT==1B34		;PARSING A "SWITCH ON STATUS"
FSPNAM==1B35		;SPECIAL-NAME PARAGRAPH ENCOUNTERED



;BITS IN RIGHT-HALF OF "SW" USED BY DD SCAN

FFILSC==1B29		;CURRENTLY PROCESSING FILE SECTION
ELITEM==1B30		;ALLOCATING AN ELEMENTARY ITEM
CONVRT==ELITEM
FSIGN==1B30		;PICTURE HAS A SIGN
FFLOAT==1B31		;PICTURE CONTAINS FLOATING
FEDIT==1B32		;PICTURE HAS EDITING SYMBOLS
FBWZ==1B33		;PICTURE HAS FLOATING OR SUPPRESSION AFTER POINT

			;THE FOLLOWING TWO FLAGS MUST BE IN 34&35
FCLAS1==1B34		;ITEM HAS NUMERIC CHARACTERS
FCLAS2==1B35		;ITEM HAS ALPHABETIC CHARACTERS
;BITS IN RIGHT-HALF OF "SW" USED BY PD SCAN

FNOSUB==1B31	;NO SUBSCRIPTS ALLOWED
FEXPR==1B32	;CURRENTLY PROCESSING AN EXPRESSION
UNCONT==1B33	;LAST STATEMENT WAS AN UNCONDITIONAL TRANSFER
FNOTF==1B34	;"NOT" FLAG FOR CONDITIONALS
INDECL==1B35	;CURRENTLY INSIDE DECLARATIVES



;BITS IN RIGHT-HALF OF "SW" USED BY CODE GENERATOR

FAS3==1B18	;WE ARE GENERATING CODE FOR A NON-RESIDENT SECTION
FUUOIC==1B19	;UUO TO BE CONVERTED HAS AN INCREMENT FOLLOWING
FADJDV==1B20	;SHIFT DIVIDE OPERANDS TO MATCH RESULT
FBIGCV==1B21	;CONVERT TO FLOATING POINT IF NUMBER TOO BIG
FSZERA==1B22	;SIZE ERROR
FROUND==1B23	;ROUND THE RESULT

FAINAC==1B24	;"A" IS CURRENTLY IN THE AC'S
FSDAT==1B25	;SUBSCRIPT HAS OTHER THAN NUMERIC LITERALS
FALWY0==1B26	;ACCUMULATOR CONTAINS ZEROES
FASIGN==1B27	;"A" OPERAND IS SIGNED
FBSIGN==1B28	;"B" OPERAND IS SIGNED
FANUM==1B29	;"A" OPERAND IS NUMERIC
FBNUM==1B30	;"B" OPERAND IS NUMERIC
FASUB==1B31	;"A" OPERAND IS SUBSCRIPTED
FBSUB==1B32	;"B" OPERAND IS SUBSCRIPTED
FLNEG==1B33	;LITERAL IS NEGATIVE
FLITDP==1B34	;LITERAL HAS A DECIMAL POINT
FERROR==1B35	;A FATAL ERROR HAS OCCURRED

FEOFF1==377777	;FLAGS TURNED OFF AT START OF EACH GENERATOR
FEOFF2==FALWY0!FLNEG!FLITDP!FERROR



;BITS IN RIGHT-HALF OF "SW" USED BY LISTING PHASE

FERALN==1B18	;CURRENT LINE HAS DIAGNOSTICS
FLWARN==1B19	;WE ARE PUTTING OUT WARNING DIAGS AT END



;BITS IN RIGHT-HALF OF "SW" USED BY ASSEMBLER

FASPAR==1B18	;A PARAGRAPH NAME HAS BEEN PRINTED FOR CURRENT LOCATION
FASSEG==1B19	;CURRENTLY PROCESSING NON-RESIDENT SEGMENT

FASEXT==1B21	;CURRENTLY LISTING AN EXTERNAL-NAME
FGDEC==1B22	;DECIMAL INCREMENTS ALLOWED
FRELOC==1B23	;ASSEMBLING CODE FOR RELOCATABLE SECTION OF PROGRAM
FSRTIO==1B24	;THERE ARE SOME CREF SORT FILES OPEN
FGNEG==1B25	;NEGATIVE INCREMENT POSSIBLE
;FLAGS IN LEFT HALF OF "W1" DURING ASSEMBLY (WORD 1 OF ASYFIL)

ASINC==200000	;INCREMENT WORD FOLLOWS OPERATOR
ASCASC==40000	;ASCII CONSTANT
ASCSIX==20000	;SIXBIT CONSTANT
ASCD1==10000	;1-WORD DECIMAL CONSTANT
ASCD2==4000	;2-WORD ASCII CONSTANT
ASCFLT==2000	;FLOATING POINT CONSTANT
ASCOCT==1000	;OCTAL CONSTANT
ASCEBC==400	;EBCDIC CONSTANT.
ASCF2==200	;[762] D. P. FLOATING POINT CONSTANT
ASCON==ASCASC!ASCSIX!ASCD1!ASCD2!ASCFLT!ASCOCT!ASCEBC!ASCF2	;[762]

ASPARN==40000	;MISCELLANEOUS IS PARAGRAPH OR SECTION NAME
ASTAGN==20000	;       "      IS TAG NAME
ASREL==10000	;       "      IS "RELOC"
ASENTN==4000	;	"      IS ENTRY POINT
ASSMSC==2000	;	"      IS A SPECIAL MISCELLANEOUS ITEM.
ASACS==1000	;	"	IS ALTERNATE CODE SET


ASMACS==700000+ASACS		;PUT IN ASY FILE TO SIGNAL NEXT INST IS ALTERNATE



;FLAGS USED IN BITS 0-8 OF "W1" DURING "GETSRC"

GWNOT==1B18		;NOT IN NAMTAB
GWLIT==1B19		;DATUM IS A LITERAL
GWRESV==1B20		;DATUM IS A RESERVED WORD
GWSIGN==1B21		;LITERAL HAS A LEADING SIGN
GWDP==1B22		;LITERAL HAS A DECIMAL POINT
GWNLIT==1B23		;LITERAL IS NUMERIC
GWHYF==1B24		;WORD HAS A HYPHEN
GWALL==1B25		;ALL  (SET OUTSIDE OF GETWRD)
GWFIGC==1B26		;FIGURATIVE CONSTANT  (SET OUTSIDE OF GETWRD)
GWASCI==1B20		;LITERAL CONTAINS CHARACTER NOT IN SIXBIT RANGE



;FLAGS USED IN "W2" DURING "GETITM" AND "PUTCRF"

GWDEF==1B18	;THIS IS A DEFINITION (LEFT-HALF)



;FLAGS IN LH OF "W2" DURING PD SCAN

GWFLO==1B18		;THERE IS A FLOTAB ENTRY FOR THIS ITEM (SET OUTSIDE OF GETWRD)
;ACCUMULATORS FOR CODE GENERATION

AC0==0B30
AC1==1B30
AC2==2B30
AC3==3B30
AC4==4B30
AC5==5B30
AC6==6B30
AC7==7B30
AC10==10B30
AC11==11B30
AC12==12B30
AC13==13B30
AC14==14B30
AC15==15B30
AC16==16B30
AC17==17B30

SAC==AC12	;DEFAULT AC FOR SUBSCRIPTING
SXR==12		;INDEX USED FOR SUBSCRIPTING
KAC==AC2	;ACCUMULATOR USED TO HOLD A FIG. CONST.

;MISC OPERATOR FLAGS FOR CODE GENERATOR (LEFT HF OF W1)

GWFL9==1B9
GWFL10==1B10
GWFL11==1B11
GWFL12==1B12
GWFL13==1B13
GWFL14==1B14
GWFL15==1B15

;ARG TYPES (AS OF FEB 1973 CALLING SEQUENCE)

ARG1WB==2B12	;1-WORD BINARY
ARG2WB==11B12	;2-WORD BINARY
ARG1FP==4B12	;1-WORD FLOATING POINT (COMP-1)
ARGPAD==7B12	;PROGRAM ADDRESS
ARG2FP==10B12	;2-WORD FLOATING POINT (COMP-2)
ARGBSD==15B12	;BYTE STRING DESCRIPTOR
ARGHWA==20B12	;HALF-WORD ARRAY DESCRIPTOR
;FLAGS IN FIRST WORD OF NAMTAB ENTRY

NAMRSV==1B2



;FLAGS IN LH OF FIRST WORD OF LITERAL OPERAND FOR GENFIL

GNLIT==1B19
GNNUM==1B20
GNFIGC==1B21
GNTODY==1B26
GNTALY==1B27
GNFCS==1B28
GNFCZ==1B29
GNFCQ==1B30
GNFCHV==1B31
GNFCLV==1B32
GNALL==1B33
GNFCFL==GNTODY!GNTALY!GNFCS!GNFCZ!GNFCQ!GNFCHV!GNFCLV

;INDEX FOR DATE, DAY, TIME - ANS-74 REPLACEMENT FOR TODAY
GNDATE==1B25
GNDAY== 2B25
GNTIME==3B25

GNOPNM==1B<^D18+7>	;NON-LITERAL IS NUMERIC
GNNOTD==1B<^D18+5>	;ITEM IS NOT A DATA-NAME (LH OF SECOND WORD)
GNROUN==1B19	;ROUND RESULT (IN LH OF WORD 2 OF OPERAND)
GNSERA==1B28	;SIZE ERROR (IN LH OF WORD 1 OF OPERATOR)

;GENFIL OPERAND FLAGS

LKSFLG==1B9	;OPERAND IS IN LINKAGE SECTION



;VARIOUS OTHER FLAGS

DWFATL==1B25		;FATAL FLAG IN DIAG WORD
DWIMBD==200000		;DO NOT IMBED DIAGNOSTIC MESSAGE IN LISTING
;GENERAL MACRO CALLS

;GENERAL "SW" TESTER

	DEFINE SWTEST (A,B),<
	IFLE A-777777,<TR'B SW,A>
	IFG A-777777,<
	IFE A&777777,<TL'B SW,(A)>
	IFN A&777777,<TD'B SW,[A]>
	>
	>

DEFINE SWON (A),<SWTEST A,O>	;TURN ON FLAGS
DEFINE SWOFF (A),<SWTEST A,Z>	;TURN OFF FLAGS
DEFINE TSWC (A),<SWTEST A,C>	;COMPLEMENT FLAG
DEFINE TSWF (A),<SWTEST A,NE>	;TEST FLAG AND SKIP IF OFF
DEFINE TSWT (A),<SWTEST A,NN>	;TEST FLAG AND SKIP IF ON
DEFINE TSWFZ (A),<SWTEST A,ZE>	;CLEAR FLAG, SKIP IF IT WAS OFF
DEFINE TSWTZ (A),<SWTEST A,ZN>	;CLEAR FLAG, SKIP IF IT WAS ON
DEFINE TSWFS (A),<SWTEST A,OE>	;SET FLAG, SKIP IF IT WAS OFF
DEFINE TSWTS (A),<SWTEST A,ON>	;SET FLAG, SKIP IF IT WAS ON
DEFINE TSWFC (A),<SWTEST A,CE>	;COMPLEMENT FLAG, SKIP IF IT WAS OFF
DEFINE TSWTC (A),<SWTEST A,CN>	;COMPLEMENT FLAG, SKIP IF IT WAS ON
DEFINE SWONS (A),<SWTEST A,OA>	;SET FLAG AND ALWAYS SKIP
DEFINE SWOFFS (A),<SWTEST A,ZA>	;CLEAR FLAG AND ALWAYS SKIP
DEFINE SETFAZ (X),<
	INTERNAL COBOL'X
 	ZZ%==0				;;INITIALIZE VARIABLE
 IFE ONESEG,<IFDIF <X><B><IFDIF <X><G><ZZ%==1>>>	;;WE NEED IT FOR ALL BUT PHASES B & G
 IFN ONESEG,<IFIDN <X><A><ZZ%==1>>			;;WE ONLY NEED IT FOR PHASE A
 IFN ZZ%,<IFDIF <X><A>,<PORTAL	.+1>>	;;ENABLE CONCEALED MODE
	MOVEI	TA,"'X'"
	MOVEM	TA,PHASEN##
	MOVE	PP,PPOINT##
 IFDIF <X><O>< EXTERNAL PURE'X>		;;THERE IS NO PUREO


IFN ZZ%,<
 IFE ONESEG,<
	MOVEI	TA,KILL##
	MOVEM	TA,WEDIED##+1
>
	MOVEI	TA,REDO##
	HRRM	TA,.JBSA##
	MOVEI	TA,RESTRT##
	HRRM	TA,.JBREN##
	MOVE	TA,[PUSHJ PP,UUOCAL##]
	MOVEM	TA,.JB41##
	MOVEI	TA,XPNPPL##
	HRRM	TA,.JBAPR##
	MOVEI	TA,$APRF
	CALLI	TA,$APREN
 >
 IF2,<	PURGE	ZZ%>

 IFN DEBUG,<EXTERNAL %'X'TIME,%R'X'TIM
  IFE TOPS20,<EXTERN	DDT>
  IFDIF <X><A><IFDIF <X><G><IFDIF <X><B><
	TTCALL	3,[ASCIZ "PHASE X
"]
 >>>
	CALLI	TA,$TIME
	MOVEM	TA,%'X'TIME
	MOVEI	TA,0
	CALLI	TA,$RTIME
	MOVEM	TA,%R'X'TIM
>>
DEFINE ENDFAZ (X),<

	IFN DEBUG,<EXTERNAL CORESW,KILL,KILLF,%'X'TIME,%R'X'TIM

	IFDIF <X><O>,< EXTERNAL %KILL'X,%KILF'X>

	IFDIF <X><G><
	MOVEI	TA,0
	CALLI	TA,$RTIME
	MOVEM	TA,%R'X'TIM+1
	CALLI	TA,$TIME
	MOVEM	TA,%'X'TIME+1
	IFDIF <X><O><
	MOVE	TA,CORESW
	TLNE	TA,%KILL'X
	JRST	KILL
	TLNE	TA,%KILF'X
	JRST	KILLF
	>>>

	IFIDN <X><A><	JRST	COBOLB##>
	IFIDN <X><B><	JRST	COBOLC##>
	IFIDN <X><C><	JRST	COBOLD##>
	IFIDN <X><D><	JRST	COBOLE##>
	IFIDN <X><E><IFE FT68274,<
	SKIPE	OPTSW##
	JRST	COBOLO##>
	JRST	COBOLF##>
	IFIDN <X><F><	JRST	COBOLG##>
	;NOTE THAT THERE IS NO ENTRY FOR "G", THAT'S TAKEN CARE OF IN COBOLG
	;NOTE THAT THERE IS NO ENTRY FOR "O" -- TAKEN CARE OF IN COBOLO
	>
;TABLE DEFINITIONS

;PARAMETER 1 -  MNEMONIC FOR A TABLE
;	   2 -  INITIAL TABLE SIZE
;	   3 -  AMOUNT TO EXPAND, IF NECCESSARY
;	   4 -  NAME, FOR LISTING PURPOSES
;	   5 -  CODES FOR CLEANING TABLES AFTER PHASE D:
;		0 - LEAVE TABLE EMPTY
;		1 - THROW AWAY EMPTY WORDS
;		2 - LEAVE TABLE AS IS
;	   6 - CODES FOR CLEANING TABLES AT START OF PHASE F
;		SAME AS PARAMETER 5.
;	   7 - IF TABLES IS TO BE EXPANDED IN DIFFERENT PLACES
;		0 - SOMETIMES
;		1 - ALWAYS

;EXPANDED IN COBOLA, CLEAND, IMPURE, SQUIRL, XPAND, COBOLK
;NOTE ALL NUMBERS ARE RADIX 10 WHEN EXPANDED

	DEFINE TABLES,<
	XLIST
	TABSET NAM,900,0,NAMTAB,2,2,0
	TABSET EOP,50,20,EOPTAB,2,0,0
	TABSET SEC,200,10,SECTAB,2,2,0
	TABSET FIL,150,50,FILTAB,1,2,1
	TABSET DAT,800,600,DATAB,1,2,1
	TABSET CON,50,100,CONTAB,1,2,1
	TABSET LIT,500,200,LITAB,2,2,1
	TABSET PRO,200,150,PROTAB,1,2,1
	TABSET EXT,600,50,EXTAB,2,1,1
	TABSET VAL,100,200,VALTAB,1,0,1
	TABSET MNE,40,10,MNETAB,1,2,1
	TABSET FLO,200,200,FLOTAB,1,2,1
	TABSET CPY,30,30,CPYTAB,0,0,1
	TABSET HLD,50,20,HLDTAB,1,0,1
	TABSET RPW,2,200,RPWTAB,1,0,1
IFN DBMS!ANS74,<
	TABSET USE,2,10,USETAB,1,0,1
>
IFN DBMS,<
	TABSET DBD,600,200,DBDTAB,0,0,1
	>
IFN MCS!TCS,<
	TABSET CD,200,100,CDTAB,2,2,1
	>
IFN ANS74,<
	TABSET	AKT,1,20,AKTTAB,2,2,1
	TABSET	DEB,2,10,DEBTAB,2,2,1
>
	TABSET ALT,20,20,ALTAB,2,2,0
	TABSET REN,2,10,RENTAB,1,0,1
	TABSET TAG,300,100,TAGTAB,2,1,0
	TABSET RES,20,10,RESTAB,2,0,0
	TABSET TEM,12,10,TEMTAB,0,0,1
	TABSET CRF,2,1000,CRFTAB,0,0,0
	LIST

	>
;SYNTAX NODE MACRO
;USED TO DEFINE NODES IN THE SYNTAX TREE

IFN ANS68,<
DEFINE	$68(NAME,ACTION,ITMTYP,PD,AMARGN,SONS)<
$ (NAME,ACTION,ITMTYP,PD,AMARGN,SONS)
>
DEFINE	$74(NAME,ACTION,ITMTYP,PD,AMARGN,SONS)<>
>
IFN ANS74,<
DEFINE	$68(NAME,ACTION,ITMTYP,PD,AMARGN,SONS)<>
DEFINE	$74(NAME,ACTION,ITMTYP,PD,AMARGN,SONS)<
$ (NAME,ACTION,ITMTYP,PD,AMARGN,SONS)
>
>

DEFINE $ (NAME,ACTION,ITMTYP,PD,AMARGN,SONS)<
IFE PD,<
IFDIF <ACTION><0>,<IFNDEF ACTION,<EXTERN ACTION>>
	>
NS.==-1
IRP SONS<NS.==NS.+1>
IFE NS.,<
IFIDN <SONS><0><NS.==-1>
	>
	INTER. NAME
IFN DEBUG,<XLIST>
NAME':	XWD ACTION,NS.*1B23+'PD'*1B24+'AMARGN'*1B25+'ITMTYP
	XLIST
IFGE NS.,<BYTE	(18)SONS>
	LIST
	>

;
;DEFINE	ENTR.(NAME)<
;ENTRY	NAME
;IFN DEBUG,<SIXBIT /NAME/>
;	>

DEFINE	INTER.(NAME)<
INTERN	NAME
IFN DEBUG,<SIXBIT /NAME/>
	>

DEFINE	SKPNAM<
IFN DEBUG,<JRST	.+2>
	>
;TABLE CODES

DEFINE TABSET (A,B,C,D,E,F,G)<
IFN G,<CD.'A==ZZ
	ZZ==ZZ+1>
>

ZZ==0
TABLES
CD.TAG==5

;TABLE ENTRY SIZES

SZ.FIL==^D27	;SIZE OF FIXED PORTION OF FILE TABLE DURING COMPILATION.
SZ.DAT==7
SZ.CON==2
SZ.LIT==1
IFN ANS68,<SZ.PRO==4>
IFN ANS74,<SZ.PRO==5>
SZ.PR6==4	;COBOL-68 TABLE SIZE
SZ.EXT==2
SZ.VAL==777777
SZ.MNE==2
SZ.FLO==2
SZ.DEV==40	;SIZE OF CHANNEL TABLE IN OBJECT CODE.
SZ.OFT==37	;SIZE OF FIXED PORTION OF FILE TABLE IN OBJECT CODE.
SZ.OUS==^D20	;SIZE OF USES TABLE OUTPUT
SZ.MSK==4
SZ.CPY==2
SZ.HLD==2
SZ.RPD==13	;SIZE OF RPWTAB ENTRY FOR EACH "RD"
SZ.RPC==3	;SIZE OF REPORT GROUP 'CONTROL' ENTRIES (CONTROLS ARE...)
SZ.RPG==6+^D14	;SIZE OF RPWTAB ENTRY FOR REPORT GROUP
		;14 WORDS FOR POSSIBLY SUBSCRIPTED SOURCE ITEM
	.RWSRC==7 ;OFFSET IN REPORT GROUP ENTRY OF SOURCE ITEM
SZ.DOC==2
SZ.USE==1
SZ.DBD==^D9			;[%316] CHANGED SIZE
IFN ANS68,<SZ.CD==^D8>
IFN ANS74,<SZ.CD==^D9>
SZ.TEM==1		; [415] NORMALLY ONE WORD PER TEMTAB ENTRY
SZ.TM2==2		; [415] TWO WORD TEMTAB ENTRY
IFN ANS74,<
SZ.AKT==2			;SIZE OF ACTUAL KEY ENTRY
SZ.DEB==2
>
; FILTAB ENTRY CODES

;CODES FOR RECORDING MODE

%RM.6B==0	;SIXBIT
%RM.BN==1	;BINARY
%RM.7B==2	;ASCII
%RM.EB==3	;EBCDIC
%RM.SA==4	;STANDARD (8 BIT) ASCII.

%%RM==7		;NOT YET DECLARED

;CODES FOR RECORDING DENSITY

%RD.2==1	;200 BPI
%RD.5==2	;556 BPI
%RD.8==3	;800 BPI
%RD.16==4	;1600 BPI
%RD.62==5	;6250 BPI

;CODES FOR RECORDING PARITY

%RP.OD==1	;ODD
%RP.EV==2	;EVEN

;CODES FOR TYPE OF LABELS

%LBL.O==0	;OMITTED
%LBL.S==1	;STANDARD
%LBL.N==2	;NON-STANDARD
%%LBL==3	;NOT SPECIFIED

;CODES FOR ORGANIZATION MODE

%ACC.S==0	;SEQUENTIAL
%ACC.R==1	;RANDOM
%ACC.I==2	;INDEXED SEQUENTIAL
%%ACC==3	;NOT SPECIFIED

;[74] CODES FOR ACCESS MODE

%FAM.U==0	;NOT SPECIFIED (CHANGED TO %FAM.S IN CLEANC)
%FAM.S==1	;SEQUENTIAL
%FAM.R==2	;RANDOM
%FAM.D==3	;DYNAMIC
%%FAM==3	;MASK
;HLDTAB ENTRY-TYPE CODES

%HL.AK==1	;ACTUAL KEY
%HL.VI==2	;VALUE OF IDENTIFICATION
%HL.VD==3	;VALUE OF DATE-WRITTEN
%HL.VP==4	;VALUE OF PROJECT-PROGRAMMER
%HL.LL==5	;LOW FILE-LIMIT
%HL.HL==6	;HIGH FILE LIMIT
%HL.DP==7	;'DEPENDING' FOR OCCURS
%HL.KY==10	;'ASCENDING KEY' FOR OCCURS
%HL.SL==11	;SUM IDENTIFIER (LH)
%HL.SR==12	;SUM IDENTIFIER (RH)
%HL.UP==13	;UPON DATA-NAME
%HL.SC==14	;BUILD A SUM CTR FOR DATAB ITEM WITH THIS LINK
%HL.SY==15	;SYMBOLIC KEY
%HL.RC==16	;RECORD KEY
%HL.DY==17	;'DESCENDING KEY' FOR OCCURS
%HL.IX==20	;INDEX FOR DATAB ITEM
%HL.ER==21	;DATA NAME WHICH OCCURED IN FILE STATUS CLAUSE.
%HL.GI==22	; [315] GROUP INDICATE ITEM WITH VALUE CLAUSE
%HL.KA==23	;ALTERNATE RECORD KEY

;HLDTAB ENTRY FLAGS FOR TYPE OF PHASE-E ENTRY:

HE%RIN==1B0	;READ..INTO OR RETURN..INTO
HE%VLR==1B1	;READ WITH VARIABLE LENGTH RECORD
HE%DEB==1B2	;DEBUGGING CODE

;HLDTAB OFFSETS FOR PHASE-E ENTRY:
.HEHDR==0	;HEADER WORD
.HERIN==1	;READ..INTO OPERAND
.HEVLR==.HERIN+OPNSIZ+OPNMAX
.HESIZ==.HEVLR+1 ;SIZE OF HLDTAB

IFN ANS74,<
.HEDEB==.HEVLR+1 ;DEBUGGING OPERAND
.HESIZ==.HEDEB+1 ;SIZE OF HLDTAB ENTRY
>;END IFN ANS74
;USETAB TYPE CODES

%UT.IO==0	;I-O ERROR
%UT.OP==1	;OPEN ERROR
%UT.LB==2	;LABEL PROCEDURE
%UT.RP==3	;REPORT ITEM PROCEDURE
%UT.ES==4	;ERROR-STATUS
%UT.DB==5	;DEBUG PROCEDURE


;DEPTH OF NESTED IF'S

IFN ANS68,<IF.DEP==^D12>
IFN ANS74,<IF.DEP==^D24>

;SYMBOLS FOR LEVEL NUMBERS USED IN PHASE C

LVL.01==01	;LEVEL 01
LVL.10==^D10	;LEVEL 10, HIGHEST LEGAL LEVEL IN FIPS LOW LEVEL
LVL.49==^D49	;LEVEL 49

;THE FOLLOWING 2 ARE SPECIAL BECAUSE WE HAVE ONLY 6 BITS TO HOLD THE NUNBER IN

LVL.66==76	;LEVEL 66
LVL.77==77	;LEVEL 77
; DATTAB ENTRY CODES

;CODES FOR CLASS

%CL.AN==0	;ALPHANUMERIC
%CL.AB==1	;ALPHABETIC
%CL.NU==2	;NUMERIC
%%CL==3		;NOT SPECIFIED

;CODES FOR USAGE

%%US==0		;NOT SPECIFIED
%US.D6==1	;DISPLAY-6
%US.D7==2	;DISPLAY-7
%US.EB==3	;EBCDIC (DISPLAY-9)
%US.DS==3	;HIGHEST DISPLAY USAGE
%US.1C==4	;1-WORD COMP
%US.2C==5	;2-WORD COMP
%US.C1==6	;COMP-1
%US.IN==7	;INDEX
%US.C3==10	;COMP-3
%US.C2==11	;COMP-2


;REPORT GROUP ENTRY CODES

;LINE CLAUSE CODES

%RG.NP==1	;NEXT PAGE
%RG.LN==2	;LINE NUMBER
%RG.PI==3	;PLUS INTEGER

;TYPE CODES

%RG.RH==1	;REPORT HEADING
%RG.PH==2	;PAGE HEADING
%RG.CH==3	;CONTROL HEADING
%RG.DE==4	;DETAIL
%RG.CF==5	;CONTROL FOOTING
%RG.PF==6	;PAGE FOOTING
%RG.RF==7	;REPORT FOOTING

;SOURCE CODES

%RG.SR==1	;SOURCE
%RG.SM==2	;SUM
%RG.VL==3	;VALUE

;ALPHABET-NAME

%AN.AS==1B18		;ASCII OR STANDARD-1
%AN.EB==1B19		;EBCDIC

;UUO'S

OPDEF	EWARNW	[1B8]		;PUSHJ TO ERROR ROUTINE
OPDEF	EWARNJ	[2B8]		;JRST TO ERROR ROUTINE

;[1070] OFFSETS IN CORRSP (FOR "MOVE CORRESPONDING" OR "ADD CORRESPONDING")
.CORLS==13		;[1070] LEFT OPERAND SUBSCRIPT BLOCK STARTS
.CORRS==.CORLS+<MAXSUB*4>+1 ;[1070] RIGHT OPERAND SUBSCRIPT BLOCK STARTS
.CORXX==.CORRS+<MAXSUB*4>+1 ;[1070] START OF SOMETHING NEW (FUTURE EXPANSION)
.CORSZ==.CORXX+1	;[1070] TOTAL SIZE OF CORRSP AREA
;PJRST IN LIEU OF PUSHJ/POPJ.

OPDEF	PJRST	[JRST]
OPDEF	PJUMPN	[JUMPN]
;KL-10 INSTRUCTIONS

OPDEF	ADJBP	[IBP]

;EXTENDED INSTRUCTION SET OP CODES

OPDEF	EXTEND	[123B8]		;EXTENDED INSTRUCTION
OPDEF	CMPSL	[001B8]		;COMPARE STRINGS, SKIP IF LESS
OPDEF	CMPSE	[002B8]		;COMPARE STRINGS, SKIP IF EQUAL
OPDEF	CMPSLE	[003B8]		;COMPARE STRINGS, SKIP IF LESS OR EQUAL
OPDEF	CMPSGE	[005B8]		;COMPARE STRINGS, SKIP IF GREATER OF EWQUAL
OPDEF	CMPSN	[006B8]		;COMPARE STRINGS, SKIP IF NOT EQUAL
OPDEF	CMPSG	[007B8]		;COMPARE STRINGS, SKIP IF GREATER

OPDEF	EDIT	[004B8]		;PROCESS STRING ACCORDING TO MINI-PROGRAM PATTERN

OPDEF	CVTBO	[010B8]		;CONVERT DECIMAL TO BINARY BY OFFSET
OPDEF	CVTDBT	[011B8]		;CONVERT DECIMAL TO BINARY BY TRANSLATION
OPDEF	CVTBDO	[012B8]		;CONVERT BINARY TO DECIMAL BY OFFSET
OPDEF	CVTBDT	[013B8]		;CONVERT BINARY TO DECIMAL BY TRANSLATION

OPDEF	MOVSO	[014B8]		;MOVE STRING WITH BYTE OFFSET
OPDEF	MOVST	[015B8]		;MOVE STRING WITH BYTE TRANSLATION
OPDEF	MOVSLJ	[016B8]		;LEFT JUSTIFIED
OPDEF	MOVSRJ	[017B8]		;RIGHT JUSTIFIED
;FLAGS IN PROTAB ENTRY

PTSECT==1B25	;SECTION (0) OR PARAGRAPH (1)
PTEXIT==1B26	;EXIT REQUIRED
PTDEF==1B27	;ITEM IS DEFINED
PTALT==1B28	;PARA IS ALTERABLE
PTRES==1B29	;OBJECT OF AN ALTER IS IN CURRENT OR RESIDENT SEGMENT
PTNRES==1B30	;OBJECT OF AN ALTER IS IN ANOTHER NON-RESIDENT SEGMENT
PTUSE==1B31	;REFERENCED IN A USE PROCEDURE
PTDECL==1B32	;DEFINED IN THE DECLARATIVES SECTION
PTMULD==1B33	;PROCEDURE NAME IS MULTIPLY DEFINED
PTXFER==1B34	;PROCEDURE ENDS WITH AN UNCONDITIONAL TRANSFER

;FLAGS USED IN LH OF MNETAB ENTRY

MTSW==400000	;SWITCH
MTSON==200000	;SWITCH ON STATUS
MTSOFF==100000	;SWITCH OFF STATUS
MTCONS==040000	;CONSOLE
MTCHAN==020000	;CHANNEL

;BITS IN LH OF WORD 6 OF FILTAB

FTINP==020000	;THERE ARE INPUT OPENS FOR THIS FILE
FTOUTP==010000	;THERE ARE OUTPUT OPENS FOR THIS FILE
FTIO==004000	;THERE ARE INPUT-OUTPUT OPENS FOR THIS FILE
FTWADV==002000	;THERE ARE "WRITE ADVANCING" STATEMENTS
FTVARL==000400	;RECORDS ARE OF VARIABLE LENGTH
FTREOR==000200	;RERUN ON END-OF-REEL
FTRCNT==000100	;RERUN ON COUNT
FTDEF==000040	;FD OR SD IS PRESENT FOR THIS FILE
FTOPT==000020	;FILE IS OPTIONAL
FTARAN==000001	;ACCESS MODE IS RANDOM

;BITS IN INPUT FLAG WORD FOR SUBSCRIPT ROUTINE

SSBYTP== 1B35	;GENERATE A BYTE POINTER
SSADDR== 1B34	;GENERATE AN ADDRESS

;FLAGS IN EXTAB FOR NON-RESIDENT SECTION EXTERNAL REFERENCES

NR.EXT==(1B0)	;EXTERNAL REQUEST
NR.IND==(1B1)	;NEEDS @ BIT ON

;BITS IN EFLAGA/B DURING CODE GENERATION

SEP.SN==(1B0)		;SEPARATE SIGN
LDN.SN==(1B1)		;LEADING SIGN
;FIPS-FLAGGER LEVELS

IFN ANS68,<

DEFINE FLAGAT (LEVEL)<>

TST.LI==0
TST.HI==0
TST.H==0
TST.RP==0
TST.DB==0
TST.68==0
TST.IB==0
TST.VX==0
TST.79==0
TST.NS==0
>

IFN ANS74,<

DEFINE FLAGAT (LEVEL)<
	PUSHJ	PP,TST.'LEVEL'##
>

%LV.0==0		;NO INFORMATION
%LV.L==1		;FIPS LOW LEVEL
%LV.LI==2		;FIPS LOW-INTERMEDIATE LEVEL
%LV.HI==4		;FIPS HIGH-INTERMEDIATE LEVEL
%LV.H==10		;FIPS HIGH LEVEL
%LV.RP==20		;REPORT WRITER
%LV.DB==40		;DATA BASE 
%LV.68==100		;COBOL-68 LEFTOVER
%LV.IB==200		;IBM COMPATIBILITY
%LV.VX==400		;VAX COBOL EXTENSIONS
%LV.8==1000		;COBOL-8x EXTENSIONS
%LV.NS==2000		;NON-STANDARD EXTENSION

>

;TRACE CODE FLAGS (PHASE E AND COBDDT)

TC.DB==(1B3)		;DEBUGGING REQUIRED
TC.EP==(1B4)		;EXIT PROGRAM
TC.GB==(1B5)		;GOBACK
TC.PE==(1B7)		;PROGRAM ENTRY
TC.AE==(1B8)		;ALTERNATE ENTRY

;DEBUG PROCEDURE INDICES (PHASE E AND COBDDT)

DBP%SP==1		;START PROGRAM
DBP%FT==2		;FALL THROUGH
DBP%UP==3		;USE PROCEDURE
DBP%PL==4		;PERFORM LOOP
DBP%SI==5		;SORT INPUT
DBP%SO==6		;SORT OUTPUT
DBP%MO==7		;MERGE OUTPUT
;ITEM TYPES USED IN SYNTAX TREES


ACCEP.==001	;ACCEPT
ACCES.==267	;ACCESS
ACTUA.==101	;ACTUAL
ADD.==002	;ADD
ADVAN.==300	;ADVANCING
AFTER.==301	;AFTER
ALL.==706	;ALL
ALLOW.==516	;ALLOWING
ALPHB.==303	;ALPHABETIC
ALPHN.==201	;ALPHANUMERIC
ALSO.==600	;ALSO
ALTER.==003	;ALTER
ALTRN.==102	;ALTERNATE
AND.==304	;AND
ANY.==431	;ANY
ANY.==431	;ANY
ARE.==305	;ARE
AREA.==435	;AREA
ASCND.==306	;ASCENDING
ASCII.==163	;ASCII
ASSGN.==104	;ASSIGN
AT.==307	;AT
AUTHR.==105	;AUTHOR
BEFOR.==310	;BEFORE
BEGIN.==311	;BEGINNING
BINRY.==165	;BINARY
BLANK.==202	;BLANK
BLOCK.==203	;BLOCK
BOTTO.==601	;BOTTOM
BY.==312	;BY
BYTE.==171	;BYTE
CALL.==422	;CALL
CAN.==424	;CANCEL
CD.==460	;CD
CF.==254	;CF
CH.==252	;CH
CHANN.==154	;CHANNEL
IFN ANS68,<
CHARA.==241	;CHARACTERS
>
IFN ANS74,<
CHARA.==642	;CHARACTER, CHARACTERS
>
CHECK.==527	;CHECK
CHKPT.==631	;CHECKPOINT
CLASS.==500	;CLASS
CLCKU.==602	;CLOCK-UNIT
CLOSE.==004	;CLOSE
COBOL.==313	;COBOL
CODE.==277	;CODE
CDSET.==603	;CODE-SET
COL.==257	;COLUMN
COLLA.==604	;COLLATING 
COMM.==457	;COMMUNICATION
COMMA==147	;COMMA
COMPIL.==261	;COMPILE
COMP.==204	;COMPUTATIONAL
COMP1.==205	;COMPUTATIONAL-1
COMP2.==234	;COMPUTATIONAL-2
COMP3.==207	;COMPUTATIONAL-3
COMPU.==005	;COMPUTE
COMPB.==502	;COMPILER-BREAK-IN-PHASE (FOR DEBUGGING COBOL)
CONFG.==106	;CONFIGURATION
CONSL.==302	;CONSOLE
CONTA.==206	;CONTAINS
CONTR.==260	;CONTROL, CONTROLS
COPY.==006	;COPY
CORR.==314	;CORRESPONDING
COUNT.==474	;COUNT
CURR.==436	;CURRENCY
CURNT.==445	;CURRENT
DATA.==511	;DATA
DATE..==470	;DATE
DBKEY.==211	;DATABASE-KEY
DATEC.==110	;DATE-COMPILED
DATEW.==210	;DATE-WRITTEN
DAY..==605	;DAY
DE.==253	;DE, DETAIL
DEBUG.==615	;DEBUGGING
DECPN.==150	;DECIMAL-POINT
DECLA.==315	;DECLARATIVES
DEFER.==153	;DEFERRED
DELET.==043	;DELETE
DLIMD.==512	;DELIMITED
DLIMR.==513	;DELIMITER
DEC20.==166	;DECSYSTEM-20
DENSIT==161	;DENSITY
DEPEN.==316	;DEPENDING
DEPTH.==475	;DEPTH
DESCN.==317	;DESCENDING
DEST.==476	;DESTINATION
DISAB.==055	;DISABLE
DISPL.==007	;DISPLAY
DSPL6.==212	;DISPLAY-6
DSPL7.==213	;DISPLAY-7
DSPL9.==215	;DISPLAY-9
DIVID.==010	;DIVIDE
DIVIS.==405	;DIVISION
DOWN.==320	;DOWN
DUPL.==450	;DUPLICATE, DUPLICATES
DYNAM.==616	;DYNAMIC
EBCDC.==643	;EBCDIC
EGI.==505	;EGI
ELSE.==011	;ELSE
EMI.==504	;EMI
EMPTY.==432	;EMPTY
ENABL.==056	;ENABLE
END.==406	;END
EOP.==617	;EOP, END-OF-PAGE
ENDIN.==321	;ENDING
ENDIT.=777	;END-OF-FILE
ENTER.==013	;ENTER
ENTRY.==425	;ENTRY
ENVIR.==111	;ENVIRONMENT
EPI.==506	;EPI
EQUAL.==322	;EQUALS
ERROR.==323	;ERROR
ESI.==503	;ESI
EVEN.==170	;EVEN
EVERY.==324	;EVERY
EXAMI.==014	;EXAMINE
EXCEP.==620	;EXCEPTION
EXCL.==456	;EXCLUSIVE
EXIT.==015	;EXIT
EXTEN.==621	;EXTEND
FD.==214	;FD
FILE.==325	;FILE
FILEC.==112	;FILE-CONTROL
FILEL.==113	;FILE-LIMITS
FILST.==143	;FILE-STATUS
FILLE.==421	;FILLER
FINAL.==262	;FINAL
FIND.==052	;FIND
FIRST.==326	;FIRST
FOOT.==263	;FOOTING
FOR.==327	;FOR
F10.==423	;FORTRAN
FORTR.==415	;FORTRAN-IV
FREE.==063	;FREE
FREED.==523	;FREED
FROM.==330	;FROM
GEN.==041	;GENERATE
GET.==050	;GET
GIVIN.==331	;GIVING
GO.==016	;GO
GOBAK.==426	;GOBACK
GREAT.==332	;GREATER
GROUP.==264	;GROUP
HEADG.==265	;HEADING
HIVAL.==700	;HIGH-VALUES
IO.==333	;IO,INPUT-OUTPUT
IOCON.==114	;I-O-CONTROL
ID.==216	;IDENTIFICATION
IF.==017	;IF
IN.==334	;IN
INDEX.==217	;INDEX
INDIC.==266	;INDICATE
INDXD.==220	;INDEXED
INIT.==040	;INITIATE
INITL.==461	;INITIAL
INPUT.==335	;INPUT
INSRT.==046	;INSERT
INSPC.==622	;INSPECT
INSTA.==115	;INSTALLATION
INTO.==336	;INTO
INVAL.==337	;INVALID
INVOK.==246	;INVOKE
IS.==305	;IS
JOURN.==526	;JOURNAL
JUST.==221	;JUSTIFIED
KEY==340	;KEY
LABEL.==410	;LABEL
LAST.==447	;LAST
LEAD.==341	;LEADING
LEFT.==223	;LEFT
LNGTH.==473	;LENGTH
LESS.=342	;LESS
LIM.==222	;LIMIT, LIMITS
LINAG.==623	;LINAGE
LNGCO.==624	;LINAGE-COUNTER
LINE.==343	;LINE
LINKG.==243	;LINKAGE
LOCK.==344	;LOCK
LOVAL.==701	;LOW-VALUES
MACRO.==414	;MACRO
MEMBR.==433	;MEMBER
MEMOR.==116	;MEMORY
MERG.==626	;MERGE

IFN CSTATS,<
METJS.==064	;METER--JSYS
METNG.==172	;METER--ING
>
MODE.==151	;MODE
MODIF.==047	;MODIFY
MODUL.==117	;MODULES
MOVE.==020	;MOVE
MSG.==467	;MESSAGE
MULTP.==120	;MULTIPLE
MULTI.==021	;MULTIPLY
NATIV.==627	;NATIVE
NEGAT.==345	;NEGATIVE
NEXT.==346	;NEXT
NO.==347	;NO
NONE.==517	;NONE
NOT.==350	;NOT
NOTE.==022	;NOTE
NUMBR.==270	;NUMBER
NUMER.==351	;NUMERIC
OBJEC.==121	;OBJECT-COMPUTER
OCCUR.==224	;OCCURS
ODD.==167	;ODD
OF.==334	;OF, IN
OFF.==412	;OFF
OMITT.==225	;OMITTED
ON.==352	;ON
ONLY.==441	;ONLY
OPEN.==023	;OPEN
OPTIO.==123	;OPTIONAL
OR.==353	;OR
ORGAN.==630	;ORGANIZATION
OTHER.==515	;OTHERS
OUTPU.==354	;OUTPUT
OVRFL.==430	;OVERFLOW
OWNER.==434	;OWNER
PAGE.==510	;PAGE
PARIT.==162	;PARITY
PDP10.==157	;PDP-10, DECSYSTEM-10
PERFO.==024	;PERFORM
PF.==255	;PF
PH.==251	;PH
PIC.==226	;PICTURE
PLS.==272	;PLUS
PNTR.==501	;POINTER
PSTN.==124	;POSITION
PSTNG.==525	;POSITIONING
PSTV.==355	;POSITIVE
PRIOR.==446	;PRIOR
PRINT.==632	;PRINTING
PRVCY.==452	;PRIVACY
PROC.==411	;PROCEDURE, PROCEDURES
PROCE.==356	;PROCEED
PRCSS.==125	;PROCESS
PGM.==427	;PROGRAM
PGMID.==126	;PROGRAM-ID
PROT.==455	;PROTECTED
QUEUE.==463	;QUEUE
QUOTE.==702	;QUOTE
RAND.==127	;RANDOM
RD.==227	;RD
READ.==025	;READ
READR.==521	;READ-REWRITE
READW.==522	;READ-WRITE
RECEV.==053	;RECIEVE
REC.==357	;RECORD
RECRDG==160	;RECORDING
REDEF.==230	;REDEFINES
REEL.==360	;REEL
REFER.==633	;REFERENCES
RELAT.==152	;RELATIVE
RELEA.==026	;RELEASE
REMAI.==413	;REMAINDER
REMAR.==130	;REMARKS
REMOV.==051	;REMOVE, REMOVAL
RENAM.==231	;RENAMES
REPLA.==361	;REPLACING
REPOR.==273	;REPORT, REPORTS
REPTG.==417	;REPORTING
RERUN.==131	;RERUN
RESER.==132	;RESERVE
RESET.==274	;RESET
RETAD.==524	;RETAINED
RETAI.==062	;RETAIN
RETR.==454	;RETRIEVAL
RETUR.==027	;RETURN
REVER.==362	;REVERSED
REWIN.==363	;REWIND
REWRT.==044	;REWRITE
RF.==256	;RF
RH.==250	;RH
RIGHT.==232	;RIGHT
RMS.==625	;RMS
ROUND.==364	;ROUNDED
RUN.==365	;RUN
RNUNT.==443	;RUN-UNIT
SAME.==133	;SAME
SCHEM.==245	;SCHEMA
SD.==233	;SD
SEARC.==030	;SEARCH
SECT.==366	;SECTION
SECUR.==134	;SECURITY
SEEK.==031	;SEEK
SGMNT.==502	;SEGMENT
SEGME.==135	;SEGMENT-LIMITS
SELEC.==136	;SELECT
SELTV.==442	;SELECTIVE
SEND.==054	;SEND
SENT.==367	;SENTENCE
SEPER.==634	;SEPERATE
SEQCE.==530	;SEQUENCE
SEQU.==137	;SEQUENTIAL
SET.==032	;SET
SHAR.==527	;SHARED
SIGN.==140	;SIGN
SIXBT.==164	;SIXBIT
SIZE.==404	;SIZE
SORT.==033	;SORT
SRTMG.==636	;SORT-MERGE
SOUR.==275	;SOURCE
SOURC.==141	;SOURCE-COMPUTER
SPACE.==703	;SPACE
SPECI.==142	;SPECIAL-NAMES
STAND.==407	;STANDARD
STND1.==637	;STANDARD-1
STDAS.==155	;STANDARD-ASCII
STATU.==444	;STATUS
START.==640	;START
STOP==034	;STOP
STORE.==45	;STORE
STRIN.==060	;STRING
SBSCH.==244	;SUB-SCHEMA
SUBQ1.==464	;SUB-QUEUE-1
SUBQ2.==465	;SUB-QUEUE-2
SUBQ3.==466	;SUB-QUEUE-3
SUBTR.==035	;SUBTRACT
SUM.==276	;SUM
SUPPR.==437	;SUPPRESS
SWTCH.==416	;SWITCH
SYMBL.==462	;SYMBOLIC
SYNCH.==235	;SYNCHRONIZED
TABLE.==477	;TABLE
TALLY==704	;TALLY
TERML.==507	;TERMINAL
TERM.==042	;TERMINATE
TEXT.==472	;TEXT
TLYNG.==370	;TALLYING
TAPE.==144	;TAPE
THAN.==371	;THAN
THRU.==372	;THROUGH
TIME..==471	;TIME
TIMES.==373	;TIMES
TO.==374	;TO
TODAY==707	;TODAY
TOP.==642	;TOP
TRAC.==420	;TRACE
TRAIL.==641	;TRAILING
TRANS.==531	;TRANSACTION
TYPE.==247	;TYPE
UNAVA.==520	;UNAVAILABLE
UNIT.==360	;UNIT
UNSTR.==061	;UNSTRING
UNTIL.==375	;UNTIL
UP.==376	;UP
UPDAT.==440	;UPDATE
UPON.==377	;UPON
USAGE.==236	;USAGE
USGMD.==453	;USAGE-MODE
USE.==036	;USE
PPN.==242	;USER-NUMBER
USING.==400	;USING
VALUE.==237	;VALUE
VARYI.==401	;VARYING
VERB.==514	;VERB
VIA.==532	;VIA
WHEN.==402	;WHEN
WITH.==403	;WITH
WITHN.==451	;WITHIN
WORDS.==145	;WORDS
WORKI.==240	;WORKING-STORAGE
WRITE.==037	;WRITE
ZERO.==705	;ZERO

.COMMA==765	;,
SEMIC.==766	;;
LPREN.==767	;(
RPREN.==770	;)
PRIOD.==771	;.
PLUS.==772	;+
MINUS.==773	;-
SLASH.==774	;/
ASTER.==775	;*
EXPON.==776	;**

USERN.==1000	;USER-NAME
FILEN.==1001	;FILE-NAME
MNEMO.==1002	;MNEMONIC-DEVICE-NAME
SPECN.==1003	;SPECIAL-NAME
CONDI.==1004	;CONDITION-NAME
EXTNA.==1005	;EXTERNA.-NAME
PRONM.==1006	;PROCEDURE-NAME
FIGCN.==1010	;FIGURATIVE-CONSTANT
INTGR.==1011	;INTEGER
NLIT.==1012	;NUMERIC-LITERAL
LITER.==1013	;LITERAL
INDNA.==1014	;INDEX-NAME
RECNA.==1015	;RECORD-NAME
GNAME.==1016	;GROUP-NAME
DATAN.==1017	;DATA-NAME
RPNAM.==1020	;REPORT-NAME
CDNAM.==1021	;CD-NAME

AMRGN.==2000	;IN A-MARGIN
;GENFIL OPERATORS

SDELIM==136
STRNG==137
UDELIM==140
UNSDES==141
UNSTR==142


	LIST
	SALL

;PARAMETERS FOR OPTIMIZER

IPI==5		;AC USED TO POINT TO IPTAB

NBACK==^D10	;# INSTRUCTIONS TO KEEP BEFORE CURRENT INSTR.
NWINDO==^D10	;WINDOW SIZE (THE LARGER THIS IS, THE FASTER THE
		; OPTIMIZER WILL GO, BECAUSE IT MUST DO A "BLT"
		; EVERY NWINDO INSTRUCTIONS)
NFRONT==^D20	;# INSTRUCTIONS TO KEEP AFTER CURRENT INSTR.
MAXINX== NBACK*2+NWINDO+NFRONT ;MAX # INSTRUCTIONS IN IPTAB

GCLEN== MAXINX*3	;MAX # WORDS NEEDED TO HOLD MAXINX INSTRUCTIONS
;ERROR CODES USED BY ALL PHASES

DEFINE ERRCOD(N)<E.'N==:N
		.XCREF E.'N>
RADIX 10
ZZ==0
REPEAT 700,<ERRCOD \<ZZ==ZZ+1>>
IFN ANS74!FT68274,<REPEAT 100,<ERRCOD\<ZZ==ZZ+1>>>
RADIX 8


;MAX SIZE OF LOW SEGMENT (LARGEST PC ALLOWED IS THIS - 1)

MLOWSZ==400000

;FOR DEBUGGER
TXTLEN==^D80		;MAX # CHARS IN AN INPUT LINE

IFN FT68274,<
;CODES FOR WHAT TO DO AT END OF LINE

CVT.WS==1		;WORKING-STORAGE SECTION JUST SEEN.
>
END