Google
 

Trailing-Edge - PDP-10 Archives - CFS_TSU04_19910205_1of1 - update/cblsrc/p.mac
There are 20 other files named p.mac in the archive. Click here to see a list.
; UPD ID= 1634 on 6/26/84 at 4:37 PM by MCARLETON                       
UNIVERSAL P FOR COBOL
SUBTTL	PARAMETERS FOR COBOL 			AL BLACKINGTON/CAM

	SEARCH COPYRT
	SALL


COPYRIGHT (C) 1974, 1983, 1984 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
;
;JEH	28-MAR-85	[1570] Parse and process ref. mod. fields
;				for fields which may be subscripted.
;MJC    18-JUN-84       [1540] Define OUTCHR Macro for TOPS-20
;JEH	16-May-84	[1535] Define error bit for ref. mod. op code
;JEH	18-Mar-82	[1345] Trap illegal UUO's on TOPS-10.
;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

.DIRECTIVE .NOBIN

%%P==5		;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

ANS82==:ANS82
DBMS==:DBMS
DBMS6==:DBMS6
DEBUG==:DEBUG
MCS==:MCS
MPWCEX==:MPWCEX
ONESEG==:ONESEG
TOPS20==:TOPS20
XPNTST==:XPNTST

SWSET%==SWSET%	;ASSEMBLY SWITCH WORD

;ADDITIONAL FEATURE TEST FLAGS THAT CAN BE SET BY COBOL SYNTAX
;THESE USED TO BE FEATURE TEST SWITCHES SET OFF BE DEFAULT

SW.A74==SW.A74	;ANS-74 SYNTAX WANTED
SW.A82==SW.A82	;ANS-82 SYNTAX WANTED
SW.STB==SW.STB	;SUPPRESS TRAILING BLANKS ON WRITE
;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


IFN TOPS20,<
T1==1			;ACCS FOR JSYS CALLS
T2==2
T3==3
>

;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

IFE ANS82,<
	MAXSUB==3	;MAXIMUM NUMBER OF SUBSCRIPTS ALLOWED
>
IFN ANS82,<
	MAXSUB==^D48	;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
IFE ANS82,<
	MAXLIT==^D120	;Maximum size of non-numeric literal
	MAXWLT==MAXLIT/5	;Size of maximum literal in words
>
IFN ANS82,<
	MAXLIT==^D256	;Maximum size of non-numeric literal
	MAXWLT==MAXLIT/5+1	;Size of maximum literal in words
	MXLT82==^D160	;Maximum size of non-numeric literal in ANS-82
	MXLT74==^D120	;Maximum size of non-numeric literal in ANS-74
>
	MXPERF==3	;Maximum number of perform varying's allowed
;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
>
;TOPS-20 I/O definitions

IFN TOPS20,<
;I/O files used by the compiler

;IOLIST (A,B,C,D,E) is a macro that takes the following args
;
;	A is the letter mnemonic for file
;	B is the buffer size in words
;	C is the OPENF% byte size
;	D is the LDB/DPB byte size
;	E is the temp file flag (if non-zero)

DEFINE IOFILE,<
	IOLIST SRC,200,^D36,7,0
	IOLIST LST,200,7,7,0
	IOLIST BIN,200,^D36,^D36,0
	IOLIST LIB,200,^D36,7,0
	IOLIST NAM,200,^D36,^D36,1
	IOLIST ERA,200,^D36,^D36,1
	IOLIST GEN,200,^D36,^D36,1
	IOLIST CPY,200,^D36,7,1
	IOLIST AS1,200,^D36,^D36,1
	IOLIST AS2,200,^D36,^D36,1
	IOLIST AS3,200,^D36,^D36,1
	IOLIST LIT,0,^D36,^D36,1
	IOLIST CRF,200,^D36,^D36,1
	IOLIST SF1,200,^D36,^D36,1
	IOLIST SF2,200,^D36,^D36,1
	IOLIST SF3,200,^D36,^D36,1
	IOLIST DMP,200,7,7
 IFN DBMS,<
	IOLIST DBC,200,7,7,1
	IOLIST DBD,200,7,7,1
>>

>
;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

IFE TOPS20,<
ER.MSG==1B0	;[1345] NO MONITOR MESSAGE
ER.EIJ==1B29	;[1345] ERROR IN JOB
>

;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

$DSK==(1B1)	;DEVICE IS A DISK
$CDR==(1B2)	;DEVICE IS A CARD-READER
$LPT==(1B3)	;DEVICE IS A LINE-PRINTER
$CONSL==(1B5)	;DEVICE IS A CONSOLE
$DTA==(1B11)	;DEVICE IS A DEC-TAPE
$AVAIL==(1B12)	;DEVICE IS AVAILABLE
$MTA==(1B13)	;DEVICE IS A MAG-TAPE
$TTY==(1B14)	;DEVICE IS A TTY
$DIREC==(1B15)	;DEVICE HAS A DIRECTORY
$IN==(1B16)	;DEVICE CAN DO INPUT
$OUT==(1B17)	;DEVICE CAN DO OUTPUT

$BIN==1B23	;DEVICE CAN WRITE BINARY

$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

;FLAGS USED IN SWITCH SCANNING

FL.LIB==1		;FILE IS A LIBRARY
FL.REW==2		;DEVICE NEEDS REWINDING
IFE TOPS20,<
FL.ZRO==4		;DIRECTORY NEEDS CLEARING
>
;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

EVSSBT==1B9		;Selection Subject flag for EVALUATE
EVTHRB==1B10		;Selection object contained a 'THRU'
EVCDBT==1B11		;Selection object is a condition-name
EVFABT==1B15		;"False" flag for EVALUATE TRUE operator
EVSS1W==1		;EVALUATE Selection Subject is one word long
EVSS2W==2		;EVALUATE Selection Subject is two words long

;EVALUATE flag bits, in word EVALFL
EVIMPS==1B0		;processing an imperative statement in EVALUATE
EVALF==1B1		;in EVALUATE
EVOTHR==1B2		;'OTHER' seen
EVALTF==1B3		;processing TRUE/FALSE
EVTHRU==1B4		;'THRU' seen
EVWHEN==1B5		;'WHEN' seen
EVCND==1B6		;processing a conditional
EVNOTF==1B7		;'NOT' seen
EVNYSN==1B8		;'ANY' seen

RFMLEN==1B9		;Reference Modification - signifies length
RFMBTH==1B10		;Reference Modification - length modifier follow
RFMERR==1B11		;[1535] Reference Mod. - phase D flagged err w/ mod's

;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, DAY-OF-WEEK - ANS-74 REPLACEMENT FOR TODAY
GNDOW== 0B25
GNDATE==1B25
GNDAY== 2B25
GNTIME==3B25

;INDEXES FOR FIGURATIVE CONSTANTS - STORED IN EFLAGX IN PHASE E

IXTODY==0	;TODAY (NOT USED)
IXSPAC==1	;SPACE
IXZERO==2	;ZERO
IXQUOT==3	;QUOTE
IXHIV==4	;HIGH VALUE
IXLOWV==5	;LOW VALUE
IXDATE==6	;DATE
IXDAY==7	;DAY
IXTIME==10	;TIME
IXDOW==11	;DAY-OF-WEEK
IXSYCH==12	;SYMBOLIC CHARACTER

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
GNEVSB==1B15	;OPERAND IS EVAL. SEL SUBJ WH/ HAS BEEN RANGE TESTED
GNREFM==1B14	;OPERAND IS REFERENCE MODIFIED

;VARIOUS OTHER FLAGS

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

;BITS SET IN SW FOR RUN-TIME USE BY GD.MAC (CVDBT. ETC)

SW.SGN==(1B1)			;SIGNED
SW.2WC==(1B2)			;2-WORD COMP
;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

IFN TOPS20,<
DEFINE	OUTSTR(TEXT)<
	PUSH	PP,T1
	HRROI	T1,TEXT
	PSOUT%
	POP	PP,T1
>
DEFINE	OUTCHR(CHAR)<			;[1540] TO REPLACE UUO
	PUSH	PP,T1			;[1540] SAVE T1
	HRRZ	T1,CHAR			;[1540] WHERE THE CHARACTER IS
	PBOUT%				;[1540] TO PRIMARY OUT
	POP	PP,T1			;[1540] RESTORE T1
>
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##
 IFN TOPS20,<IFDIF <X><A>,<MOVE	PP,PPOINT##>>	;;ALREADY SET UP IN COBSCN FOR PHASE A
 IFDIF <X><O>< EXTERNAL PURE'X>		;;THERE IS NO PUREO


IFN ZZ%,<
 IFE ONESEG,<
	MOVEI	TA,KILL##
	MOVEM	TA,WEDIED##+1
>
IFE TOPS20,<
	MOVEI	TA,UUOKIL##		;;[1345] POINT TO ARG BLOCK
	MOVEM	TA,.JBINT##		;;[1345]
	DMOVE	TA,[4,,UUOC1##		;;[1345] LENGTH,,RETURN
		EXP ER.MSG!ER.EIJ]	;;[1345] NO MONITOR MESSAGE
	DMOVEM	TA,UUOKIL		;;[1345]
	SETZM	UUOKIL+2		;;[1345] WILL HOLD PC
	SETZM	UUOKIL+3		;;[1345] WILL HOLD CAUSE OF INTERUPT
>
	MOVEI	TA,REDO##
	HRRM	TA,.JBSA##
	MOVEI	TA,RESTRT##
	HRRM	TA,.JBREN##
	MOVE	TA,[PUSHJ PP,UUOCAL##]
	MOVEM	TA,.JB41##
IFE TOPS20,<
	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><
   IFE TOPS20,<
	OUTSTR	[ASCIZ "PHASE X
"]
    >
   IFN TOPS20,<
	PUSH	PP,T1
	HRROI	T1,[ASCIZ "PHASE X
"]
	PSOUT%
	POP	PP,T1
    >
 >>>
    IFE TOPS20,<
	CALLI	TA,$TIME
	MOVEM	TA,%'X'TIME
	MOVEI	TA,0
	CALLI	TA,$RTIME
	MOVEM	TA,%R'X'TIM
    >
    IFN TOPS20,<
	MOVEI	T1,.FHSLF	;Get runtime for this fork
	RUNTM%			;Get runtime and current time
	MOVEM	T1,%R'X'TIM	;Save runtime
	MOVEM	T3,%'X'TIME	;Save current time
    >
>>
DEFINE ENDFAZ (X),<

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

  IFDIF <X><G><
    IFE TOPS20,<
	MOVEI	TA,0
	CALLI	TA,$RTIME
	MOVEM	TA,%R'X'TIM+1
	CALLI	TA,$TIME
	MOVEM	TA,%'X'TIME+1
    >
    IFN TOPS20,<
	MOVEI	T1,.FHSLF	;Get runtime for this fork
	RUNTM%			;Get runtime and current time
	MOVEM	T1,%R'X'TIM+1	;Save runtime
	MOVEM	T3,%'X'TIME+1	;Save current time
    >
	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><
	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
	TABSET RCO,2,100,RCOTAB,1,0,1
	TABSET USE,2,10,USETAB,1,0,1
IFN DBMS,<
	TABSET DBD,600,200,DBDTAB,0,0,1
	>
IFN MCS,<
	TABSET CD,200,100,CDTAB,2,2,1
	>
	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	PRG,10,10,PRGTAB,2,2,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

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	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==^D29	;SIZE OF FIXED PORTION OF FILE TABLE DURING COMPILATION.
SZ.DAT==7
SZ.CON==2
SZ.LIT==1
SZ.PRO==5
SZ.PR6==4	;COBOL-68 TABLE SIZE
SZ.EXT==2
SZ.VAL==777777
SZ.MNE==2
SZ.FLO==2
SZ.OUS==^D20	;SIZE OF USES TABLE OUTPUT
SZ.MSK==4
SZ.CPY==2
SZ.HLD==2
SZ.RPU==1	;SIZE OF RPWTAB ENTRY FOR UPON ENTRY
SZ.RPD==14	;SIZE OF RPWTAB ENTRY FOR EACH "RD"
SZ.RCO==4	;SIZE OF REPORT GROUP 'CONTROL' ENTRIES (CONTROLS ARE...)
SZ.RPG==6+^D18	;[1570] SIZE OF RPWTAB ENTRY FOR REPORT GROUP
		;[1570] 18 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
SZ.CD==^D9
SZ.TEM==1		; [415] NORMALLY ONE WORD PER TEMTAB ENTRY
SZ.TM2==2		; [415] TWO WORD TEMTAB ENTRY
SZ.AKT==2			;SIZE OF ACTUAL KEY ENTRY
SZ.DEB==2
SZ.PRG==3
SZ.SEC==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 (obsolete)
%%LBL==3	;NOT SPECIFIED

;CODES FOR ORGANIZATION

%ORG.S==0	;SEQUENTIAL
%ORG.R==1	;RELATIVE
%ORG.I==2	;INDEXED SEQUENTIAL
%%ORG==3	;NOT SPECIFIED

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

;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
%HL.PR==24	;VALUE OF PROTECTION CODE

;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

.HEDEB==.HEVLR+1 ;DEBUGGING OPERAND
.HESIZ==.HEDEB+1 ;SIZE OF HLDTAB ENTRY
;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

IF.DEP==^D24

;NESTING EVALUATE STATEMENTS
EV.SIZ==^D5	;5 words needed for each EVALUATE verb
EV.STK==^D10	;2 nestings allowed
EV.DEP==^D3	;

;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 NUMBER 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

RW.MX==3	;MAXIMUM NUMBER OF LEVELS IN REPORT SECTION
;ALPHABET-NAME

%AN.AS==1B18		;ASCII
%AN.S1==1B18		;STANDARD-1
%AN.EB==1B19		;EBCDIC
%AN.S2==1B20		;STANDARD-2

;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 ADDRESSING
OPDEF	IFIW	[1B0]		;

;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 WORD 2 OF MNETAB ENTRY

MTSW==400000	;SWITCH
MTSON==200000	;SWITCH ON STATUS
MTSOFF==100000	;SWITCH OFF STATUS
MTCONS==040000	;CONSOLE
MTCHAN==020000	;CHANNEL
MTCODE==010000	;CODE FOR RD ENTRY
MTALPA==004000	;ALPHABET-NAME
MTSYMB==002000	;SYMBOLIC CHARACTER

;FLAGS USED IN RH OF WORD 2 OF MNETAB ENTRY

MTSEBC==1B18	;SYMBOLIC CHAR IN EBCDIC

;FLAGS USED IN RH OF WORD 3 OF MNETAB ENTRY

MTTHRU==1B18	;THRU IN ALPHABET-NAME
MTALSO==1B19	;ALSO IN ALPHABET-NAME
MTZERO==1B20	;ZERO MARKER (TEMP) IN ALPHABET-NAME

;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

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
SUBTTL	INTERNAL DEBUGGING VALUES

;FOR /TRACE SWITCH IN RHS OR CORESW

TRACEI==1B32		;CORESW FLAG FOR TRACEING ID
TRACEE==1B33		;CORESW FLAG FOR TRACEING ED
TRACED==1B34		;CORESW FLAG FOR TRACEING DD
TRACEP==1B35		;CORESW FLAG FOR TRACEING PD
TRACEA==TRACEI!TRACEE!TRACED!TRACEP

;FOR /K AND /F SWITCHES IN LHS OF CORESW

%KILLA==1
%KILLB==2
%KILLC==4
%KILLD==10
%KILLE==20
%KILLF==40
%KILLG==100
%KILLO==200
%KILL==%KILLA!%KILLB!%KILLC!%KILLD!%KILLE!%KILLF!%KILLG!%KILLO

%KILFA==400
%KILFB==1000
%KILFC==2000
%KILFD==4000
%KILFE==10000
%KILFF==20000
%KILFG==40000
%KILFO==100000
SUBTTL TABLE OF RESERVED WORDS

;VERBS

;					040 INITIATE
;001 ACCEPT				041 
;002 ADD				042 TERMINATE
;003 ALTER				043 DELETE
;004 CLOSE				044 REWRITE
;005 COMPUTE				045 STORE
;006 COPY 				046 INSERT
;007 DISPLAY				047 MODIFY
;010 DIVIDE				050 GET 
;011 ELSE 				051 REMOVE 
;012					052 FIND
;013 ENTER				053 RECEIVE
;014 EXAMINE				054 SEND
;015 EXIT 				055 DISABLE
;016 GO					056 ENABLE
;017 IF					057 TRACE 
;020 MOVE				060 STRING
;021 MULTIPLY				061 UNSTRING
;022 					062 RETAIN
;023 OPEN				063 FREE
;024 PERFORM				064 CALL
;025 READ				065 CANCEL
;026 RELEASE				066
;027 RETURN				067 INSPECT
;030 SEARCH				070 MERGE
;031 					071 START
;032 SET,SETS				072 SUPPRESS
;033 SORT				073 CONTINUE
;034 STOP				074 EVALUATE
;035 SUBTRACT				075 INITIALIZE
;036 USE				076 PURGE
;037 WRITE				077 REPLACE
;WORDS USED ONLY BY ID & ED SCANS

;100 					140 SIGN
;101 ACTUAL				141 SOURCE-COMPUTER
;102 ALTERNATE				142 SPECIAL-NAMES
;103 					143 FILE-STATUS
;104 ASSIGN				144 TAPE
;105 AUTHOR				145 WORDS
;106 CONFIGURATION			146 
;107 					147 COMMA
;110 DATE-COMPILED			150 DECIMAL-POINT
;111 ENVIRONMENT			151 MODE
;112 FILE-CONTROL 			152 RELATIVE
;113 FILE-LIMIT[S]			153 DEFERRED
;114 I-O-CONTROL			154 CHANNEL 
;115 INSTALLATION 			155 STANDARD-ASCII
;116 MEMORY				156
;117 MODULES				157
;120 MULTIPLE				160 RECORDING
;121 OBJECT-COMPUTER			161 DENSITY
;122					162 PARITY
;123 OPTIONAL				163 ASCII
;124 POSITION				164 SIXBIT
;125 PROCESSING				165 BINARY
;126 PROGRAM-ID				166
;127 RANDOM				167 ODD
;130 REMARKS				170 EVEN
;131 RERUN				171 BYTE
;132 RESERVE				172 APPLY
;133 SAME				173 BASIC-LOCKING
;134 SECURITY
;135 SEGMENT-LIMIT
;136 SELECT
;137 SEQUENTIAL
;WORDS WHICH CAN GO AWAY AFTER DD SCAN

;200					240 WORKING-STORAGE
;201		 			241
;202 BLANK[S]				242 USER-AREA
;203 BLOCK				243 LINKAGE
;204 COMP,COMPUTATIONAL			244 SUB-SCHEMA
;205 COMP-1,COMPUTATIONAL-1		245 SCHEMA
;206 CONTAINS				246 INVOKE 
;207 COMP-3,COMPUTATIONAL-3		247 TYPE
;210 DATE-WRITTEN 			250 RH
;211 DATABASE-KEY			251 PH
;212 DISPLAY-6				252 CH
;213 DISPLAY-7				253 DE,DETAIL
;214 FD					254 CF
;215 DISPLAY-9				255 PF
;216 IDENTIFICATION,ID			256 RF
;217 INDEX				257 COLUMN
;220 INDEXED				260 CONTROL[S]
;221 JUST,JUSTIFIED			261 COMPILE
;222 LIMIT[S]				262 FINAL
;223 LEFT				263 FOOTING
;224 OCCURS				264 GROUP
;225 OMITTED				265 HEADING
;226 PIC,PICTURE			266 INDICATE
;227 RD					267 ACCESS 
;230 REDEFINES				270 NUMBER
;231 RENAMES				271
;232 RIGHT				272 PLUS
;233 SD					273 REPORT[S]
;234 COMP-2,COMPUTATIONAL-2		274 RESET
;235 SYNC,SYNCHRONIZED			275 SOURCE
;236 USAGE				276 SUM
;237 VALUE[S]				277 CODE
;WORDS USED BY ALL PHASES

;300 ADVANCING				340 KEY[S]
;301 AFTER				341 LEADING
;302 CONSOLE				342 LESS,"<"
;303 ALPHABETIC				343 LINE[S]
;304 AND				344 LOCK
;305 IS,ARE	 			345 NEGATIVE
;306 ASCENDING	 			346 NEXT
;307 AT					347 NO
;310 BEFORE				350 NOT
;311 BEGINNING				351 NUMERIC
;312 BY					352 ON
;313 COBOL				353 OR
;314 CORR,CORRESPONDING			354 OUTPUT
;315 DECLARATIVES			355 POSITIVE
;316 DEPENDING	 			356 PROCEED
;317 DESCENDING				357 RECORD[S]
;320 DOWN				360 REEL,UNIT
;321 ENDING 				361 REPLACING
;322 EQUAL[S],"="			362 REVERSED
;323 ERROR				363 REWIND
;324 EVERY				364 ROUNDED
;325 FILE 				365 RUN
;326 FIRST				366 SECTION
;327 FOR				367 SENTENCE
;330 FROM 				370 TALLYING
;331 GIVING				371 THAN
;332 GREATER,">"			372 THRU,THROUGH
;333 INPUT-OUTPUT,I-O			373 TIMES
;334 IN,OF				374 TO
;335 INPUT				375 UNTIL
;336 INTO				376 UP
;337 INVALID 				377 UPON
;400 USING				440 UPDATE
;401 VARYING				441 ONLY
;402 WHEN				442 SELECTIVE
;403 WITH				443 RUN-UNIT
;404 SIZE				444 STATUS
;405 DIVISION				445 CURRENT
;406 END				446 PRIOR
;407 STANDARD				447 LAST
;410 LABEL				450 DUPLICATE[S]
;411 PROCEDURE[S]			451 WITHIN
;412 OFF				452 PRIVACY
;413 REMAINDER				453 USAGE-MODE
;414 MACRO				454 RETRIEVAL
;415 					455 PROTECTED
;416 SWITCH				456 EXCLUSIVE
;417 REPORTING				457 COMMUNICATIONS
;420 TRACE				460 CD
;421 FILLER				461 INITIAL
;422 CALL				462 SYMBOLIC,NOMINAL
;423 FORTRAN				463 QUEUE
;424 CANCEL				464 SUB-QUEUE-1
;425 ENTRY				465 SUB-QUEUE-2
;426 GOBACK				466 SUB-QUEUE-3
;427 PROGRAM				467 MESSAGE
;430 OVERFLOW				470 DATE
;431 ANY				471 TIME
;432 EMPTY				472 TEXT
;433 MEMBER[S]				473 LENGTH
;434 OWNER				474 COUNT
;435 AREA				475 DEPTH
;436 CURRENCY				476 DESTINATION
;437 SUPPRESS				477 TABLE
					;ANS-74 RESERVED WORDS

;500 CLASS				540 ALSO
;501 POINTER				541 BOTTOM
;502 SEGMENT				542 CODE-SET
;503 ESI				543 COLLATING
;504 EMI				544 DAY
;505 EGI				545 DEBUGGING
;506 EPI				546 DYNAMIC
;507 TERMINAL				547 EOP,END-OF-PAGE
;510 PAGE				550 EXCEPTION
;511 DATA				551 EXTEND
;511 DELIMITED				552 LINAGE
;513 DELIMITER				553 LINAGE-COUNTER
;514 VERB				554 RMS
;515 OTHER[S]				555 NATIVE
;516 ALLOWING				556 ORGANIZATION
;517 NONE				557 CHECKPOINT
;520 UNAVAILABLE			560 PRINTING
;521 READ-REWRITE			561 REFERENCE[S]
;522 READ-WRITE				562 SEPARATE
;523 FREED				563 SORT-MERGE
;524 RETAINED				564 STANDARD-1
;525 POSITIONING			565 TRAILING
;526 JOURNAL				566 CHARACTER[S]
;527 CHECK				571 EBCDIC
;530 SEQUENCE				570 TOP
;531 TRANSACTION
;532 VIA
;533 PROTECTION


;537 COMPILER-BREAK-IN-PHASE
;ANS-82 RESERVED WORDS

;600 ALPHABET				
;601 ALPHABETIC-LOWER			
;602 ALPHABETIC-UPPER			
;603 ALPHANUMERIC			
;604 ALPHANUMERIC-EDITED		
;605 COMMON				
;606 CONTENT				
;607 CONVERSION				
;610 CONVERTING				
;611 DAY-OF-WEEK			
;612 EXTERNAL
;613 FALSE
;614 GLOBAL
;615 
;616 NUMERIC-EDITED
;617 ORDER
;620 PADDING
;621 REFERENCE-MODIFIER
;622 STANDARD-2
;623 TEST
;624 THEN
;625 TRUE
;626 UNLOCK (DEC EXTENSION FOR SMU)
;GENERIC SCOPE TERMINATORS
;677 END-xx
;    END-ADD				
;    END-CALL				
;    END-COMPUTE
;    END-DELETE
;    END-DIVIDE
;    END-EVALUATE
;    END-IF
;    END-MULTIPLY
;    END-PERFORM
;    END-READ
;    END-RECEIVE
;    END-RETURN
;    END-REWRITE
;    END-SEARCH
;    END-START
;    END-STRING
;    END-SUBTRACT
;    END-UNSTRING
;    END-WRITE
;    END-ENTER
;    END-FREE
;    END-OPEN
;    END-RETAIN
;700 HIGH-VALUE,HIGH-VALUES		704
;701 LOW-VALUE,LOW-VALUES		705 ZERO,ZEROS,ZEROES
;702 QUOTE,QUOTES			706 ALL
;703 SPACE,SPACES			707 TODAY

;765 ,					772 +
;766 ;					773 -
;767 (					774 /
;770 )					775 *
;771 .					776 **

;777 END OF SOURCE
;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
ALPHA.==600	;ALPHABET
ALPHB.==303	;ALPHABETIC
ALPHL.==601	;ALPHABETIC-LOWER
ALPHU.==602	;ALPHABETIC-UPPER
ALPHN.==603	;ALPHANUMERIC
ALPHE.==604	;ALPHABETIC-EDITED
ALSO.==540	;ALSO
ALTER.==003	;ALTER
ALTRN.==102	;ALTERNATE
AND.==304	;AND
ANY.==431	;ANY
APPLY.==172	;APPLY
ARE.==305	;ARE
AREA.==435	;AREA
ASCND.==306	;ASCENDING
ASCII.==163	;ASCII
ASSGN.==104	;ASSIGN
AT.==307	;AT
AUTHR.==105	;AUTHOR
BASLK.==173	;BASIC-LOCKING
BEFOR.==310	;BEFORE
BEGIN.==311	;BEGINNING
BINRY.==165	;BINARY
BLANK.==202	;BLANK
BLOCK.==203	;BLOCK
BOTTO.==541	;BOTTOM
BY.==312	;BY
BYTE.==171	;BYTE
CALL.==064	;CALL
CAN.==065	;CANCEL
CD.==460	;CD
CF.==254	;CF
CH.==252	;CH
CHANN.==154	;CHANNEL
CHARA.==566	;CHARACTER[S]
CHECK.==527	;CHECK
CHKPT.==557	;CHECKPOINT
CLASS.==500	;CLASS
CLOSE.==004	;CLOSE
COBOL.==313	;COBOL
CODE.==277	;CODE
CDSET.==542	;CODE-SET
CNTNT.==606	;CONTENT
COLLA.==543	;COLLATING 
COL.==257	;COLUMN
COMMA==147	;COMMA
COMMN.==605	;COMMON
COMM.==457	;COMMUNICATION
COMPIL.==261	;COMPILE
COMP.==204	;COMPUTATIONAL
COMP1.==205	;COMPUTATIONAL-1
COMP2.==234	;COMPUTATIONAL-2
COMP3.==207	;COMPUTATIONAL-3
COMPU.==005	;COMPUTE
COMPB.==537	;COMPILER-BREAK-IN-PHASE (FOR DEBUGGING COBOL)
CONFG.==106	;CONFIGURATION
CONSL.==302	;CONSOLE
CONTA.==206	;CONTAINS
CONT.==073	;CONTINUE
CONTR.==260	;CONTROL[S]
CONVS.==607	;CONVERSION
CONVT.==610	;CONVERTING
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..==544	;DAY
DE.==253	;DE, DETAIL
DEBUG.==545	;DEBUGGING
DECPN.==150	;DECIMAL-POINT
DECLA.==315	;DECLARATIVES
DEFER.==153	;DEFERRED
DELET.==043	;DELETE
DLIMD.==512	;DELIMITED
DLIMR.==513	;DELIMITER
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
DOW.==611	;DAY-OF-WEEK
DOWN.==320	;DOWN
DUPL.==450	;DUPLICATE, DUPLICATES
DYNAM.==546	;DYNAMIC
EBCDC.==567	;EBCDIC
EGI.==505	;EGI
ELSE.==011	;ELSE
EMI.==504	;EMI
EMPTY.==432	;EMPTY
ENABL.==056	;ENABLE
END.==406	;END
ENDIN.==321	;ENDING
ENDIT.==777	;END-OF-FILE
ENDXX.==677	;END- (EXPLICIT SCOPE TERMINATOR)
ENTER.==013	;ENTER
ENTRY.==425	;ENTRY
ENVIR.==111	;ENVIRONMENT
EOP.==547	;EOP, END-OF-PAGE
EPI.==506	;EPI
EQUAL.==322	;EQUALS
ERROR.==323	;ERROR
ESI.==503	;ESI
EVAL.==074	;EVALUATE
EVEN.==170	;EVEN
EVERY.==324	;EVERY
EXAMI.==014	;EXAMINE
EXCEP.==550	;EXCEPTION
EXCL.==456	;EXCLUSIVE
EXIT.==015	;EXIT
EXTEN.==551	;EXTEND
EXTER.==612	;EXTERNAL
FALSE.==613	;FALSE
FD.==214	;FD
FILE.==325	;FILE
FILEC.==112	;FILE-CONTROL
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
FREE.==063	;FREE
FREED.==523	;FREED
FROM.==330	;FROM
GEN.==041	;GENERATE
GET.==050	;GET
GIVIN.==331	;GIVING
GLOBL.==614	;GLOBAL
GO.==016	;GO
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
INITL.==461	;INITIAL
INITI.==075	;INITIALIZE
INIT.==040	;INITIATE
INPUT.==335	;INPUT
INSRT.==046	;INSERT
INSPC.==067	;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[S]
LINAG.==552	;LINAGE
LNGCO.==553	;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.==070	;MERGE
MODE.==151	;MODE
MODIF.==047	;MODIFY
MODUL.==117	;MODULES
MOVE.==020	;MOVE
MSG.==467	;MESSAGE
MULTP.==120	;MULTIPLE
MULTI.==021	;MULTIPLY
NATIV.==555	;NATIVE
NEGAT.==345	;NEGATIVE
NEXT.==346	;NEXT
NO.==347	;NO
NONE.==517	;NONE
NOT.==350	;NOT
NUMBR.==270	;NUMBER
NUMED.==616	;NUMERIC-EDITED
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.==556	;ORGANIZATION
ORDER.==617	;ORDER
OTHER.==515	;OTHER[S]
OUTPU.==354	;OUTPUT
OVRFL.==430	;OVERFLOW
OWNER.==434	;OWNER
PADD.==620	;PADDING
PAGE.==510	;PAGE
PARIT.==162	;PARITY
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.==560	;PRINTING
PRVCY.==452	;PRIVACY
PROC.==411	;PROCEDURE[S]
PROCE.==356	;PROCEED
PRCSS.==125	;PROCESS
PGM.==427	;PROGRAM
PGMID.==126	;PROGRAM-ID
PROT.==455	;PROTECTED
PROTC.==533	;PROTECTION
PURG.==076	;PURGE
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.==561	;REFERENCES
RELAT.==152	;RELATIVE
RELEA.==026	;RELEASE
REMAI.==413	;REMAINDER
REMOV.==051	;REMOVE, REMOVAL
RENAM.==231	;RENAMES
REPLC.==077	;REPLACE
REPLA.==361	;REPLACING
REPOR.==273	;REPORT[S]
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
RFMOD.==621	;REFERENCE-MODIFIER
RH.==250	;RH
RIGHT.==232	;RIGHT
RMS.==554	;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
SGMNT.==502	;SEGMENT
SEGME.==135	;SEGMENT-LIMITS
SELEC.==136	;SELECT
SELTV.==442	;SELECTIVE
SEND.==054	;SEND
SENT.==367	;SENTENCE
SEPER.==562	;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.==563	;SORT-MERGE
SOUR.==275	;SOURCE
SOURC.==141	;SOURCE-COMPUTER
SPACE.==703	;SPACE
SPECI.==142	;SPECIAL-NAMES
STAND.==407	;STANDARD
STND1.==564	;STANDARD-1
STND2.==622	;STANDARD-2
STDAS.==155	;STANDARD-ASCII
STATU.==444	;STATUS
START.==071	;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.==072	;SUPPRESS
SWTCH.==416	;SWITCH
SYMBL.==462	;SYMBOLIC
SYNCH.==235	;SYNCHRONIZED
TABLE.==477	;TABLE
TAPE.==144	;TAPE
TERML.==507	;TERMINAL
TERM.==042	;TERMINATE
TEST.==623	;TEST
TEXT.==472	;TEXT
THEN.==624	;THEN
TLYNG.==370	;TALLYING
THAN.==371	;THAN
THRU.==372	;THROUGH
TIME..==471	;TIME
TIMES.==373	;TIMES
TO.==374	;TO
TOP.==570	;TOP
TRAC.==057	;TRACE
TRAIL.==565	;TRAILING
TRANS.==531	;TRANSACTION
TRUE.==625	;TRUE
TYPE.==247	;TYPE
UNAVA.==520	;UNAVAILABLE
UNIT.==360	;UNIT
UNLOC.==626	;UNLOCK (VERB)
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

COLON.==764	;:
.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
ALPBN.==1022	;ALPHABET-NAME
SYCHN.==1023	;SYMBOLIC-CHARACTER

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

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

;GENFIL OPERATOR CODES

OPMOVE==001		;MOVE A TO B,...
OPADD== 002		;ADD A,B... (GIVING...)
OPADDT==003		;ADD A,... (TO...)
OPSUB== 004		;SUBTRACT A,... FROM B (GIVING...)
OPSUBF==005		;SUBTRACT A,... (FROM...)
OPMUL== 006		;MULTIPLY A BY B (GIVING...)
OPMULB==007		;MULTIPLY A (BY...)

OPDIV== 010		;DIVIDE A BY B (GIVING...)
OPRESU==011		;GIVING (FROM,TO,BY) A,...
OPREMA==012		;REMAINDER A
OPDIVB==013		;DIVIDE A BY B (NO GIVING)
OPDCLS==014		;START OF DECLARATIVES
OPDCLE==015		;END OF DECLARATIVES
OPUSE== 016		;USE AFTER ...
OPUSDB==017		;USE FOR DEBUGGING

OPIF==  020		;IF A (=, <, >) B
OPIFC== 021		;IF CONDITION-NAME-A
OPIFT== 022		;IF NUMERIC, POSITIVE,...
OPSPIF==023		;AT END, INV.KEY, SIZE ERROR
OPELSE==024		;BEGINNING OF ELSE PATH FOR CONDITIONAL
OPIFU== 025		;IF IN PERFORM UNTIL 
OPENDI==026		;END OF CONDITIONAL

OPGO==  030		;GO TO A
OPGODE==031		;GO TO A,... DEPENDING ON B
OPPERF==032		;PERFORM A [THRU B]
OPPRFT==033		;PERFORM A [THRU B] C TIMES
OPALTE==034		;ALTER A TO PROCEED TO B
OPSEAR==035		;SEARCH A
OPSINC==036		;SEARCH INCREMENT

OPSTOP==040		;STOP RUN, STOP A
OPINSP==042		;INSPECT A TALLYING B [REPLACING C]
OPSETT==043		;SET A,... TO B
OPSETD==044		;SET A,... DOWN BY B
OPSETU==045		;SET A,... UP BY B
OPUSIN==046		;(ENTER B) USING A,...
OPENTE==047		;ENTER

OPCOMP==050		;COMPUTE B=...
OPCADD==051		;+A
OPCSUB==052		;-A
OPCMUL==053		;*A
OPCDIV==054		;/A
OPCEXP==055		;**A

OPCEND==057		;END OF COMPUTE
OPACCE==060		;ACCEPT A,... [FROM B]
OPDISP==061		;DISPLAY A,... [UPON B]
OPOPEN==062		;OPEN A
OPCLOS==063		;CLOSE A
OPREAD==064		;READ A
OPWRIT==065		;WRITE A [ADVANCING B]
OPRERI==066		;REWRITE A
OPSTRT==067		;START A

OPLPAR==070		;LEFT PARENTHESIS
OPRPAR==071		;RIGHT PARENTHESIS
OPEXP== 072		;START EXPRESSION
OPENDE==073		;END EXPRESSION
OPJUMP==074		;GENERATED CONTROL TRANSFER
OPERAU==075		;ERROR USE PROCEDURE
OPCLRE==076		;CLEAR EOPTAB
OPNTRY==077		;ENTRY A

OPSECN==100		;SECTION-NAME-A
OPPARN==101		;PARAGRAPH-NAME-A
OPTAGN==102		;SPECIAL TAG (%NNNNN)
OPSENA==103		;REFERENCE POINT FOR SENTENCES
OPENDS==104		;END OF SECTION
OPYECC==105		;IGNORE ALL PRECEDING OPERANDS
OPNOOP==106		;NOOP
OPCOLL==107		;COLLATING SEQUENCE FOR SORT/MERGE

OPSORT==110		;SORT A ...
OPKEY== 111		;KEY A
OPINPR==112		;INPUT PROCEDURE IS A [THRU B]
OPOUTP==113		;OUTPUT PROCEDURE IS A [THRU B]
OPGIVI==114		;GIVING A
OPUSIN==115		;USING A
OPENDS==116		;END OF SORT STATEMENT
OPMERG==117		;MERGE A ...

OPRELE==120		;RELEASE A [FROM B]
OPRETU==121		;RETURN A [INTO B]
OPDELE==122		;DELETE A
OPINIT==123		;INITIATE A
OPGENR==124		;GENERATE A
OPTERM==125		;TERMINATE A
OPTRAC==126		;TRACE ON/OFF

OPCANC==130		;CANCEL A
OPIFDB==131		;IF DATA-BASE
OPDISA==132		;DISABLE A
OPACTC==133		;ACCEPT COUNT
OPSEND==134		;SEND A
OPRECV==135		;RECEIVE A
OPSDEL==136		;STRING DELIMITER
OPSTRN==137		;STRING A
OPUDEL==140		;
OPUNSD==141		;
OPUNST==142		;UNSTRING A
OPFENQ==143		;FILE ENQUEUE
OPFUNA==144		;FILE UNAVAILABLE
OPEFUN==145		;END FILE UNAVAILABLE
OPEFEN==146		;END FILE ENQUEUE
OPRENQ==147		;RECORD ENQUEUE

OPEREN==150		;END RECORD ENQUEUE
OPERUN==151		;END RECORD UNAVAILABLE
OPRDEQ==152		;RECORD DEQUEUE
OPERDQ==153		;END RECORD DEQUEUE
OPENRT==154		;END NOT RETAINED
OPINSC==155		;INSPECT CONVERTING
OPINST==156		;INSPECT TALLYING
OPINSR==157		;INSPECT REPLACING

OPCBPH==160		;COMPILER BREAK IN PHASE
OPSUPR==161		;SUPPRESS
OPSETC==162		;SET condition-name TO TRUE
OPSWON==163		;SET mnemonic-name TO ON
OPSWOF==164		;SET mnemonic-name TO OFF
OPEVAL==165		;EVALUATE
OPITLZ==166		;INITIALIZE
OPIPRF==167		;In-line PERFORM

OPEPRF==170		;End in-line PERFORM
OPTRUE==171		;"True" or "False" for EVALUATE
OPANY==172		;"Any" for EVALUATE
OPEVND==173		;END EVALUATE operator
OPEVSS==174		;End SS operator for EVALUATE
OPEVGN==175		;Process selection subject/object for EVALUATE
OPREFM==176		;Reference modification op code
OPADTG==177		;ADD ... TO ... GIVING ...

OPENDI==377		;END OF SOURCE

	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 800,<ERRCOD \<ZZ==ZZ+1>>
IFN ANS82,<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

END