DEFINITION MODULE DBIndxes; (* * 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 ModBase3 IMPORT DBFile; FROM NumTypes IMPORT Real8; TYPE DBIndex; KeyProcedure = PROCEDURE( DBFile, DBIndex ,VAR ARRAY OF CHAR ); PROCEDURE DefaultKeyProcedure(alias: DBFile; ndx: DBIndex; VAR str:ARRAY OF CHAR ); PROCEDURE FindPositionCh(ndx: DBIndex; keystr: ARRAY OF CHAR; VAR found: BOOLEAN); PROCEDURE FindPositionN( ndx: DBIndex; keystr: ARRAY OF CHAR; VAR found: BOOLEAN); PROCEDURE InitIndex(indexname: ARRAY OF CHAR;VAR ndx: DBIndex;alias:DBFile ;buffersize: CARDINAL; safety,IncludeDeleted,exclusive:BOOLEAN); PROCEDURE InitCompIndex(indexname: ARRAY OF CHAR; VAR ndx: DBIndex;alias:DBFile;Key :KeyProcedure; buffersize: CARDINAL ; safety,IncludeDeleted,exclusive:BOOLEAN); PROCEDURE OpenIndex( ndx: DBIndex):BOOLEAN; PROCEDURE DisposeIndex(VAR ndx: DBIndex); PROCEDURE InsertEntry( ndx: DBIndex; kstr: ARRAY OF CHAR; recno: LONGINT ); PROCEDURE CloseIndex( ndx: DBIndex); PROCEDURE UpdateIndex( ndx: DBIndex); PROCEDURE SetSafetyOn( ndx: DBIndex); PROCEDURE SetSafetyOff( ndx: DBIndex); PROCEDURE SetIndexBuffers( ndx: DBIndex;Buffers:CARDINAL); PROCEDURE NextRecord( ndx: DBIndex; VAR recno: LONGINT): BOOLEAN; PROCEDURE PrevRecord( ndx: DBIndex; VAR recno: LONGINT): BOOLEAN; (* Builds may fail because of failure getting exclusive access *) PROCEDURE BuildIndex( ndx: DBIndex; keyexp: ARRAY OF CHAR):CARDINAL; PROCEDURE BuildCompIndex( ndx: DBIndex; type: CHAR; keyexp:ARRAY OF CHAR;size : CARDINAL):CARDINAL; PROCEDURE AddRecord( alias: DBFile; ndx: DBIndex); PROCEDURE CurrentKeyCh( ndx: DBIndex;VAR val:ARRAY OF CHAR); PROCEDURE CurrentKeyN(ndx: DBIndex):Real8; PROCEDURE CurrentRec(ndx: DBIndex):LONGINT; PROCEDURE NumKeyType( ndx: DBIndex):BOOLEAN; PROCEDURE KeyLength( ndx: DBIndex):CARDINAL; PROCEDURE DeleteCurrentEntry( ndx: DBIndex); PROCEDURE GoTop( ndx: DBIndex); PROCEDURE GoBottom( ndx: DBIndex); PROCEDURE AddToUpdateList( alias: DBFile; ndx: DBIndex); (* add ndx to alias's list of indexes to update *) (* PROCEDURE UpdateDBIndxes( alias:DBFile); assigned to Index check procedure in Modbase3 *) PROCEDURE UpdateUnique( alias: DBFile; ndx: DBIndex):BOOLEAN; (* must be called after changes are made and before WriteDBFile Will indicate TRUE if key is not changed or the new value of the key is not in the index. It will only be false if the Update will produce a duplicate.*) (* you normally never need to call the EnterLock or ExitLock even on a network only need if you use InsertEntry which you should never need to use *) PROCEDURE EnterLock( ndx:DBIndex); PROCEDURE ExitLock( ndx:DBIndex); END DBIndxes.