Google
 

Trailing-Edge - PDP-10 Archives - BB-D480C-SB_1981 - global.bli
There are 12 other files named global.bli in the archive. Click here to see a list.
!THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
!  OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.

!COPYRIGHT (C) 1973,1981 BY DIGITAL EQUIPMENT CORPORATION
! Author: */TFV

MODULE GLOBA(RESERVE(0,1,2,3),SREG=#17,FREG=#16,VREG=#15,DREGS=4,STACK=GLOBAL(STACK,500),GLOROUTINES)=
BEGIN

GLOBAL BIND GLOBAV = 6^24 + 0^18 + 115;	! Version Date:	28-Sep-81

%(

***** Begin Revision History *****

53	-----	-----	ADD IMPLDO FOR I/O LIST OPTIMIZATIONS
54	-----	-----	CORRECT SIZE OF "RELBLOCK" TO 20 RATHER THAN 18
55	-----	-----	ADD LPRDCCT
56	-----	-----	ADD RDCLNK
57	-----	-----	DELETE M1 AND M3
			ADD LOWLIM AND CELMNT
58	-----	-----	CHANGE IMPLDO TO IOPTFLG
59	-----	-----	ADD UNIQVAL FOR OPTIMIZER
60	-----	-----	GUESS
61	-----	-----	REMOVE FGP,ETC FOR NEW GRAPH SRUCTURE
62	-----	-----	CLEANUP P2 GLOBALS AND CHANGE POOLSIZ
63	-----	-----	PERFORM DABS IN LINE
64	-----	-----	DEFINE THE REL FILE BUFFERS:
			MAINRLBF,SYMRLBF,LOCRLBF
			DELETE THE DEFINTIONS OF:
			 RELBLOCK,RELDATA,RELOCPTR
65	-----	-----	DELETE A SERIES OF ENTRIES NO LONGER USED IN FORTB
66	-----	-----	GENERATE CMPLX IN LINE

67	-----	-----	REMOVE PROEPITYP

68	-----	-----	INCREASE THE CHANNEL TABLE SIZE TO INCLUDE "INCLUDE"

				ADD THE GLOBAL NXXFIL WHICH HOLDS THE
				ADDRESS OF NXTFIL IN COMMAN SO THAT IT
				CAN BE CALLED BY PHAZ1 TO ALLOW THE
				COMPILE "+" FILE CONCATINATION COMMAND TO 
				WORK

69	-----	-----	ADD GLOBAL DEBGSW TO HOLD DEBUG SWITCH SETTING

			REMOVE NXXFIL

			MOVE SAVREG FROM STA2 TO HERE SO THAT ITS DEFINED
			FOR PHASE1

70	-----	-----	ADD GLOBAL BGSTBF - TO HOLD CORE REQUIREMENTS FOR
			THE LARGEST INPUT FILE.  CALCULATED IN COMMAN

71	-----	-----	ADD THE GLOBAL "ENDSCAA" - FOR ADDR OF
			END OF SCALARS/ARRAYS
72	-----	-----	CHANGE THE NAME OF DOINDEX TO CURDOINDEX SO
			THAT ALL REFERENCES GET CAUGHT

73	-----	-----	FIX PROBLEM OF DEFINITION OF VARIBLE DIMENSION
			ARRAYS BEFORE THEIR DEFINITION IN AN ENTRY
			BY DELAYING THE CHECK FOR THOSE DIMENSION
			VARIABLES THAT FAIL THE TEST

			SAVED IN STACK POINTED TO BY DIMSTK
74	351		MAKE NEW GLOBAL ARINGLEFT FOR FORTB, (DCE)
75	362	18245	INSERT OCTAL AND DOUBLE OCTAL IN EVALU TABLE, (DCE)

***** Begin Version 5 *****

76	410	-----	MAKE NEW GLOBAL DTABPTR FOR FORTB, (SJW)
77	464	QA754	MAKE NEW GLOBALS LMLINO, LMRONO, LMCONO FOR
		  780	  LINEMAP IN FORTG, (SJW)
100	607	22685	MAKE NEW GLOBAL NEDZER TO INDICATE IF
			  ZERO-ARG-BLOCK IS NEEDED

***** Begin Version 5B *****

101	674	11803	INCREASE THE SIZE OF DOSTAK, AND MOVE FOR
			BETTER SPACE UTILIZATION., (DCE)

***** Begin Version 6 *****

102	761	TFV	1-Mar-80	-----
	Add new library routines to tables.
	Expand EVALU to have /GFLOATING entries.
	Add GFMCOK for /GFLOATING microcode is present

103	767	DCE	20-May-80	-----
	Add F2 (secondary flag register); remove GFMCOK (now defined in FIRST)

113	1121	EGM	9-Sep-81	--------
	Add GETSPATH to hold GETSEG path information.

115	1133	TFV	28-Sep-81	------
	Add MAXFF, CHDSTART, RTIME, and CTIME for /STATISTICS performance
	analysis.

***** End Revision History *****

)%

SWITCHES NOLIST;
REQUIRE FIRST.BLI;
REQUIRE TABLES.BLI;
SWITCHES LIST;

BEGIN

	MACRO	TBLMAX=4$,	!NUMBER OF CHANNELS USED
		TBLSIZ=10$;	!IMFORMATION PER CHANNEL
	STRUCTURE	MATRIX[I,J]=
		(.MATRIX+(.I-1)*TBLSIZ+.J);
	MACRO	POOLSIZE=600$,	!SIZE OF THE MAJOR CHARACTER QUEUE
		STKSIZE=250$;		!SIZE OF SYNTAX STACK
	GLOBAL
		POOL[POOLSIZE],	!MAJOR CHARACTER QUEUE
		STK[STKSIZE],	!STACK FOR SYNTAX PROCESSING
		MATRIX	CHNLTBL[TBLMAX,TBLSIZ],	!OPEN, LOOKUP/ENTER, & BUFER HEADER INFO
					!FOR TBLMAX CHANNELS
		IBLOCK[3],	!PARAMETERS FOR ISCAN
		TBLOCK[8],	!PARAMETERS FOR TSCAN
		LBLOCK[4],	!PARAMETERS FOR LKWLD
		GETSBLOK[6],	!ARG BLOCK FOR GETSEG
%[1121]%	GETSPATH[9],	!PATH BLOCK FOR GETSEG
		FLGWRD,		!TEMPORARY STORAGE FOR FLGREG WHILE IN COMMAND SCANNER
		ISPEC,		!POINTER TO INITIAL FILE SPEC
		FSPEC,		!POINTER TO FINAL FILE SPEC
		CCLSW,		!VALUE OF CCL ENTRY, 1=YES, 0=NO
		INDEX,		!CURRENT FILE SPEC
		PAGE,		!COUNT OF NUMBER OF PAGES OUTPUT
		JOBFFSAVE;	!STATE OF JOBFF PRIOR TO OPENING SRC


	MACRO	SSIZ =	79$,	%SYMBOL HASH SIZE%
		CSIZ =	37$,	%CONSTANT HASH SIZE%
![674] DELETE OLD VECTOR WHICH HAS NO REFERENCES!
%[674]%		ESIZ =	1$,	%EXPRESSION HASH SIZE%
		LASIZ = 37$,	%STATMENT NUMBER HASH SIZE%
		COSIZ = 37$,	%COMMON EQUIVALENCE HASH SIZE%
		NSIZ =	17$,	%NAMELIST HASH SIZE%
		SOSIZ = 1$,	%NO HASH TABLE FOR ENCODED SOURCE%
		DISIZ = 1$,	%NO HASH TABLE FOR DIMENSIONS%
		DASIZ = 1$,	%NO HASH TABLE FOR DATA STATEMENT%
		LISIZ = 1$,	%LITERAL TABLE IS NOT HASHED%
		EHSIZ = 29$;	%EXPRESSION HASH FOR CMN SUB ELIM%
!***************************************************************
!NOTE:	ALL GLOBALS FROM SYMTBL TO GLOBEND INCLUSIVE WILL BE INITIALIZED
!TO ZERO IN MODULE CLASSIFIER BEFORE EACH COMPILATION.
	GLOBAL SYMTBL[SSIZ],CONTBL[CSIZ],EXPTBL[ESIZ],LABTBL[LASIZ],
		LITTBL[LISIZ],NAMTBL[NSIZ],SRCTBL[SOSIZ],
		DIMTBL[DISIZ],DATTBL[DASIZ];

	GLOBAL BASEPTR;	!THIS CONTAINS THE POINTER TO THE MOST CURRENT ENTRY
			!MADE BY THE TABLE HANDLERS
	GLOBAL COMBLKPTR,	!POINTERS FOR LAST AND FIRST COMMMON BLOCKS
		LITPOINTER,	!LAST AND FIRST LITERALS
		SYMPTR,	!LAST AND FIRST SYMBOLS
		SORCPTR,	!LAST AND FIRST SOURCE ENTRIES
		LASTEXP,	!LAST EXPRESSION ENTRY
		LASTDIM,	!LAST DIMENSION ENTRY
		DTABPTR,	! HEAD OF DIM ENTRY LIST FOR BLDDIM
		CONSPTR,	!LAST AND FIRST CONSTANTS
		LABLPTR,	!FIRSTAND LAST STATEMENT LABELS
		EQVPTR,		!PTR TO FIRST AND LAST EQUIVALENCE CLASSES
		FORMPTR,	!PTR TO LINKED LIST OF FORMAT STRINGS 
				!0 IF NONE IN SUBPROGRAM
		NAMLPTR,	!PTR TO LINKED LIST OF NAMELIST LISTS STATEMENT NODES
				!RIGHT HALF POINTS TO LAST, LEFT HALF POINTS TO FIRST
		ASIPTR,		!PTR TO FIRST AND LAST ASSIGN STATEMENTS
		TTOTAL,	!TOTAL UNUSED FREESPACE FOR DEBUGGING
		FREELIST[10],	!VECTOR OF POINTERS TO LINKED LISTS OF
				!FREE STORAGE BLOCKS OF SIZE 0 TO 9 WORDS
		SPACEFREE;	!AMOUNT OF FREE LOWSEG SPACE
	GLOBAL SRCHONLY,	!FLAG FOR TBLSEARCH FOR SEARCH ONLY MODE
		ISN,		!INTERNAL SOURCE SEQUENCE NUMBER
		IDOFSTATEMENT,	!IDENTIFICATION OF EXECUTABLE STEMENT IN TREE
		LABLOFSTATEMENT;!SOURCE STATEMENT NUMBER POINTER
				!IF CURRENT STATEMENT HAS ONE - OR 0
	GLOBAL	DLOOPTREE,	!PTR TO DO LOOP NEST TREE
		DONESTLEVEL,	!CURRENT LEVEL OF DO NESTING
		CURDOINDEX,	!PTR TO CURRENT DO INDEX VARIABLE
		LASDOLABEL,	!LAST LABEL PTR FOR LABEL IN A DO STATEMENT
		LASLVL0,	!PTR TO LAST LEVEL 0 NEST SEEN
		DELETPTR;	!PTR TO DELETED TABLE ENTRY FOR DELETE ROUTINE
	GLOBAL	SYMTYPE,	!TYPE OF CURRENT SYMBOL
		NAME,		!NAME OF THE TABLE FOR TBLSEARCH
				!AND SIZ OF ENTRY IN LEFT HALF
		TYPE,		!THE TYPE OF THE CURRENT SYMBOL
				!HAS VARIOUS MEANINGS DEPENDING UPON CONTEXT
		INCREM,		!INCREMENT USED FOR BUILDING FLOATING CONSTANT
		DECEXP,		!EXPONENT VALUE USED BY GETCONST FOR
				!FLOATING POINT NUMBER GENERATION
		ENTRY[5];	!THE GLOBAL PARAMETER PASSSING VECTOR
!
	GLOBAL REGSAV[16],	!SAV AREA FOR REGISTERS FOR GETSEG
		SEGINCORE;	!INDICATES WHICH SEGMENT IS CURRENTLY ACTIVE

GLOBAL	LOWLOC,		!CURRENT LOWSEG AVAILABLE ADDRESS
		HILOC,	!CURRENT HISEG AVAILABLE ADDRESS
		RELOCWD,	!RELOCATION BITS FOR DATA IN REL BLOCK
		MAINRLBF[20],	!MAIN REL FILE BUFFER - 20 WDS
		LOCRLBF[20],	!BUFFER FOR LOCAL REQUESTS
		SYMRLBF[20],	!BUFFER FOR GLOBAL REQUESTS AND SYMBOL DEFS
		RDATWD,		!PARAMETER WORD FOR PASSING DATA TO REL
				!
		BLANKCOM,	!BLANK COMMON BLOCK PTR

		ENDSCAA,	!ADDRESS OF LOC AFTER THE END OF THE
				! SCALARS AND ARRAYS (BEFORE THE FORMAT STRINGS)
		MULENTRY,	!PTR TO LINKED LIST OF ENTRY STATEMENTS
		FORMAREA,	!TOTAL NUMBER OF WORDS OCCUPIEDBY FORMAT STRINGS
		COMSIZ;		!TOTAL SIZE OF COMMON
!
	GLOBAL
		ONEPLIT,	!POINTER TO CONSTANT INTEGER 1
				!SET IN GLOBINIT
		SP,		!CURRENT TOP OF SYNTAX STACK
		LEXL,		!RESULT OF LAST CALL TO LEXEMEGEN
		LSAVE,		!FLAG INDICATING LEXEME ALREADY SCANNED
		FARRY,		!FIRST ARRAY NAME IN A ONE ARRAY
		CODELINES,	!THE NUMBER OF HISEG CODE LOCATION GENERATED
		STALABL,	!CURRENT LABLOFSTATEMENT
		PROGNAME,	!SIXBIT 'MAIN' OR FROM PROGRAM STATEMENT
		IDTYPE,		!VARIABLE TYPE DEFINED BY TYPE STATEMENT
		ASTATFUN,	!PTR TO CURRENT STATEMENT FUNCTION NAME IF CURRENTLY BEING PARSED
		ERRLINK,	!POINTER TO A LINKED LIST OF ERROR MESSAGES
		TMPCNT[4],	!COUNT OF VARIOUS TYPES OF TEMP USED.
				![0]=TEMPORARY,[1]=MULTIPLYCATION FACTOR
				![2]=OFFSET,[3]=SIZE
		BSAVE,		!BREG SAVE AREA
		FSAVE,		!FREG SAVE WORD
		VSAVE;		!VREG SAVE WORD
!
!THE FOLLOWING TABLE CONTAINS THE DEFAULT TYPES FOR IDENTIFIERS
	MACRO IN=16$,RL=20$,DB=24$,CX=28$,LG=0$;
	GLOBAL TYPTAB[26];
!
!	THE FOLLOWING DEFINES THE LIBRARY FUNCTION ID TABLE
!	EACH ENTRY IS CONPOSED OF TWO PARTS THE FIRST WORD IS THE
!	SIXBIT IDENTIFICATION OF THE LIBRARY FUNCTION AND WORD 2
!	IS THE ATTRIBUTES OF THE FUNCTION
!	THE  ACTUAL FUNCTION TABLEIS TWO TABLES, ON CONTAINING THE
!	NAME AND THE OTHER CONTAINING THE CORRESPONDING ATTRIBUTES
!	THE FIRST TABLE IS CALLED LIBFUNTAB AND THE SECOND IS CALLED
!	LIBATTRIBUTES
!
	MACRO FN(A)= SIXBIT 'A'$;
!
!	MACRO FOR ATTRIBUTES

	MACRO ATT(ARGTYP,RESTYP,ARGCT,INLINFLG,GENERFLG,NEWOPR,GENTBPTR)=
		((INLINFLG^35)		!BIT 0 IS FLAG FOR INLINE FN
	  OR	(1^34)			!BIT 1 IS ALWAYS SET (IN SYMTAB IS FLAG FOR LIB FN)
	  OR	(GENERFLG^33)		!BIT 2 IS GENERIC FN FLAG
	  OR	(ARGTYP^28)		!BITS 3-7 GIVE VALTYPE FOR ARG
	  OR	(RESTYP^23)		!BITS 8-12 GIVE VALTYPE FOR RESULT
	  OR	(ARGCT^18)		!BITS 13-17 GIVE NUMBER OF ARGS
	  OR	NEWOPR),		!RIGHT-HALF-WD GIVES THE OPERATOR TO
					! BE SUBSTITUTED IF INLINFLG IS SET
	GENTBPTR$;			!FOR GENERIC FNS - THE 2ND WD POINTS TO
					! A 4 WD SUB-TABLE THAT INDICATES WHICH
					! ACTUAL FN TO USE FOR EACH ARG TYPE

!
!	B - THE TYPE OF THE ARGUMENT OF THE FUNCTION
!	C - THE TYPE OF THE RESULT OF THE FUNCTION
!	D - THE NUMBER OF ARGUMENTS
!	E - BIT IF FUNCTION IS IN LINE ELIGIBLE
!	F - BIT IF GENERIC FUNCTION NAME


	 BIND FUNTAB = PLIT(LIBFUNTAB GLOBALLY NAMES
	ABSENT NAMES	FN(ABS),
	ACOSENT NAMES	FN(ACOS),
	AIMAGENT NAMES	FN(AIMAG),
	AINTENT NAMES	FN(AINT),
	ALOGENT NAMES	FN(ALOG),
	ALOG10ENT NAMES	FN(ALOG10),
	AMAX0ENT NAMES	FN(AMAX0),
	AMAX1ENT NAMES	FN(AMAX1),
	AMIN0ENT NAMES	FN(AMIN0),
	AMIN1ENT NAMES	FN(AMIN1),
	AMODENT NAMES	FN(AMOD),
	ASINENT NAMES	FN(ASIN),
	ATANENT NAMES	FN(ATAN),
	ATAN2ENT NAMES	FN(ATAN2),
	CABSENT NAMES	FN(CABS),
	CCOSENT NAMES	FN(CCOS),
%[761]%	CDABSENT NAMES	FN(CDABS),
	CEXPENT NAMES	FN(CEXP),
	CLOGENT NAMES	FN(CLOG),
	CMPLXENT NAMES	FN(CMPLX),
	CONJGENT NAMES	FN(CONJG),
	COSENT NAMES	FN(COS),
	COSDENT NAMES	FN(COSD),
	COSHENT NAMES	FN(COSH),
%[761]%	COTANENT NAMES	FN(COTAN),
	CSINENT NAMES	FN(CSIN),
	CSQRTENT NAMES	FN(CSQRT),
	DABSENT NAMES	FN(DABS),
%[761]%	DACOSENT NAMES	FN(DACOS),
%[761]%	DASINENT NAMES	FN(DASIN),
	DATANENT NAMES	FN(DATAN),
	DATAN2ENT NAMES	FN(DATAN2),
	DBLEENT NAMES	FN(DBLE),
	DCOSENT NAMES	FN(DCOS),
%[761]%	DCOSHENT NAMES	FN(DCOSH),
%[761]%	DCOTANENT NAMES	FN(DCOTAN),
	DEXPENT NAMES	FN(DEXP),
	DFLOATENT NAMES	FN(DFLOAT),
	DIMENT NAMES	FN(DIM),
	DLOGENT NAMES	FN(DLOG),
	DLOG10ENT NAMES	FN(DLOG10),
	DMAX1ENT NAMES	FN(DMAX1),
	DMIN1ENT NAMES	FN(DMIN1),
	DMODENT NAMES	FN(DMOD),
	DSIGNENT NAMES	FN(DSIGN),
	DSINENT NAMES	FN(DSIN),
%[761]%	DSINHENT NAMES	FN(DSINH),
	DSQRTENT NAMES	FN(DSQRT),
%[761]%	DTANENT NAMES	FN(DTAN),
%[761]%	DTANHENT NAMES	FN(DTANH),
	EXPENT NAMES	FN(EXP),
	FLOATENT NAMES	FN(FLOAT),
	IABSENT NAMES	FN(IABS),
	IDIMENT NAMES	FN(IDIM),
	IDINTENT NAMES	FN(IDINT),
	IFIXENT NAMES	FN(IFIX),
	INTENT NAMES	FN(INT),
	ISIGNENT NAMES	FN(ISIGN),
	MAX0ENT NAMES	FN(MAX0),
	MAX1ENT NAMES	FN(MAX1),
	MIN0ENT NAMES	FN(MIN0),
	MIN1ENT NAMES	FN(MIN1),
	MODENT NAMES	FN(MOD),
	REALENT NAMES	FN(REAL),
	SIGNENT NAMES	FN(SIGN),
	SINENT NAMES	FN(SIN),
	SINDENT NAMES	FN(SIND),
	SINHENT NAMES	FN(SINH),
	SNGLENT NAMES	FN(SNGL),
	SQRTENT NAMES	FN(SQRT),
%[761]%	TANENT NAMES	FN(TAN),
	TANHENT NAMES	FN(TANH)		);
!
!	END OF LIBRARY FUNCTION NAME TABLE
	 BIND AFTERLIB = PLIT(ONEAFTERLIB GLOBALLY NAMES 0);
!


%(*****TABLES USED FOR GENERIC FNS - FOR EACH GENERIC FN HAVE
	A FOUR WD ENTRY INDICATING THE ACTUAL FN TO BE USED FOR EACH OF
	THE FOUR ARG TYPES INTEGER,REAL,DOUBLE PRECISION, AND COMPLEX (IN
	THAT ORDER). FOR EACH ARG-TYPE, HAVE A PTR TO THE ENTRY IN THE FUNCTION TABLE
	FOR THE ACTUAL FN TO BE USED.
***********)%



BIND ABSGENTB	= PLIT (IABSENT,ABSENT,DABSENT,CABSENT);	!ABS
BIND ALOGGENTB  = PLIT (ILGARGTYPE,ALOGENT,DLOGENT,CLOGENT);	!ALOG
BIND ALOG10GENTB= PLIT (ILGARGTYPE,ALOG10ENT,DLOG10ENT,ILGARGTYPE);  !ALOG10
BIND AMAX1GENTB	= PLIT (ILGARGTYPE,AMAX1ENT,DMAX1ENT,ILGARGTYPE);	!AMAX1
BIND AMIN1GENTB	= PLIT (ILGARGTYPE,AMIN1ENT,DMIN1ENT,ILGARGTYPE);	!AMIN1
BIND ATANGENTB 	= PLIT (ILGARGTYPE,ATANENT,DATANENT,ILGARGTYPE);	!ATAN
BIND ATAN2GENTB	= PLIT (ILGARGTYPE,ATAN2ENT,DATAN2ENT,ILGARGTYPE);	!ATAN2
BIND COSGENTB	= PLIT (ILGARGTYPE,COSENT,DCOSENT,CCOSENT);	!COS
BIND EXPGENTB   = PLIT (ILGARGTYPE,EXPENT,DEXPENT,CEXPENT);	!EXP
BIND INTGENTB	= PLIT (ILGARGTYPE,INTENT,IDINTENT,ILGARGTYPE);	!INT
BIND MODGENTB	= PLIT (MODENT,AMODENT,DMODENT,ILGARGTYPE);	!MOD
BIND SIGNGENTB	= PLIT(ISIGNENT,SIGNENT,DSIGNENT,ILGARGTYPE);	!SIGN
BIND SINGENTB	= PLIT (ILGARGTYPE,SINENT,DSINENT,CSINENT);	!SIN
BIND SQRTGENTB	= PLIT (ILGARGTYPE,SQRTENT,DSQRTENT,CSQRTENT);	!SQRT
!




!	THE FUNCTION ATTRIBUTE TABLE
!
!
!	(TYPE OF FUNCTION,TYPE OF RESULT,#OF ARGS,INLINE BIT,GENERIC BIT)
!
	 BIND ZATTRIBUTES = PLIT(LIBATTRIBUTES GLOBALLY NAMES

	ATT(RL,RL,1,1,1,ABSFNOP,ABSGENTB),	!ABS
	ATT(RL,RL,1,0,0,0,-1),			!ACOS
	ATT(CX,RL,1,0,0,0,-1),			!AIMAG
	ATT(RL,RL,1,0,0,0,-1),			!AINT
	ATT(RL,RL,1,0,1,0,ALOGGENTB),		!ALOG
	ATT(RL,RL,1,0,1,0,ALOG10GENTB),		!ALOG10
	ATT(IN,RL,VARGCTFLG,0,0,0,-1),		!AMAX0
	ATT(RL,RL,VARGCTFLG,1,1,AMAXFNOP,AMAX1GENTB),	!AMAX1
	ATT(IN,RL,VARGCTFLG,0,0,0,-1),		!AMIN0
	ATT(RL,RL,VARGCTFLG,1,1,AMINFNOP,AMIN1GENTB),	!AMIN1
	ATT(RL,RL,2,0,0,0,-1),			!AMOD
	ATT(RL,RL,1,0,0,0,-1),			!ASIN
	ATT(RL,RL,1,0,1,0,ATANGENTB),		!ATAN
	ATT(RL,RL,2,0,1,0,ATAN2GENTB),		!ATAN2
	ATT(CX,RL,1,0,0,0,-1),			!CABS
	ATT(CX,CX,1,0,0,0,-1),			!CCOS
%[761]%	ATT(DB,DB,1,0,0,0,-1),			!CDABS
	ATT(CX,CX,1,0,0,0,-1),			!CEXP
	ATT(CX,CX,1,0,0,0,-1),			!CLOG
	ATT(RL,CX,2,1,0,CMPLXFNOP,-1),		!CMPLX
	ATT(CX,CX,1,0,0,0,-1),			!CONJG
	ATT(RL,RL,1,0,1,0,COSGENTB),		!COS
	ATT(RL,RL,1,0,0,0,-1),			!COSD
	ATT(RL,RL,1,0,0,0,-1),			!COSH
%[761]%	ATT(RL,RL,1,0,0,0,-1),			!COTAN
	ATT(CX,CX,1,0,0,0,-1),			!CSIN
	ATT(CX,CX,1,0,0,0,-1),			!CSQRT
	ATT(DB,DB,1,1,0,DABSFNOP,-1),		!DABS
%[761]%	ATT(DB,DB,1,0,0,0,-1),			!DACOS
%[761]%	ATT(DB,DB,1,0,0,0,-1),			!DASIN
	ATT(DB,DB,1,0,0,0,-1),			!DATAN
	ATT(DB,DB,2,0,0,0,-1),			!DATAN2
	ATT(RL,DB,1,1,0,DBLEOP,-1),		!DBLE
	ATT(DB,DB,1,0,0,0,-1),			!DCOS
%[761]%	ATT(DB,DB,1,0,0,0,-1),			!DCOSH
%[761]%	ATT(DB,DB,1,0,0,0,-1),			!DCOTAN
	ATT(DB,DB,1,0,0,0,-1),			!DEXP
	ATT(IN,DB,1,1,0,DFLOATOP,-1),		!DFLOAT
	ATT(RL,RL,2,1,0,DIMFNOP,-1),		!DIM
	ATT(DB,DB,1,0,0,0,-1),			!DLOG
	ATT(DB,DB,1,0,0,0,-1),			!DLOG10
	ATT(DB,DB,VARGCTFLG,0,0,0,-1),		!DMAX1
	ATT(DB,DB,VARGCTFLG,0,0,0,-1),		!DMIN1
	ATT(DB,DB,2,0,0,0,-1),			!DMOD
	ATT(DB,DB,2,0,0,0,-1),			!DSIGN
	ATT(DB,DB,1,0,0,0,-1),			!DSIN
%[761]%	ATT(DB,DB,1,0,0,0,-1),			!DSINH
	ATT(DB,DB,1,0,0,0,-1),			!DSQRT
%[761]%	ATT(DB,DB,1,0,0,0,-1),			!DTAN
%[761]%	ATT(DB,DB,1,0,0,0,-1),			!DTANH
	ATT(RL,RL,1,0,1,0,EXPGENTB),		!EXP
	ATT(IN,RL,1,1,0,FLOATOP,-1),		!FLOAT
	ATT(IN,IN,1,1,0,IABSFNOP,-1),		!IABS
	ATT(IN,IN,2,0,0,0,-1),			!IDIM
	ATT(DB,IN,1,1,0,IDINTOP,-1),		!IDINT
	ATT(RL,IN,1,1,0,IFIXOP,-1),		!IFIX
	ATT(RL,IN,1,1,1,INTOP,INTGENTB),	!INT
	ATT(IN,IN,2,1,0,ISIGNFNOP,-1),		!ISIGN
	ATT(IN,IN,VARGCTFLG,1,0,MAXFNOP,-1),	!MAX0
	ATT(RL,IN,VARGCTFLG,0,0,0,-1),		!MAX1
	ATT(IN,IN,VARGCTFLG,1,0,MINFNOP,-1),	!MIN0
	ATT(RL,IN,VARGCTFLG,0,0,0,-1),		!MIN1
	ATT(IN,IN,2,1,1,MODFNOP,MODGENTB),	!MOD
	ATT(CX,RL,1,1,0,REALOP,-1),		!REAL
	ATT(RL,RL,2,1,1,SIGNFNOP,SIGNGENTB),	!SIGN
	ATT(RL,RL,1,0,1,0,SINGENTB),		!SIN
	ATT(RL,RL,1,0,0,0,-1),			!SIND
	ATT(RL,RL,1,0,0,0,-1),			!SINH
	ATT(DB,RL,1,1,0,SNGLOP,-1),		!SNGL
	ATT(RL,RL,1,0,1,0,SQRTGENTB),		!SQRT
%[761]%	ATT(RL,RL,1,0,0,0,-1),			!TAN
	ATT(RL,RL,1,0,0,0,-1)			!TANH
);
!END OF LIBRARY ATTRIBUTES
!
!

	%(***TABLE OF WDS IN WHICH IN SUCCESSIVE WDS HAVE 1 0-BIT, INDEX INTO THIS
		TABLE IN ORDER TO CLEAR A GIVEN BIT***)%
BIND DMY= PLIT (
	NOT(1^36),			!IN CLRWDS-1, HAVE A WORD IN WHICH ALL BITS
					! ARE SET SO THAT WHEN "CLEAR" THE BIT FOR -1
					! WILL DO NOTHING
CLRWDS GLOBALLY NAMES 	NOT(1^35),
	NOT(1^34),
	NOT(1^33),
	NOT(1^32),
	NOT(1^31),
	NOT(1^30),
	NOT(1^29),
	NOT(1^28),
	NOT(1^27),
	NOT(1^26),
	NOT(1^25),
	NOT(1^24),
	NOT(1^23),
	NOT(1^22),
	NOT(1^21),
	NOT(1^20),
	NOT(1^19),
	NOT(1^18),
	NOT(1^17),
	NOT(1^16),
	NOT(1^15),
	NOT(1^14),
	NOT(1^13),
	NOT(1^12),
	NOT(1^11),
	NOT(1^10),
	NOT(1^9),
	NOT(1^8),
	NOT(1^7),
	NOT(1^6),
	NOT(1^5),
	NOT(1^4),
	NOT(1^3),
	NOT(1^2),
	NOT(1^1),
	NOT(1^0)  );



%(********************
	GLOBALS USED BY PHASE 2 SKELETON AND PHASE 3
*************************)%
GLOBAL TREEPTR;		!PTR TO THE NODE IN THE TREE 
					! CURRENTLY BEING PROCESSED
GLOBAL CSTMNT;			!PTR TO THE STATEMENT NODE CURRENTLY
					! BEING PROCESSED
GLOBAL NEDZER;		!FLAG TO INDICATE IF ZERO-ARG-BLOCK NEEDED
GLOBAL ZERBLK;		!PTR TO LABEL TABLE ENTRY FOR LABEL ON A
				! ZERO-ARG-BLOCK FOR FOROTS
GLOBAL A1NODE;		!PTR TO 1ST ARGNODE UNDER TREEPTR;
GLOBAL A2NODE;		!PTR TO 2ND ARGNODE UNDER TREEPTR
GLOBAL A1LABEL,A2LABEL,A3LABEL;	!PTRS TO LABEL-TABLE ENTRIES - USED IN THE
					! TABLE-DRIVEN PART OF THE CODE-GENERATOR
GLOBAL OPDSPIX;			!INDEX INTO DISPATCH TABLE FOR OPGENTABLE
GLOBAL REGFORCOMP;			!REGISTER TO BE USED IN COMPUTING
					! THE VAL OF A NODE - THIS GLOBAL IS SET UP
					! WHEN CALLING "CGOPGEN" 
					! BITS 9-12 INDICATE THE REG TO BE USED
GLOBAL PC;				!RELATIVE LOC OF NEXT INSTR TO
					! BE GENERATED
GLOBAL PBOPWD;			!INDICATES INSTRUCTION WD TO BE OUTPUT
					! TO PEEPHOLE BUFFER
GLOBAL PSYMPTR;			!INDICATES THE PBFSYMPTR FIELD TO BE OUTPUT
					! TO THE PEEPHOLE BUFFER
GLOBAL IOLSPTR;			!PTR TO THE FIRST AND LAST  IO STMNT IN THE PROGRAM
GLOBAL DATASPTR;		!PTR TO FIRST AND LAST DATA STATEMENT NODES
GLOBAL RESNAME;			!PTR TO EITHER SYMBOL TABLE ENTRY OR
					! EXPRESSION NODE SPECIFYING WHERE THE
					! FINAL RESULT OF THE EXPRESSION BEING PROCESSED
					! BY THE REGISTER ALLOCATOR WILL BE STORED


	%(*****GLOBALS USED ONLY BY PHASE 2 SKELETON*****)%

	!GLOBALS USED IN PHASE 2 SKELETON FOR FORCING NEG AND NOT
	!DOWN TO BOTTOMMOST NODES.
	!IF NOTFLG(NEGFLG) IS TRUE WHEN ENTER ROUTINE FOR A GIVEN NODE
	!THEN A NOT (NEG) MUST BE FORCED DOWN OVER THIS NODE. IF IT
	!IS TRUE WHEN LEAVE ROUTINE FOR A GIVEN NODE, THEN NOT(NEG)
	!MUST BE FORCED BACK UP TO THE PARENT OF THIS NODE.
GLOBAL NEGFLG;
GLOBAL NOTFLG;

GLOBAL TRUECENTRY;			!PTR TO CONSTANT TABLE ENTRY FOR "TRUE"
GLOBAL FALSECENTRY;			! FOR FALSE

GLOBAL CIOCALL;		!POINTER TO CURRENT IOLSTCALL NODE BEING BUILT
GLOBAL CIOCLAST;	!POINTER TO LAST ELEMENT ON THE
			!IOLSTCALL NODE BEING BUILT
GLOBAL INPFLAG;		!FLAG FOR *CURRENT STMNT IS AN INPUT STMNT*
GLOBAL USERFNFLG;	!FLAG INDICATING THAT THIS STMNT INCLUDES A CALL TO
			! A USER FUNCTION


	%(****GLOBALS USED ONLY BY THE REGISTER ALLOCATOR****)%
GLOBAL CLOBBREGS;			!REGISTERS CLOBBERED IN THE COURSE OF
					! EVALUATION OF THIS EXPRESSION
GLOBAL DBLMODE;			!IF THIS GLOBAL IS TRUE, THEN THE GLOBALS
					! STBSYR AND STRGCT HAVE BEEN SET TO DO
					! REG ALLOC IN DOUBLE-PREC MODE



	%(***GLOBALS USED IN TEMPORARY ALLOCATION - IN NODES.BLI***)%
GLOBAL LSTLNK;			!USED TO LINK ENTRIES TOGETHER
GLOBAL FTEMP;			!FIRST TEMP AVAILABLE FOR USE BY
				!SKELETON REGISTER ALLOCATOR
				!ZERO IF NONE EXISTS.
GLOBAL FRSTLNK;			!FIRST ENTRY IN THE TEMPORARY TABLLE
GLOBAL ANCHOR;		!POINTER TO START OF TEMPORARY TABLE
				! THAT CAN BE USED BY SKEL REG ALLOCATOR
GLOBAL VERYFRST;		!USED BY GLOBAL TEMPORARY ALLOCATOR
!IN THE NON-GLOBALLY OPTIMIZING CASE VERYFRST=FRSTLNK=FTEMP
!IN THE GLOBALLY OPTIMIZING CASE VERYFRST POINT TO AUXILLARY LIST
!	FRSTLNK IS SET TO POINT TO THE FIRST TEMP AVAILABLE FOR 
!	LOCAL ALLOCAION USE AND FTEMP IS SET TO FRSTLNK.

	GLOBAL PBFPTR;	!PTR TO NEXT AVAILABLE WORD IN BUFFER
	GLOBAL VECTOR PBUFF[PBFSIZE];

	GLOBAL PEEPPTR;		!PTR TO WD IN PEEPHOLE BUFFER OFF OF WHICH
				! ARE KEYING IN PEEPHOLE OPTIMIZING


	GLOBAL ILABIX;		!CT OF INTERNALLY GENERATED LABELS



%(*** GLOBALS THAT ARE SET UP BEFORE CALLING THE STATEMENT REGISTER
	ALLOCATOR
***)%
GLOBAL GBSYREGS;			!BITS IN THIS WD  ARE 0 FOR ANY REGISTERS USED FOR
					! GLOBALLY ALLOCATED VARIABLES
GLOBAL GBSYCT;				!NUMBER OF REGS AVAILABLE FOR USE BY LOCAL
					! REGISTER ALLOCATOR
GLOBAL STBSYR;	!INDICATES WHICH REGISTERS ARE AVAILABLE FOR USE.
		!EACH BIT IN THIS WORD CORRESPONDS TO A REG AND IS 0 IF
		!THAT REG IS UNAVAILABLE, 1 IF FREE
GLOBAL STRGCT;	!NUMBER OF REGS AVAILABLE FOR USE


GLOBAL BLOCKBSYREGS;	!THIS WD IS USED BY THE BASIC BLOCK REGISTER ALLOCATOR.
			! EACH BIT IN THIS WD CORRESPONDS TO A REG. IF THE
			!REG WAS ALLOCATED BY THE BLOCK ALLOCATOR, THE BIT IS ZERO,
			! IF NOT, THE BIT IS ONE
GLOBAL NOBBREGSLOAD;	!THIS FLAG IS USED BY THE BASIC BLOCK REG ALLOCATOR
			! IT IS SET TO TRUE WHEN PROCESSING NODES FOR WHICH ONE
			! CANNOT ASSUME THAT THE CODE IS ALWAYS EXECUTED WHENEVER
			! THE BLOCK CONTAINING THE NODES IS EXECUTED (E.G. FOR THE
			! STMNT UNDER A LOG IF, FOR THE 2ND RELATIONAL UNDER A CONTROL-BOOLEAN,...)
			! CANNOT ASSUME THE VALS OF REGS LOADED WHILE THIS FLAG IS SET

GLOBAL PAIRMODE;	!THIS GLOBAL FLAG IS SET DURING COMPLEXITY WALK IF ANY
			! EXPRESSION IS FOUND UNDER THE CURRENT STMNT THAT REQUIRES A REG PAIR
			!THIS FLAG IS ALSO USED DURING LOCAL REG ALLOC WHEN
			! IT IS SET WHENEVER A STMNT IS BEING PROCESSED THAT REQUIRES ANY REG PAIRS




![674] MAKE DOSTAK BIGGER AND COMBINE IT WITH EHASH
GLOBAL DOSTAK[DOSTSIZ];	![674] DOSTAK MUST PRECEDE EHASH FOR FORTG
GLOBAL EHASH[EHSIZ];		!EXPRESSION HASH TABLE FOR CMN SUB ELIM.
GLOBAL
	BACKST,			!USED IN LOCAL COMMON SUB-EXPRESSION
				!ELIMINATION. MUST BE ZERO IN GLOBAL CASE
	IOPTFLG,			!DIFFERENTIATES NORMAL GLOBAL OPTIMIZATION
				!CASE FROM GLOBAL IMPLIED DO
				!OPTIMIZATION CASE
	DOSP,			!DO STACK POINTER
![674]	DOSTAK REMOVED HERE SO THAT IT MAY PRECEDE EHASH
![674]	DOSTAK[32],		!DO STACK
	EXITNO,			!NUMBER OF LOOP EXITS; 0 IN NORMAL CASE
	RDCCT,			!USED TO CREATE NAMES FOR REDUCTION IN
				!STRENGTH TEMPORARIES
	LPRDCCT,		!USED TO HOLD COUNT OF REDUCTIONS AT LOOP
				!START SO WE CAN TEELL IF THERE WAS A
				!UNIQUE REDUCTION
	RDCLNK,			!POINTER TO THE FIRST INCREMENT OF
				!A REDUCTION VARIABLE IN ANY LOOP
	LOCLNK,			!USED TO LINK LOCAL COMMON SUBS TOGETHER
	ARGLINKPT,		!TOLINK ARG BLOCKS TOGETHER
	SPECCASE,			!USED TO UNIT LEAF SUBS. ROUTINES
	QQ,			!TEMPORARY USED THROUGH PHASE2
	UNIQVAL,		!POINTER TO LIST OF VARIABLES UNIQUELY
				!ASSIGNED IN THE LOOP
	ASSOCPT,		!POINTER TO LINKED LIST OF ASSOCIATE VARIABLES
	FNTMP,			!NUMBER TO MAKE STATEMENT FUNCTION
				!ARGUMENTS WITH
	DOCNT,			!COUNT OF DO LOOPS IN PROGRAM
	OPTLAB,			!USED TO GENERATE LABELS BY THE OPTIMIZER
	GLOBREG[16],		!LIST OF REGISTERS GLOBALLY ALLOCATED
	RGRAPH,			!REVERSE GRAPH (USING POOL FOR SPACE)
	FGRAPH,			!FORWARD GRAPH (USING POOL FOR SPACE)
	SSIZTC,			!COUNTER FOR STEP SIZE TEMPS GENERATED FOR DO LOOPS
	INTLTC,			!COUNTER FOR INITIAL VALUE TEMPS FOR DO LOOPS
	LOOP,			!USED BY OPTIMIZER
	INDVAR,			!INDUCTION VARUABLE FOR CURRENT LOOP
	LEND,			!TERMINAL STATEMENT OF CURRENT LOOP
	LENTRY,			!ENTRY POINT OF CURRENT LOOP
	LOOPNO,			!NUMBER OF CURRENT LOOP
	CHOSEN[32],		!USED IN DEFINITION POINT COMPUTATION
				!AND GLOBAL REGISTER ALLOCATION
	TOP,			!TOP OF CURRENT LOOP
	BOTTOM,			!BOTTOM OF CURRRENT LOOP
	TPREV,		!TEMP USED BY OPTIMIZER IN CMN SUB ELIM
	PREV,			!DITTO
	PHI,			!POINTER TO HASH ENTRY FOR COMMON SUBS
	NAN,			!FLAG SET TO INDICATE THAT FIRST
				!EXPRESSION OF HASH PAIR NEEDS A NEGATE
				!NODE OR FLAG OVER IT
	EHASHP,			!POINTER TO HASH INDEX ENTRY. USED FOR
				!DELETION OF HASH ENTRIES IN COMMON SUBS
	LOWLIM,			!LOWER LIMIT FOR SUBSTITUTION
	CELMNT;			!CURRENT ELEM ON I/O LIST

![761] Add entries for /GFLOATING - it has its own arg type
!USED AS CONVERSION TABLE FROM INTERNAL VALU TYPES TO EXTERNAL VALUE TYPES
BIND EVALDUM=PLIT(EVALU GLOBALLY NAMES
	6,	!0,INTERNAL OCTAL
	1,	!1,INTERNAL LOGICAL
	0,	!2,INTERNALLY UNUSED
	0,	!3,INTERNALLY UNUSED
	0,	!4,INTERNALLY CONTROL
	0,	!5,INTERNALLY UNUSED
	0,	!6,INTERNALLY UNUSED
	0,	!7,INTERNALLY UNUSED
	#12,	!8,INTERNALLY DOUBLE OCTAL
	0,	!9,INTERNALLY UNUSED
	0,	!10,INTERNALLY UNUSED
	0,	!11,INTERNALLY UNUSED
	#17,	!12,INTERNALLY LITERAL
	0,	!13,INTERNALLY UNUSED
	0,	!14,INTERNALLY UNUSED
	0,	!15,INTERNALLY UNUSED
	2,	!16,INTERNALLY INTEGER
	0,	!17,INTERNALLY BYTE (NOT IN RELEASE 1)
	2,	!18,INTERNALLY INDEX(SAME AS INTEGER)
	0,	!19,INTERNALLY UNUSED
	4,	!20,INTERNALLY REAL
	0,	!21,INTERNALLY UNUSED
	0,	!22,INTERNALLY UNUSED
	0,	!23,INTERNALLY UNUSED
	#10,	!24,INTERNALLY DOUBLE PRECISION
	0,	!25,INTERNALLY UNUSED
	0,	!26,INTERNALLY UNUSED
	0,	!27,INTERNALLY UNUSED
	#14,	!28, INTERNALLY COMPLEX
%[761]%	0,	!29, UNUSED
%[761]%	0,	!30, UNUSED
%[761]%	0,	!31, UNUSED
%[761]%	6,	!32,INTERNAL OCTAL
%[761]%	1,	!33,INTERNAL LOGICAL
%[761]%	0,	!34,INTERNALLY UNUSED
%[761]%	0,	!35,INTERNALLY UNUSED
%[761]%	0,	!36,INTERNALLY CONTROL
%[761]%	0,	!37,INTERNALLY UNUSED
%[761]%	0,	!38,INTERNALLY UNUSED
%[761]%	0,	!39,INTERNALLY UNUSED
%[761]%	#12,	!40,INTERNALLY DOUBLE OCTAL
%[761]%	0,	!41,INTERNALLY UNUSED
%[761]%	0,	!42,INTERNALLY UNUSED
%[761]%	0,	!43,INTERNALLY UNUSED
%[761]%	#17,	!44,INTERNALLY LITERAL
%[761]%	0,	!45,INTERNALLY UNUSED
%[761]%	0,	!46,INTERNALLY UNUSED
%[761]%	0,	!47,INTERNALLY UNUSED
%[761]%	2,	!48,INTERNALLY INTEGER
%[761]%	0,	!49,INTERNALLY BYTE (NOT IN RELEASE 1)
%[761]%	2,	!50,INTERNALLY INDEX(SAME AS INTEGER)
%[761]%	0,	!51,INTERNALLY UNUSED
%[761]%	4,	!52,INTERNALLY REAL
%[761]%	0,	!53,INTERNALLY UNUSED
%[761]%	0,	!54,INTERNALLY UNUSED
%[761]%	0,	!55,INTERNALLY UNUSED
%[761]%	#13,	!56,INTERNALLY DOUBLE PRECISION
%[761]%	0,	!57,INTERNALLY UNUSED
%[761]%	0,	!58,INTERNALLY UNUSED
%[761]%	0,	!59,INTERNALLY UNUSED
%[761]%	#14,	!60, INTERNALLY COMPLEX
%[761]%	0,	!61, UNUSED
%[761]%	0,	!62, UNUSED
%[761]%	0);	!63, UNUSED
!USED AS TRANSLATION TABLE FROM SRCID TO THE FUNCTION CODE IN CALLING
!THE MTOP. FUNCTION OF FOROTS
GLOBAL
	INNERLOOP,	!THIS VAR IS "TRUE" IN P2SKEL WHEN ARE LOOKING AT
			! STMNTS IN AN INNER LOOP
	DOWDP,		!USED BY PHASE TO SKELETON TO OPTIMIZE DO LOOPS
	CDONODE,	!SAME
	ITMCT;		!USED IN LEAF SUBSTITUTION UNIFICATION
!TABLE TO CONVERT SRCID-BACKID TO MTOP FUNCTION CODES
!FOR FOROTS
BIND MTPDUM=PLIT(MTOPFUN GLOBALLY NAMES
	2,	!BACKSPACE
	3,	!BACKFILE
	0,	!REWIND
	7,	!SKIPFILE
	5,	!SKIP RECORD
	1,	!UNLOAD
	0,	!RELEASE NOT HANDLED THIS WAY
	4);	!ENDFILE

GLOBAL DWP;			!POINTER FOR WALK OF DO DEPTH ANALYSIS TREE

	%(****GLOBALS USED TO PASS ARGS TO ASSEMBLY-LANG CONSTANT FOLDING ROUTINE***)%
	GLOBAL C1H,C1L,C2H,C2L,COPRIX;

	%(***AREA WHERE THE CONSTANT-FOLDING ROUTINE SAVES THE ACS***)%
	GLOBAL SAVACS[7];

	GLOBAL SAVE17;	!FOR SPECIAL RETURNS TO PHAZECONTROL


	% MORE FORTB GLOBALS %

	GLOBAL
		EOPSAVE ,	% ADDRESS AND COUNT OF THE PORTION OF
				THE PORTION OF POOL THAT HAD TO
				BE SAVED AT THE END OF THE CURRENT
				PROGRAM UNIT, INORDER THAT THE LATER
				PASSES CAN USE POOL.  
				<LEFT> - NUMBER OF WORDS
				<RIGHT> - BEGINNING ADDRESS   %

		NOCR,	! IF SET TO 1 IT INDICATES TO THE OUTPUT ROUTINES
				! THAT A CR SHOULD BE INSERTED
		STPTR,		! POINTER TO BEGINNING CHARACTER-1
				! OF CURRENT STATEMENT
		STLPTR,		! POINTER TO BEGINNING CHARACTER-1 OF THE
				! LINE CONTAINING THE CURRENT STATEMENT
		STPOS,		! CHARACTER POSITION ON LINE OF BEGINNING OF STATEMENT
		LASTLINE,	! LAST LINE NUMBER,  ALSO USED TO SAVE LINELINE BETWEEN PROGRAM UNITS

		ERRFLAG,	! IF 1 INDICATES THAT THERE HAVE BEEN
				! OTHER ERRORS IN THIS STATEMENT
		MSGNOTYPD,	! IF 1 INDICATES THAT THERE ARE MESSAGES IN
				! THE QUEUE WHICH HAVE NOT BEEN TYPED ON THE USER TTY
		CLASPTR,	! CLASSIFICATION BACKUP POINTER
		CLASLPT,	! CLASSIFICATION BACKUP LINE BEGINNING POINTER
		CONTPTR,	! CONTINUATION BACKUP POINTER
		LEXLINE,	! LINE NUMBER ASSOCIATIED WITH CURRENT LEXEME
	% ERROR MESSAGE COUNTERS %
		NUMWARN,	! NUMBER OF WARNING MESSAGES
		NUMFATL,	! NUMBER OF FATL MESSAGES
		WARNOPT,	! FLAG WHICH IF 1 INDICATES THAT WARNINGS
				! WERE ISSUED WHICH COULD ADVERSELY AFFECT THE OPTIMIZER

		STMNDESC,	! ADDRESS OF THE CURRENT STATEMENT DESCRIPTION BLOCK
		PSTATE,		! CURRENT STATE CODE OF THE STATEMENT
				! ORDER CHECKING TABLE - STMNSTATE

		BACKLINE,	! USED TO SAVE LINE ATTRIBUTES OF ANY LINES
				! PASSED OVER DURING LOOKAHEAD
		LOOK4LABEL,	! IF SET TO 1 INDICATES TO LEXICAL THAT
				! IT IS LOOKING FOR A LABEL

		FNDFF,	! SET T0 1 IF FORM FEED ENCOUNTERED

		DIMSTK,		!POINTER TO LIST OF VARIABLES USED AS
				!ARRAY DIMENSIONS WHICH HAVE NOT YET
				!BEEN DEFINED IN COMMON OR AS DUMMYS

		LOOK4CHAR;	! SET TO THE CHARACTER OR STRING THAT
				! LEXICAL CHARACTER OR STRING SCAN IS
				! SUPOSED TO TRY AND MATCH


	GLOBAL	LMLINO,		! CURRENT SOURCE LINE NUMBER
		LMRONO,		! CURRENT MAP ROW NUMBER
		LMCONO;		! CURRENT MAP COLUMN NUMBER

	GLOBAL BIND	ENDOFILE = 0;	! END OF FILE INDICATOR RETURNED
					! BY LEXICAL()


%1133%	GLOBAL MAXFF;		! Maximum size of compiler lowseg

%1133%	GLOBAL CHDSTART;	! HISEG location for the start of character data descriptors


	GLOBAL GLOBEND;	!LAST GLOBAL IN GLOBL.BLI
!NOTE:	ALL GLOBALS FROM SYMTBL TO GLOBEND INCLUSIVE WILL BE INITIALIZED
!TO ZERO IN MODULE CLASSIFIER BEFORE EACH COMPILATION.
!***************************************************************



% THESE GLOBALS ARE NOT TO BE SET TO ZERO AT THE BEGINNING OF EACH
   PROGRAM UNIT.  PHASE I NEEDS THEM  %


%1133%	GLOBAL RTIME;		! Run time for this program unit
%1133%	GLOBAL CTIME;		! Time of day for connect time

	GLOBAL
		BGSTBF,		!HOLDS THE AMOUNT OF CORE NEEDED BY THE
				!LARGEST INPUT FILE. CALCULATED IN
				!COMMAN AND USED WHEN THE FIRST INPUT
				!FILE IS OPENED
		SAVFLG,		!FLGREG SAVE AREA FOR INCLUDED FILES
		DEBGSW,		! VALUE OF THE DEBUG SWITCH SET BY SCAN
		ARINGLEFT,	! USED FOR BUFFERING OF INPUT
	 	BUGOUT,  	! INTERNAL OUTPUT SWITCH VALUE

		FLAGS2,		!SECONDARY FLAG  REGISTER - SEE IOFLG.BLI
![767] ADD F2; REMOVE GFMCOK (NOW IN FIRST)
		F2,		![767] SECONDARY SWITCH REGISTER - SEE IOFLG.BLI

		CURPOOLEND,  	! CURRENT END OF INPUT IN POOL
		CURPTR,		! CURRENT POOL POSITION POINTER
		CHARPOS,	! CHARACTER POSITION OF CURRENT 
				! CHARACTER ON PRINT LINE
		LINEPTR,	! POINTER TO THE CHARACTER-1 OF THE BEGINNING
				! OF THE CURRENT LINE
		SEQLAST,	! IF SET TO 1 IT INDICATES THAT THE LINE BEGINNING THIS PROGRAM UNIT
				! HAS A LINE SEQUENCE NUMBER IN LINELINE
		LINENO[2],	! AREA IN WHICH TO BUILD THE LINE NO
		PAGELINE,	! CURRENT LINE ON THE PAGE 59 TO 0
		LINELINE,	! CURRENT LINE NUMBER
		HEADSTR[20],	! AREA TO BUILD HEADING
		BASENO,		! ARITHMETIC BASE FOR DIGITS()
		HEADPTR,	! BYTE POINTER FOR HEADING
		PAGEPTR;	! BYTE POINTER TO POSITION TO INSERT THE PAGE NO.



END
END
ELUDOM