home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l217 / 2.ddi / PROGRAMS / DBATEST.PRO < prev    next >
Encoding:
Text File  |  1990-03-26  |  3.8 KB  |  159 lines

  1.  
  2. check_determ
  3.  
  4. DOMAINS
  5.   dom = reference f(integer,char,real,string)
  6.   DB_SELECTOR = dba
  7.  
  8.  
  9. PREDICATES
  10.   optional_ems_test
  11.   write_dba(INTEGER)
  12.   read_dba
  13.   rd(REF)
  14.   count_dba(INTEGER)
  15.   count(REF,INTEGER,INTEGER)
  16.   replace_dba
  17.   replace(REF)
  18.   double_dba
  19.   double(REF)
  20.   half_dba
  21.   half(REF)
  22.   mixture
  23.  
  24.  
  25. CLAUSES
  26.  
  27. /*----------------------------------------------------------------------------*/
  28.  
  29.   write_dba(0):-!.
  30.   write_dba(N):-
  31.     chain_inserta(dba,names,dom,f(1,'x',88.99,"Prolog Development system"),_),
  32.     chain_insertz(dba,names,dom,f(1,'x',88.99,"Prolog Compiler"),_),
  33. /*    writef("\nREF1=% REF2=%",REF1,REF2), */
  34.     N1=N-1,
  35.     write_dba(N1).
  36.  
  37. /*----------------------------------------------------------------------------*/
  38.  
  39.   read_dba:-
  40.     db_chains(dba,CHAIN),
  41.     chain_terms(dba,CHAIN,dom,_,_),
  42. /*    write("\n",REF,"  -->>  ",TERM), */
  43.     fail.
  44.   read_dba:-
  45.     db_chains(dba,CHAIN),
  46.     chain_first(dba,CHAIN,REF),
  47.     rd(REF),
  48.     fail.
  49.   read_dba.
  50.  
  51.   rd(REF):-
  52.     ref_term(dba,dom,REF,_),fail.
  53.   rd(REF):-
  54.     chain_next(dba,REF,NEXT),!,
  55.     rd(NEXT).
  56.   rd(_).
  57.  
  58. /*----------------------------------------------------------------------------*/
  59.  
  60.   replace_dba:-
  61.     chain_first(dba,names,REF),
  62.     replace(REF).
  63.  
  64.   replace(REF):-
  65.     term_replace(dba,dom,REF,f(1,'x',88.99,"Prolog Toolbox")),
  66.     chain_next(dba,REF,NN),
  67.     chain_next(dba,NN,NEXT),!,
  68.     replace(NEXT).
  69.   replace(_).
  70.  
  71. /*----------------------------------------------------------------------------*/
  72.  
  73.   half_dba:-
  74.     chain_last(dba,names,REF),
  75.     half(REF).
  76.  
  77.   half(REF):-
  78.     chain_prev(dba,REF,PP),
  79.     chain_prev(dba,PP,PREV),!,
  80.     term_delete(dba,names,REF),
  81.     half(PREV).
  82.   half(_).
  83.  
  84. /*----------------------------------------------------------------------------*/
  85.  
  86.   double_dba:-
  87.     chain_first(dba,names,REF),
  88.     double(REF).
  89.  
  90.   double(REF):-
  91.     chain_next(dba,REF,NEXT),!,
  92.     chain_insertafter(dba,names,dom,REF,f(1,'x',88.99,"Users guide"),_),
  93.     double(NEXT).
  94.   double(_).
  95.  
  96. /*----------------------------------------------------------------------------*/
  97.  
  98.   count_dba(N):-
  99.     chain_first(dba,names,REF),
  100.     count(REF,1,N).
  101.  
  102.   count(REF,N,N2):-
  103.     chain_next(dba,REF,NEXT),!,
  104.     N1=N+1,
  105.     count(NEXT,N1,N2).
  106.   count(_,N,N).
  107.  
  108. /*----------------------------------------------------------------------------*/
  109.  
  110.   mixture:-
  111.     write("\nReplace every second term:"),
  112.     replace_dba,
  113.     write("\nDouble the number of terms:"),
  114.     double_dba,
  115.     write("\nErase every second term:"),
  116.     half_dba,
  117.     write("\nUse db_instance for all terms:"),
  118.     read_dba,
  119.     count_dba(N),
  120.     write("\nThere are now ",N," terms in the database"),
  121.     db_flush(dba),
  122.     db_statistics(dba,NoOfRecords,MemSize,DbaSize,FreeSize),
  123.     writef("\nNoOfRecords=%, MemSize=%, DbaSize=%, Freesize=%",NoOfRecords,MemSize,DbaSize,FreeSize).
  124.  
  125.  
  126. optional_ems_test:-
  127.     availableems(E), E>0, !,
  128.     write("\n\n\nCopy memory -> ems"),
  129.     db_copy(dba,"dd.dat",in_ems),
  130.     db_close(dba), db_delete("dd.dat",in_memory),
  131.     db_open(dba,"dd.dat",in_ems),
  132.     mixture,
  133.     write("\n\n\nCopy ems -> file"),
  134.     db_copy(dba,"dd.dat",in_file),
  135.     db_close(dba), db_delete("dd.dat",in_ems).
  136. optional_ems_test:-
  137.     write("\n\n\nCopy memory -> file"),
  138.     db_copy(dba,"dd.dat",in_file),
  139.     db_close(dba), db_delete("dd.dat",in_memory).
  140.  
  141.  
  142. /*----------------------------------------------------------------------------*/
  143.  
  144. GOAL    write("\n\n\n\tTEST OF DATABASE SYSTEM\n\t***********************\n\n"),
  145.     time(H1,M1,S1,D1),
  146.     db_create(dba,"dd.dat",in_memory),
  147.     write("\n\nWrite records in the database:"),
  148.     write_dba(100),
  149.     read_dba,
  150.     mixture,
  151.     optional_ems_test,
  152.     write("\n\n\nOpen the database on file"),
  153.     db_open(dba,"dd.dat",in_file),
  154.     mixture,
  155.     db_close(dba), /* db_delete("dd.dat",in_file), */
  156.     time(H2,M2,S2,D2),
  157.     Time=(D2-D1)+100.0*( (S2-S1) + 60.0*( (M2-M1) +60.0*(H2-H1) ) ),
  158.     write("\n\nTime = ",Time,"/100 Sec" ),nl.
  159.