{= COMMON.INC =========================================================== | | Common Type and procedure declarations for EXPORT.PAS, IMPORT.PAS and | UPDATE.PAS. | |========================================================================} TYPE { Conversion Table Types } ConversionType = RECORD NodeSide : Byte; HubSide : Byte; END; { RECORD } ConversionTableType = ARRAY [1..255] OF ConversionType; { Sample Pointer Table Types } PointerArrayType = ARRAY [0..255] OF Integer; PointerFileType = FILE OF PointerArrayType; {------------------------------------------------------------------------ | | |------------------------------------------------------------------------} FUNCTION ReadConversionTable (VAR ConversionTable : ConversionTableType; VAR ConversionCount : Byte; SystemId : String; SystemType : Char) : Boolean; VAR F : Text; Name : String; Junk : String; BEGIN FillChar (ConversionTable, SizeOf(ConversionTable), #0); IF SystemType = 'N' THEN BEGIN Name:= SystemId + '.HUB'; Assign (F, Junk); END ELSE BEGIN Name:= SystemId + '.NOD'; Assign (F, Junk); END; {$I-} Reset (F); {$I-} IF IOResult <> 0 THEN BEGIN Writeln (^g^g'Error opening ',Name,'!'); Halt; END; { Get rid of the password line } {$I-} Readln (F, Junk); {$I+} IF IOResult <> 0 THEN BEGIN Writeln (^g^g'Error reading ',Name,'!'); Halt; END; ConversionCount:= 0; WHILE (NOT Eof(F)) AND (ConversionCount <= 255) DO BEGIN Inc (ConversionCount); {$I-} Read (F, ConversionTable[ConversionCount].NodeSide); Readln (F, ConversionTable[ConversionCount].HubSide); {$I+} IF IOResult <> 0 THEN BEGIN Writeln (^g^g'Error reading ',Name,'!'); Halt; END; END; Close (F); {$I-} ReadConversionTable:= (IOResult = 0); END; {------------------------------------------------------------------------ | | |------------------------------------------------------------------------} PROCEDURE LocalAreaNumber (VAR MatchFound : Boolean; VAR LocalAreaNumber : Byte; RemoteAreaNumber : Byte; SystemType : Char; VAR ConversionTable : ConversionTableType; VAR ConversionCount : Byte); VAR Match : Byte; I : Byte; BEGIN MatchFound:= True; LocalAreaNumber:= 0; { IF the RemoteAreaNumber is 0 there is no conversion needed } IF RemoteAreaNumber = 0 THEN Exit; Match:= 0; FOR I:= 1 TO ConversionCount DO BEGIN CASE SystemType OF 'N' : IF ConversionTable[I].NodeSide = RemoteAreaNumber THEN Match:= I; 'H' : IF ConversionTable[I].HubSide = RemoteAreaNumber THEN Match:= I; END; END; END; {- ReadPointer ---------------------------------------------------------- | | |------------------------------------------------------------------------} FUNCTION ReadPointer ( SystemName : String; VAR MsgPointer : PointerArrayType) : Boolean; VAR Error : Word; F : PointerFileType; BEGIN Assign (F, SystemName + '.PTR'); {$I-} Reset (F); Error:= IOResult; IF Error = 0 THEN BEGIN Read (F, MsgPointer); Error:= IOResult; IF Error = 0 THEN Close (F); Error:= IOResult; END; ReadPointer:= (Error = 0); {$I+} END; {- WritePointer --------------------------------------------------------- | | Writes the memory pointer array to Disk specified by the SystemName. | |------------------------------------------------------------------------} FUNCTION WritePointer ( SystemName : String; VAR MsgPointer : PointerArrayType) : Boolean; VAR Error : Word; F : PointerFileType; BEGIN Assign (F, SystemName + '.PTR'); {$I-} Rewrite (F); Error:= IOResult; IF Error = 0 THEN BEGIN Write (F, MsgPointer); Error:= IOResult; IF Error = 0 THEN Close (F); Error:= IOResult; END; WritePointer:= (Error = 0); {$I+} END; {------------------------------------------------------------------------ | | |------------------------------------------------------------------------} PROCEDURE ZeroPointer (VAR MsgPointer : PointerArrayType); VAR I : Integer; BEGIN FOR I:= 0 TO 255 DO MsgPointer[I]:= 0; END;