ACCTESTN.MOD 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. MODULE AccTestN; (* Access Benchmark *)
  2. IMPORT InitCompilerMods;
  3. FROM DBIndxes IMPORT DBIndex, InitIndex, CloseIndex, FindPositionN;
  4. FROM DBFields IMPORT Replace;
  5. IMPORT ModBase3;
  6. FROM Timing IMPORT BeginTimer, ShowUsage;
  7. FROM Rand IMPORT RandomInit, RandomCard,RandomReal;
  8. IMPORT StringIO;
  9. IMPORT StrConv;
  10. (* FROM Lib IMPORT RAND; *)
  11. VAR
  12. counter:CARDINAL;
  13. string:ARRAY[0..79] OF CHAR;
  14. PROCEDURE RandStr(VAR S : ARRAY OF CHAR);
  15. (* Generate a string of random letters with a random length *)
  16. VAR
  17. key:REAL;
  18. BEGIN
  19. StrConv.RealToStr(RandomReal() * 10000000.0,2,10,S);
  20. END RandStr;
  21. CONST
  22. KeyLen = 10;
  23. Buffers = 400;
  24. TYPE
  25. KeyStr = ARRAY [0..KeyLen-1] OF CHAR;
  26. VAR
  27. NDX : DBIndex;
  28. DBF : ModBase3.DBFile;
  29. Name : KeyStr;
  30. Found : BOOLEAN;
  31. BEGIN
  32. BeginTimer(); (* BeginTimer() timer counting *)
  33. RandomInit(1);
  34. counter:=0;
  35. ModBase3.InitDBF('ModbaseN.dbf',DBF,0,FALSE,FALSE,FALSE,
  36. ModBase3.DefaultFixUp);
  37. IF ModBase3.OpenDBF(DBF) THEN END;
  38. InitIndex('ModBasen.NDX',NDX,DBF,Buffers,FALSE,FALSE);
  39. REPEAT (* generate random keys *)
  40. RandStr(Name);
  41. FindPositionN(NDX, Name, Found);
  42. INC(counter);
  43. UNTIL NOT Found; (* until not in index *)
  44. DEC(counter);
  45. CloseIndex(NDX);
  46. StrConv.CardinalToStr(counter,0,string);
  47. StringIO.WriteStr(StringIO.outp,string);
  48. StringIO.WriteEol(StringIO.outp,' Keys found');
  49. ShowUsage(' Accsesstest time'); (* display elaped time in seconds *)
  50. END AccTestN.