DIRECTORY
Alloc: TYPE USING [Handle],
BcdDefs: TYPE USING [MTHandle, SGRecord, VersionStamp],
FileParms: TYPE USING [ActualId],
OSMiscOps: TYPE USING [Stamp],
Rope: TYPE USING [ROPE],
Symbols: TYPE USING [ISEIndex, CSEIndex, CTXIndex, CBTIndex],
SymbolSegment: TYPE USING [FGTEntry],
SymbolTable: TYPE USING [Base],
Tree: TYPE USING [Link];
 
ComData: 
PROGRAM = 
PUBLIC {
OPEN Symbols;
basic types (initialized in Pass1)
typeINT, typeCARDINAL: CSEIndex;
typeBOOL, typeCHAR, typeREAL: CSEIndex;
typeSTRING, typeStringBody: CSEIndex;
typeATOM, typeAtomRecord: CSEIndex;
typeRefANY, typeListANY: CSEIndex;
typeLOCK, typeCONDITION: CSEIndex;
 
global info describing module
interface: BOOL;   -- interface module
monitored: BOOL;
stopping: BOOL;
outerCtx: CTXIndex;  -- predefined identifiers
moduleCtx: CTXIndex;  -- module identifiers
importCtx: CTXIndex;  -- import id context
exportCtx: CTXIndex;  -- export id context
mainCtx: CTXIndex;  -- main program's context
nBodies: CARDINAL;
nInnerBodies: CARDINAL;
nSigCodes: CARDINAL;
defBodyLimit: CARDINAL;
linkCount: CARDINAL;  -- global control links (externals, etc)
 
shared instance of SymbolTable
ownSymbols: SymbolTable.Base;
 
type identifiers (initialized in Pass1)
idANY: ISEIndex;
idINT, idCARDINAL, idCHAR, idBOOL, idREAL, idSTRING: ISEIndex;
idTEXT: ISEIndex;
idLOCK: ISEIndex;
idATOM: ISEIndex;
 
anonymous entry for undeclared ids
symbolic constants
tC0, tC1: Tree.Link;
idUNWIND: ISEIndex;
 
scratch storage
table: Alloc.Handle;
zone: UNCOUNTED ZONE;
 
compilation options
switches: PACKED ARRAY CHAR['a..'z] OF BOOL;
 
input
source: FileParms.ActualId;
sourceTokens: CARDINAL;
pattern: FileParms.ActualId; -- old bcd to match
matched: BOOL;
 
variables used for error reporting
nErrors: CARDINAL;
nWarnings: CARDINAL;
bodyIndex: CBTIndex;  -- current body
textIndex: CARDINAL;  -- start index of line with error
 
output
compilerVersion: BcdDefs.VersionStamp;
objectFile: Rope.ROPE;
objectVersion: BcdDefs.VersionStamp;
objectStamp: OSMiscOps.Stamp;
globalFrameSize: CARDINAL;
objectBytes: CARDINAL;
fgTable: LONG DESCRIPTOR FOR ARRAY OF SymbolSegment.FGTEntry ← NIL;
bcdSeg, codeSeg, symSeg: BcdDefs.SGRecord;
mtRoot: BcdDefs.MTHandle ← NIL;
mtRootSize: CARDINAL;
fixupLoc: LONG CARDINAL;
}.