MODULE AccTestN; (* Access Benchmark *) IMPORT InitCompilerMods; FROM DBIndxes IMPORT DBIndex, InitIndex, CloseIndex, FindPositionN; FROM DBFields IMPORT Replace; IMPORT ModBase3; FROM Timing IMPORT BeginTimer, ShowUsage; FROM Rand IMPORT RandomInit, RandomCard,RandomReal; IMPORT StringIO; IMPORT StrConv; (* FROM Lib IMPORT RAND; *) VAR counter:CARDINAL; string:ARRAY[0..79] OF CHAR; PROCEDURE RandStr(VAR S : ARRAY OF CHAR); (* Generate a string of random letters with a random length *) VAR key:REAL; BEGIN StrConv.RealToStr(RandomReal() * 10000000.0,2,10,S); END RandStr; CONST KeyLen = 10; Buffers = 400; TYPE KeyStr = ARRAY [0..KeyLen-1] OF CHAR; VAR NDX : DBIndex; DBF : ModBase3.DBFile; Name : KeyStr; Found : BOOLEAN; BEGIN BeginTimer(); (* BeginTimer() timer counting *) RandomInit(1); counter:=0; ModBase3.InitDBF('ModbaseN.dbf',DBF,0,FALSE,FALSE,FALSE, ModBase3.DefaultFixUp); IF ModBase3.OpenDBF(DBF) THEN END; InitIndex('ModBasen.NDX',NDX,DBF,Buffers,FALSE,FALSE); REPEAT (* generate random keys *) RandStr(Name); FindPositionN(NDX, Name, Found); INC(counter); UNTIL NOT Found; (* until not in index *) DEC(counter); CloseIndex(NDX); StrConv.CardinalToStr(counter,0,string); StringIO.WriteStr(StringIO.outp,string); StringIO.WriteEol(StringIO.outp,' Keys found'); ShowUsage(' Accsesstest time'); (* display elaped time in seconds *) END AccTestN.