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).