home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l210 / 1.ddi / EXAMPLES.ARC / CH15EX01.PRO < prev    next >
Encoding:
Prolog Source  |  1988-06-21  |  1.5 KB  |  49 lines

  1. /*
  2.    Turbo Prolog 2.0 Chapter 15, Example Program 1
  3.    
  4.    Copyright (c) 1986, 88 by Borland International, Inc
  5.    
  6. */
  7.    
  8. domains
  9.    db_selector = dba1 ; dba2
  10.    customers = customer(customer_name, address)
  11.    parts = part(part_name, ID, customer_name)
  12.    customer_name, part_name = symbol
  13.    ID = integer
  14.    address = string
  15.  
  16. predicates
  17.    access
  18.  
  19. goal
  20.    % create the databases dba1 and dba2
  21.    db_create(dba1, "dd1", in_memory),
  22.    db_create(dba2, "dd1.bin", in_file),
  23.  
  24.    % insert customer facts into chain1 in dba1
  25.    chain_insertz(dba1, chain1, customers,
  26.           customer("Joe Fraser","123 West Side"), _),
  27.    chain_insertz(dba1, chain1, customers,
  28.        customer("John Smith","31 East Side"), _),
  29.    chain_insertz(dba1, chain1, customers,
  30.        customer("Diver Dan","1 Water Way"), _),
  31.    chain_insertz(dba1, chain1, customers,
  32.        customer("Dave Devine","123 Heaven Street"), _),
  33.  
  34.    % insert parts facts into chain2 in dba2
  35.    chain_insertz(dba2, chain2, parts, part("wrench", 231, "John Smith"), _),
  36.    chain_insertz(dba2, chain2, parts, part("knife", 331, "Diver Dan"), _),
  37.    access,
  38.    db_close(dba1), db_close(dba2),
  39.    db_delete("dd1", in_memory),
  40.    db_delete("dd1.bin", in_file).
  41.  
  42. clauses
  43.    access:-
  44.       chain_terms(dba1, chain1, customers, customer(Name, ADDR), _),
  45.       chain_terms(dba2, chain2, parts, part(Part, Id, Name), _),
  46.       write("send ", Part, " part num ", Id, " to ", Addr), nl,
  47.       fail.
  48.    access. 
  49.