xfile5

/* file8.pro */
/* attiva INCLUDE MENU.PRO */
/* attivazione menu e scelta opzioni */
/* con ritorno a menu chiamante */
/* con riduzione opzioni menu */
/* con gestione file su disco DIR */
nowarnings
include "menu.pro"
domains
Enter    =char
Programmi=string
Nome     =string
Indice   =string
predicates
azione
termine(integer)
elabora(integer)
scelta(integer)
richiesta(integer)
stampa(string)
fine
goal 
makewindow(1,7,1,"",1,1,20,60),
azione.
clauses 
 azione:-
 write("\n"),
 write("premi enter\n"),
 readchar(Enter),
 clearwindow,
 write("scegli opzione con tasti frecce\n"),
 menu(3,40, [".1.scelta1...informa...........",
             ".2.scelta2...cerca su A.PRO....",
             ".3.scelta3...cerca su A.*.*....",
             ".4.scelta4...cerca su C.*.*....",
             ".5.scelta5...fine.............."],
             SCELTA),
             elabora(SCELTA),
             termine(SCELTA),!.
 elabora(0).
 elabora(1):-scelta(1).
 elabora(2):-scelta(2).            
 elabora(3):-scelta(3).
 elabora(4):-scelta(4).
 elabora(5):-scelta(5).
 termine(5).
 termine(0).
 scelta(1):-write("scelta1"),nl,
 write("seleziona opzioni da menu.."),
 azione.
 
 
 scelta(2):-write("scelta2..\n"),
 sound(100,600),richiesta(2),
 azione.
 
 
 scelta(3):-write("scelta 3.\n"),
          sound(100,700),richiesta(3),
          azione.
 
 scelta(4):-write("scelta 4\n "),
 	  sound(100,800),richiesta(4),
 	  azione.
 
 scelta(5):-write("fine chiamate"),
 sound(100,600),fine.
 
 richiesta(2):-
 write("scrivi nome del file che cerchi\n"),
 write("es. nomefile.ext \n"),
 readln(Nome),  /* mostra sempre indice */
 concat("A:/file/",Nome,Indice),
 dir("A:/file","*.pro",Programmi),stampa(Programmi).
  
 richiesta(3):-
 write("scrivi nome del file che cerchi\n"),
 write("es...nomefile.ext  "),
 readln(Nome),
 concat("A:/file/",Nome,Indice),
 consult(Indice). 
 richiesta(3):-
 write(" file non trovato "),sound(100,300),
 dir("A:/file","*.*",Programmi),stampa(Programmi),!.
 richiesta(3):-
 write("file richiesto non trovato"),
 azione.
 
 richiesta(4):-
 dir("//","*.*",Programmi),stampa(Programmi). 
 
 stampa(S):-
 cursor(10,10),
 write("premi ESC"),
 sound(100,800),
 display(S).
 
 fine:-
 write("......fine prova").