dana7

 


 

/* dana7.pro */
/* nota numero assegnato W dipende da record */
/* presenti in database  */
nowarnings
include "A:/ana/ana7.dba"
domains
H = char
predicates
 finestra
 scelta(integer)
 azione1(integer)
 azione2(integer)
 azione3(integer)
 azione4(integer)
 azione6(integer)
 azione
 goal finestra,azione. 
clauses
 finestra:-clearwindow,
 makewindow(1,7,1,"",1,1,20,45),
 makewindow(2,7,1,"",1,46,20,30).
 azione:-
 shiftwindow(2),
 write("0..questo menu "),nl,
 write("1..archivio "),nl,
 write("2..figli maschi "),nl,
 write("3..figli femmine "),nl,
 write("4..figli minori 25 anni "),nl,
 write("6..fine "),nl,
 readint(Q),nl,scelta(Q).
 scelta(0):-azione.
 scelta(1):-azione1(7).
 scelta(2):-azione2(7).
 scelta(3):-azione3(7).
 scelta(4):-azione4(7).
 scelta(6):-azione6(0).
 
 /* stampa archivio completo */
 azione1(W):-shiftwindow(1),
 W<8,!,
  dati(N,F,S,E),
  write(N,"\t",F,"\t",S,"\t",E),nl, 
  W1=W+1,
  azione1(W1).
  
 /* stampa padri con figli maschi */ 
 azione2(W):-shiftwindow(1), 
 W<8,!,
 dati(N,F,S,E),
 S=maschio,
 write(N,"\t",F,"\t",S),nl,
 W1=W+1,
 azione2(W1).
 azione2(7).
 
 /* stampa padri con figli femmine */      
 azione3(W):-shiftwindow(1),
 W<8,!,
 dati(N,F,S,E),
 S=femmina,
 write(N,"\t",F,"\t",S),nl,
 W1=W+1,
 azione3(W1).
 
 /* stampa figli e figlie minori 25 anni */
 azione4(W):-shiftwindow(1),
 W<8,!,
 dati(N,F,S,E),
 E<=25,
 write(N,"\t",F,"\t",S,"\t",E),nl,
 W1=W+1,
 azione4(W1).
 
 /* fine operazione */
 azione6(W):-shiftwindow(1),
 write("fine "),beep,
 clearwindow,
 write("premi enter "),
 readchar(H).
 

/* ana7.dba */
domains
 nome = symbol
 eta =integer
predicates
 dati(nome,nome,nome,eta)
clauses
 dati(verdi,luigi,maschio,23).
 dati(rossi,carlo,maschio,34).
 dati(bassi,anna,femmina,30).
 dati(grassi,sergio,maschio,12).
 dati(basso,elisa,femmina,15).
 dati(pascoli,mario,maschio,30).
 dati(zanella,lisa,femmina,21).
 dati(grossi,aldo,maschio,23).