home *** CD-ROM | disk | FTP | other *** search
/ norge.freeshell.org (192.94.73.8) / 192.94.73.8.tar / 192.94.73.8 / pub / computers / cpm / alphatronic / TURBODBT.ZIP / BTREE.PAS < prev    next >
Pascal/Delphi Source File  |  1996-07-15  |  4KB  |  126 lines

  1.  
  2. (*******************************************************)
  3. (*                                                     *)
  4. (*         TURBO-ACCESS Version 1.2 (CP/M-80)          *)
  5. (*                                                     *)
  6. (*              Database Example Program               *)
  7. (*                                                     *)
  8. (*         Use with TURBO PASCAL 2.0 or later          *)
  9. (*                                                     *)
  10. (*              Copyright (C) 1984,85 by               *)
  11. (*               Borland International                 *)
  12. (*                                                     *)
  13. (*******************************************************)
  14.  
  15. program DataBase;
  16. (*$A+,C-,R-,V-*)
  17.  
  18. label Stop;
  19.  
  20. const
  21.  
  22. (*  data record Size definition *)
  23.   CustRegSize  =  342;        (*  customer record Size *)
  24.  
  25. (*  TURBO-access constants *)
  26.   MaxDataRecSize  =  CustRegSize;   (*  max record Size *)
  27.   MaxKeyLen       =  25;            (*  max key Size *)
  28.   PageSize        =  16;            (*  page Size *)
  29.   Order           =  8;             (*  half page Size *)
  30.   PageStackSize   =  5;             (*  page buffer Size *)
  31.   MaxHeight       =  5;             (*  max B-tree height *)
  32.  
  33.  
  34. var
  35.   NoOfRecs      : Integer;
  36.  
  37. (*  include TURBO-access modules *)
  38.  
  39. (*$I ACCESS.BOX*)
  40. (*$I GETKEY.BOX*)
  41. (*$I ADDKEY.BOX*)
  42. (*$I DELKEY.BOX*)
  43.  
  44. type
  45.   Str5    =  string[5];
  46.   Str10   =  string[10];
  47.   Str15   =  string[15];
  48.   Str25   =  string[25];
  49.   Str80   =  string[80];
  50.   AnyStr  =  string[255];
  51.  
  52. (*  character set type *)
  53.   CharSet=  set of Char;
  54.  
  55. (*  customer record definition *)
  56.  
  57.   CustRec = record
  58.               CustStatus : Integer;         (*  CustStatus *)
  59.               CustCode   : string[15];    (*  customer code *)
  60.               EntryDate  : string[8];     (*  entry date *)
  61.               FirstName  : string[15];    (*  first name *)
  62.               LastName   : string[30];    (*  last name *)
  63.               Company    : string[40];    (*  company *)
  64.               Addr1      : string[40];    (*  Address 1 *)
  65.               Addr2      : string[40];    (*  Address 2 *)
  66.               Phone      : string[15];    (*  Phone number *)
  67.               PhoneExt   : string[5];     (*  extension *)
  68.               Remarks1   : string[40];    (*  remarks 1 *)
  69.               Remarks2   : string[40];    (*  remarks 2 *)
  70.               Remarks3   : string[40];    (*  ramarks 3 *)
  71.             end;
  72.  
  73. var
  74.  
  75. (*  global variables *)
  76.   DatF          : DataFile;
  77.   CodeIndexFile,
  78.   NameIndexFile : IndexFile;
  79.   Ch            : Char;
  80.  
  81.  
  82. {$I BTREE.INC}
  83.  
  84. (*  Main program *)
  85.  
  86. begin
  87.   ClrScr ;
  88.   Writeln(ConstStr('-',79));
  89.   Writeln('TURBO-Access Customer Database');
  90.   Writeln(ConstStr('-',79));
  91.   GotoXY(1,22); Writeln(ConstStr('-',79));
  92.   Writeln;
  93.   Write(ConstStr('-',79)); GotoXY(1,4);
  94.   InitIndex;
  95.   OpenFile(DatF,'CUST.DAT',CustRegSize);
  96.   if OK then
  97.     OpenIndex(CodeIndexFile,'CUST.IXC',15,0);
  98.   if OK then
  99.     OpenIndex(NameIndexFile,'CUST.IXN',25,1);
  100.   if not OK then
  101.   begin
  102.     Select('Data files missing. Create new files (Y/N)', ['Y','N'], Ch);
  103.     if Ch = 'Y' then
  104.     begin
  105.       MakeFile(DatF,'CUST.DAT',CustRegSize);
  106.       MakeIndex(CodeIndexFile,'CUST.IXC',15,0);
  107.       MakeIndex(NameIndexFile,'CUST.IXN',25,1);
  108.     end
  109.     else goto Stop;
  110.   end;
  111.   GotoXY(60,2); Write(UsedRecs(DatF):5,' Records in use');
  112.   repeat
  113.     Select('Select : U)pdate, L)ist, Q)uit', ['U','L','Q'], Ch);
  114.     case Ch of
  115.       'U' : Update;
  116.       'L' : List;
  117.     end;
  118.     if Ch <> 'Q' then ClearFrame;
  119.   until UpCase(Ch) = 'Q';
  120.   CloseFile(DatF);
  121.   CloseIndex(CodeIndexFile) ;
  122.   CloseIndex(NameIndexFile) ;
  123.   Stop :
  124.   ClrScr;
  125. end.
  126.