danax5

archivio con include

 

/* danax5.pro */
/* nota numero assegnato W dipende da record */
/* presenti in database  */

nowarnings
include "A:/ana/ana4.dba"
domains
H = char
predicates
 finestra
 scelta(integer)
 azione0(integer)
 azione1(integer)
 azione2(integer)
 azione3(integer)
 azione4(integer)
 goal finestra.
clauses
 finestra:-clearwindow,
 makewindow(1,7,1,"",1,1,20,60),
 write("INIZIARE sempre premendo 0 "),nl,
 write("---------------------------"),nl,
 write("premi numero scelto e poi ENTER "),nl,
 write("dopo tre ricerche,premere ancora 0 "),nl,
 write("e poi i numeri per opzioni scelte "),nl,
 write("----------------------------------"),nl,
 write("0..inizia con 0 sempre ,poi altri n."),nl,
 write("1..archivio "),nl,
 write("2..figli maschi "),nl,
 write("3..figli femmine "),nl,
 write("4..fine "),nl,
 readint(Q),nl,scelta(Q).
 scelta(0):-azione0(8).
 scelta(1):-write("archivio"),nl,azione1(8).
 scelta(2):-write("maschi"),nl,azione2(8).
 scelta(3):-write("femmine"),nl,azione3(8).
 scelta(4):-write("fine "),nl,azione4(8).
 
 /* inizia ricerca */
 azione0(W):-
 W<9,!,
  dati(N,F,S),
  readchar(H),
  finestra.
 
 /* stampa archivio */
 azione1(W):-
 W<9,!,
 dati(N,F,S), 
 write(N,"\t",F,"\t",S),nl,
 W1=W+1,
 azione1(W1).
 azione1(8).
  
 /* stampa padri con figli maschi */ 
 azione2(W):- 
 W<9,!,
 dati(N,F,S),
 S=maschio,
 write(N,"\t",F,"\t",S),nl,
 W1=W+1,
 azione2(W1).
 azione2(8).
 
 /* stampa padri con figli femmine */      
 azione3(W):-
 W<9,!,
 dati(N,F,S),
 S=femmina,
 write(N,"\t",F,"\t",S),nl,
 W1=W+1,
 azione3(W1).
 azione3(8).
 
 /* fine operazione */
 azione4(W):-
 write("fine "),beep,
 clearwindow,
 write("premi enter "),
 readchar(H).
 
       

/* ana4.dba */
domains
 nome = symbol
predicates
 dati(nome,nome,nome)
clauses
 dati(verdi,luigi,maschio).
 dati(rossi,carlo,maschio).
 dati(bassi,anna,femmina).
 dati(grassi,sergio,maschio).
 dati(basso,elisa,femmina).