DEFINITION MODULE ModBase3; (* * ModBase * Release 3.0 * By Don Fletcher & John McMonagle * (c) Copyright 1986 - 1991 PMI * P.O. Box 8402 * Green Bay WI 54308 * All Rights Reserved * *) FROM SYSTEM IMPORT ADDRESS; CONST MaxRecLength = 4000; MaxField = 128; MaxHeaderLen = 32*(MaxField+1)+2; NameLen = 64; MemoSize = 512; ReadOnly = {}; ReadWrite ={1}; Exclusive ={4}; PermitAll={6}; PermitRead={5}; TYPE RecordModeType=(CurrentRec,Buffer,ReRead); DBFieldDescriptor = RECORD name: ARRAY [0..9] OF CHAR; size: CARDINAL; decplaces: CARDINAL; offset: CARDINAL; fldtype,align: CHAR;(* align is to make size even *) END; DBFieldArray= ARRAY [1..MaxField] OF DBFieldDescriptor; DBFieldPtr=POINTER TO DBFieldArray; (* consider all of DBFile type read only *) DBFile; FixUpProcedure=PROCEDURE(DBFile):BOOLEAN; IndexCheckProcedure=PROCEDURE( DBFile); VAR UpDateIndexes:IndexCheckProcedure; PROCEDURE InitDBF(filename: ARRAY OF CHAR; VAR alias: DBFile; BufferSize:CARDINAL; safety,Exclusive,AutoLock:BOOLEAN; FixUp:FixUpProcedure ); PROCEDURE DisposeDBF(VAR alias:DBFile); PROCEDURE OpenDBF ( alias : DBFile ):BOOLEAN; PROCEDURE BuildDBF( fields: ARRAY OF DBFieldDescriptor;NumFields:CARDINAL; alias: DBFile):CARDINAL; PROCEDURE CloseDBF( alias: DBFile); PROCEDURE UpdateDBFile( alias: DBFile); (* Used when safety is off to update DBFile and Memos to disk *) PROCEDURE ReadDBRec( alias: DBFile; recnum: LONGINT) ; PROCEDURE SetDBBuffer( alias: DBFile; BufferSize: CARDINAL ); (* BufferSize in Bytes, Will set to multiple of alias.length *) PROCEDURE WriteDBRec( alias: DBFile); PROCEDURE GetField( alias: DBFile; fieldnumber: CARDINAL; VAR field: ARRAY OF CHAR); PROCEDURE Replace( alias: DBFile; fieldnumber: CARDINAL; field: ARRAY OF CHAR); PROCEDURE PosOfField( alias: DBFile; fieldname: ARRAY OF CHAR): CARDINAL; PROCEDURE AppendBlank( alias: DBFile); PROCEDURE DeleteRecord( alias: DBFile); PROCEDURE UnDeleteRecord( alias: DBFile); PROCEDURE Deleted( alias: DBFile): BOOLEAN; PROCEDURE SetDBSafetyOn( alias: DBFile); PROCEDURE SetDBSafetyOff( alias: DBFile); PROCEDURE SetRecordMode( alias: DBFile;Mode:RecordModeType); PROCEDURE LockRec( alias: DBFile;recnum:LONGINT):CARDINAL; PROCEDURE UnLockRec( alias: DBFile;recnum:LONGINT):CARDINAL; PROCEDURE DBError( alias:DBFile):CARDINAL; PROCEDURE Appending(alias:DBFile):BOOLEAN; PROCEDURE FileName(alias:DBFile;VAR Name:ARRAY OF CHAR); PROCEDURE HasMemo(alias:DBFile):BOOLEAN; PROCEDURE SafetySet(alias:DBFile):BOOLEAN; PROCEDURE IndexList(alias:DBFile):ADDRESS; PROCEDURE SetIndexList(alias:DBFile;ndx:ADDRESS); PROCEDURE Record(alias:DBFile):LONGINT; PROCEDURE FieldList(alias:DBFile):DBFieldPtr; PROCEDURE BufferSize(alias:DBFile):CARDINAL; PROCEDURE NumberOfFields(alias:DBFile):CARDINAL; PROCEDURE NumberRecords(alias:DBFile):LONGINT; PROCEDURE RecordPtr(alias:DBFile):ADDRESS; PROCEDURE RecordLength(alias:DBFile):CARDINAL; PROCEDURE OpenMemo(alias:DBFile):BOOLEAN; PROCEDURE MemoHandle(alias:DBFile):CARDINAL; PROCEDURE NilDBF(VAR alias:DBFile); PROCEDURE Initialized(alias:DBFile):BOOLEAN; PROCEDURE DefaultFixUp(alias:DBFile):BOOLEAN; END ModBase3.