home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l217 / 2.ddi / PROGRAMS / NDXTEST.PRO < prev    next >
Encoding:
Prolog Source  |  1990-03-26  |  2.7 KB  |  126 lines

  1.  
  2. DOMAINS
  3.   dom = f(INTEGER)
  4.   DB_selector = dba
  5.  
  6.  
  7.  
  8. /*----------- Put something in the index -------------------------------------*/
  9.  
  10. PREDICATES
  11.   write_dba(bt_selector,REF,INTEGER)
  12.  
  13. CLAUSES
  14.   write_dba(_,_,0):-!.
  15.   write_dba(INDX,REF,N):-
  16.     str_int(NN,N),
  17.     key_insert(dba,INDX,NN,REF),
  18.     fail.
  19.   write_dba(INDX,REF,N):-
  20.     N1=N-1,
  21.     write_dba(INDX,REF,N1).
  22.  
  23. /*----------- Write the records sorted ---------------------------------------*/
  24.  
  25. PREDICATES
  26.   wsort(bt_selector)
  27.   wsort1(bt_selector)
  28.   wsort2(bt_selector,REF)
  29.  
  30. CLAUSES
  31.   wsort(INDEX):-
  32.     key_first(dba,INDEX,REF),
  33.     wsort2(INDEX,REF),
  34.     fail.
  35.   wsort(_).
  36.  
  37.   wsort1(INDEX):-
  38.     key_search(dba,INDEX,"1",REF),
  39.     wsort2(INDEX,REF),
  40.     fail.
  41.   wsort1(_).
  42.  
  43.  
  44. /*
  45.   wsort2(_,REF):- /* Write the records */
  46.     db_instance(dba,REF,_ /*RECORD*/),
  47.     nl,write(RECORD),
  48.     fail.
  49. */
  50.   wsort2(INDEX,_):- /* Write the keys */
  51.     key_current(dba,INDEX,KEY,_),
  52.     nl,write(KEY),
  53.     fail.
  54.   wsort2(INDEX,_):-
  55.     key_next(dba,INDEX,REF),
  56.     wsort2(INDEX,REF).
  57.  
  58. /*----------- Delete some keys -----------------------------------------------*/
  59.  
  60. PREDICATES
  61.   del_index(bt_selector,REF,INTEGER,INTEGER)
  62.  
  63. CLAUSES
  64.   del_index(_,_,N,N):-!.
  65.   del_index(INDX,REF,N,_):-
  66.     str_int(NN,N),
  67.     key_delete(dba,INDX,NN,REF),
  68.     fail.
  69.   del_index(INDX,REF,N,N2):-
  70.     N1=N+1,
  71.     del_index(INDX,REF,N1,N2).
  72.  
  73.  
  74. /*----------- Do some searches -----------------------------------------------*/
  75.  
  76. PREDICATES
  77.   testacces(bt_selector,INTEGER)
  78.  
  79. CLAUSES
  80.   testacces(_,0):-!.
  81.   testacces(INDEX,_):-
  82.     key_search(dba,INDEX,"11",_),
  83.     key_search(dba,INDEX,"22",_),
  84.     key_search(dba,INDEX,"33",_),
  85.     key_search(dba,INDEX,"44",_),
  86.     key_search(dba,INDEX,"55",_),
  87.     key_search(dba,INDEX,"66",_),
  88.     key_search(dba,INDEX,"77",_),
  89.     key_search(dba,INDEX,"88",_),
  90.     key_search(dba,INDEX,"99",_),
  91.     key_search(dba,INDEX,"00",_),
  92.     fail.
  93.   testacces(INDEX,N):-
  94.     N1=N-1,
  95.     testacces(INDEX,N1).
  96.  
  97. /*----------- GOAL -----------------------------------------------------------*/
  98.  
  99. GOAL    
  100.     db_create(dba,"dd.dat",in_file),
  101.     chain_insertz(dba,names,dom,f(0),REF),
  102.  
  103.     bt_create(dba,ndx,INDEX,4,5),
  104.  
  105.     time(H1,M1,S1,D1),
  106.     write_dba(INDEX,REF,100),
  107.     testacces(INDEX,10),
  108.     bt_statistics(dba,INDEX,NoOfKeys,NoOfPages,Dept,KeyLen,Order,PageSize),
  109.     UsedSize=NoOfPages*PageSize,
  110.     writef("\nNoOfKeys=%, NoOfPages=%, Dept=%, Order=%\nKeyLen=%, PageSize=%, UsedSize=%",
  111.         NoOfKeys,NoOfPages,Dept,Order,KeyLen,PageSize,UsedSize),
  112.  
  113.     del_index(INDEX,REF,2,100),
  114.     wsort(INDEX),
  115.     time(H2,M2,S2,D2),
  116.  
  117.     bt_open(dba,ndx,I1),
  118.     db_flush(dba),
  119.     bt_close(dba,INDEX),
  120.     bt_close(dba,I1),
  121.     bt_delete(dba,ndx),
  122.     db_close(dba),
  123.  
  124.     Time=(D2-D1)+100.0*( (S2-S1) + 60.0*( (M2-M1) +60.0*(H2-H1) ) ),
  125.     write("\n\nTime = ",Time,"/100 Sec" ),nl.
  126.