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

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