home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l210 / 1.ddi / EXAMPLES.ARC / CH15EX04.PRO < prev    next >
Encoding:
Text File  |  1988-06-21  |  2.8 KB  |  77 lines

  1. /*
  2.    Turbo Prolog 2.0 Chapter 15, Example Program 4
  3.    
  4.    Copyright (c) 1986, 88 by Borland International, Inc
  5.    
  6. */
  7. constants
  8. % register.bin may be in the programs directory "..\\programs\\register.bin"   
  9.   filename = "register.bin"
  10. domains
  11.    db_selector = mydba
  12.    mydom = city(zipcode, cityname);
  13.            person(firstname, lastname, street, zipcode, code)
  14.    zipcode, cityname, firstname, lastname, street, code  =  string
  15.  
  16. predicates
  17.    listdba(db_selector)
  18.    bt_keys(db_selector, bt_selector, string, ref)
  19.    bt_keysloop(db_selector, bt_selector, string, ref)
  20.  
  21. clauses
  22.    listdba(Db_selector) :-
  23.       write("\n********************************************"),
  24.       write("\n           DATABASE LISTING"),
  25.       write("\n********************************************"),
  26.       db_statistics(Db_selector, NoOfTerms, MemSize, DbaSize, FreeSize),
  27.       write("\n\nTotal number of records in the database: ", NoOfTerms),
  28.       write("\nNumber of bytes used in main memory: ", MemSize),
  29.       write("\nNumber of bytes used by the database: ", DbaSize),
  30.       write("\nNumber of bytes free on disk: ", FreeSize),
  31.       fail.
  32.  
  33.    listdba(Db_selector) :-
  34.       db_chains(Db_selector, Chain),
  35.       write("\n\n\n\n******* Chain LISTING *************"),
  36.       write("\n\nName=", Chain),
  37.       write("\n\nCONTENT OF: ", Chain),
  38.       write("\n------------------------------\n"),
  39.       chain_terms(Db_selector, Chain, mydom, Term, Ref),
  40.       write("\n", Ref, ": ", Term),
  41.       fail.
  42.  
  43.    listdba(Db_selector) :-
  44.       db_btrees(Db_selector, Btree),             /* Returns each B+ tree name */
  45.       bt_open(Db_selector, Btree, Bt_selector),
  46.       bt_statistics(Db_selector, Bt_selector, NoOfKeys,
  47.                     NoOfPages, Dept, KeyLen, Order, PageSize),
  48.       write("\n\n\n******** INDEX LISTING **************"),
  49.       write("\n\nName=     ", Btree),
  50.       write("\nNoOfKeys= ", NoOfKeys),
  51.       write("\nNoOfPages=", NoOfPages),
  52.       write("\nDept=     ", Dept),
  53.       write("\nOrder=    ", Order),
  54.       write("\nKeyLen=   ", KeyLen),
  55.       write("\nPageSize= ", PageSize), nl,
  56.       write("\nCONTENT OF: ", Btree),
  57.       write("\n-----------------------------\n"),
  58.       bt_keys(Db_selector, Bt_selector, Key, Ref),
  59.       write("\n", Key, " - ", Ref),
  60.       fail.
  61.    listdba(_).
  62.  
  63.    bt_keys(Db_selector, Bt_selector, Key, Ref):-
  64.       key_first(Db_selector, Bt_selector, _),
  65.       bt_keysloop(Db_selector, Bt_selector, Key, Ref).
  66.  
  67.    bt_keysloop(Db_selector, Bt_selector, Key, Ref):-
  68.       key_current(Db_selector, Bt_selector, Key, Ref).
  69.  
  70.    bt_keysloop(Db_selector, Bt_selector, Key, Ref):-
  71.       key_next(Db_selector, Bt_selector, _),
  72.       bt_keysloop(Db_selector, Bt_selector, Key, Ref).
  73.       
  74. goal
  75.    db_open(mydba, filename , in_file),
  76.    listdba(mydba).
  77.