| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- MODULE AddTestN; (* Add Benchmark *)
- IMPORT InitCompilerMods;
- FROM NumTypes IMPORT Real8;
- FROM ModBase3 IMPORT DBFile, CloseDBF, DBFieldDescriptor,
- AppendBlank, WriteDBRec,InitDBF,BuildDBF,
- DefaultFixUp,Replace;
- FROM DBIndxes IMPORT DBIndex, BuildIndex, OpenIndex, CloseIndex,
- AddRecord, FindPositionN,AddToUpdateList,InitIndex;
- FROM Timing IMPORT BeginTimer, ShowUsage;
- FROM StringIO IMPORT PrintMessage;
- FROM InOut IMPORT WriteCard;
- FROM Rand IMPORT RandomInit, RandomCard,RandomReal;
- IMPORT StrConv;
- (* FROM Lib IMPORT RAND;*)
- PROCEDURE RandStr(VAR S : ARRAY OF CHAR);
- (* Generate a string of random letters with a random length *)
- VAR
- key:Real8;
- BEGIN
- (* StrConv.RealToStr((*RandomReal*)VAL(
- LONGREAL,RAND()) * 100000.0,2,10,S); *)
- StrConv.RealToStr((RandomReal() * 10000000.0),2,10,S);
- END RandStr;
- CONST
- KeyLen = 10;
- Buffers = 400;
- TYPE
- KeyStr = ARRAY [0..KeyLen-1] OF CHAR;
- VAR
- DBF : DBFile;
- Fields : ARRAY [1..2] OF DBFieldDescriptor;
- NDX : DBIndex;
- I : CARDINAL;
- Name : KeyStr;
- Found : BOOLEAN;
- BEGIN
- BeginTimer(); (* start timer counting *)
- RandomInit(1);
- WITH Fields[1] DO
- name := "NUMBER";
- size := 10;
- decplaces :=2;
- fldtype := 'N';
- END (* with *);
- WITH Fields[2] DO
- name := "PHONE";
- size := 13;
- fldtype := 'C';
- END (* with *);
- InitDBF('ModBasen.DBF', DBF,40000,FALSE,TRUE,FALSE,DefaultFixUp);
- InitIndex('ModBasen.NDX',NDX,DBF,Buffers,FALSE,TRUE);
- PrintMessage(BuildDBF( Fields,2, DBF)); (* Create empty DBF file *)
- PrintMessage(BuildIndex(NDX, 'NUMBER')); (* create initial empty index *)
- AddToUpdateList(DBF,NDX);
- FOR I := 1 TO 2000 DO
- WriteCard(I, 8);
- REPEAT (* generate random keys *)
- RandStr(Name);
- FindPositionN(NDX, Name, Found);
- UNTIL NOT Found; (* until not already added *)
- AppendBlank(DBF);
- Replace(DBF, 1, Name); (* store key in record *)
- WriteDBRec(DBF); (* add record to data file *)
- (* AddRecord(DBF, NDX); *)
- (* (* all ok now but good for diag*)
- FindPositionN(NDX, Name, Found);
- IF NOT Found THEN
- HALT;
- END (* if *);
- *)
- END (* for *);
- CloseIndex(NDX);
- CloseDBF(DBF);
- ShowUsage('add test'); (* display elaped time in seconds *)
- END AddTestN.
|