home *** CD-ROM | disk | FTP | other *** search
- PROGRAM Sizes;
-
- {
- | Purpose: Calculate data sizes for Btrieve
- | Author: David A. Peterson
- | Created: 31 March 1986
- | Modified: Listed most recent first
- }
-
- VAR
- Unique : Boolean;
- Loc : Byte;
- Ch : Char;
- DataPages : Real;
- NumRecs : Real;
- PageSize : Real;
- RecLen : Real;
- NumDupKeys : Real;
- IndexPages : ARRAY [1 .. 24] OF Real;
- NumUniqueKeys : Real;
- KeyLen : Real;
- TotalPages : Real;
- FileSize : Real;
- NumKeys : Byte;
-
- BEGIN { Sizes }
- WriteLn ('Btrieve File Size');
- WriteLn;
- Write ('Number of records : ');
- ReadLn (NumRecs);
- Write ('Page size (512n) : ');
- ReadLn (PageSize);
- Write ('Record Length : ');
- ReadLn (RecLen);
- Write ('Number of keys : ');
- ReadLn (NumKeys);
- NumDupKeys := 0;
- FOR Loc := 1 TO NumKeys DO
- BEGIN
- WriteLn ('For key ', Loc);
- Write ('Key Length : ');
- ReadLn (KeyLen);
- Write ('Is key unique ? ');
- ReadLn (Ch);
- Unique := UpCase (Ch) = 'Y';
- IF Unique THEN
- IndexPages[Loc] := (NumKeys / ( (PageSize - 12) / (KeyLen + 8) ) ) * 2
- ELSE
- BEGIN
- NumDupKeys := NumDupKeys + 1;
- Write ('How many Unique Key values ? ');
- ReadLn (NumUniqueKeys);
- IndexPages[Loc] := (NumUniqueKeys / ( (PageSize - 12) / (KeyLen + 12) ) ) * 2
- END
- END;
- DataPages := NumRecs / ( (PageSize - 6) / (RecLen + (8 * NumDupKeys) ) );
- TotalPages := 1 + Round (DataPages + 0.5);
- FOR Loc := 1 TO NumKeys DO
- TotalPages := TotalPages + Round (IndexPages[Loc] + 0.5);
- FileSize := TotalPages * PageSize;
- Write ('File size ', FileSize:9:0)
- END { Sizes }.