program ricerca_file(input,output); {dichiaramo un nuovo tipo: alunno,che è un record composto da due campi:cognome e nome} type alunno=record cognome:varying[20] of char; nome:varying[20] of char; end; var alu:alunno; fil:varying[20] of char;f:file of alunno;{definiamo una variabile logica f che ci servirà per scrivere i dati nel file fisico} trovato,si,chiudi:char; cogn:varying[20] of char; begin trovato:="n"; si:="s"; chiudi:="s"; while ((si<>"N") and (si<>"n" )) do begin writeln("Su quale file vuoi cercare il tuo record?"); writeln("Scrivi il nome con estensione qui di seguito"); readln(fil); open(f,fil,history:=old,error:=continue);{assegnamo alla variabile f il file fisico} if status(f)>0 then begin writeln("Il nome del file inserito non esiste."); writeln("Vuoi provare a riscrivere il nome?(S/N)"); readln(si); end else begin while ((trovato<>"s") and (trovato<>"S") and (chiudi<>"n") and (chiudi<>"N")) do begin reset(f);{ci posizioniamo all'inizio del file} writeln("Quale cognome vuoi cercare?"); readln(cogn); while ((not eof(f)) and (trovato="n")) do begin read(f,alu); if (cogn=alu.cognome) then begin trovato:="s"; writeln("Il record è stato trovato:"); writeln(alu.cognome,",",alu.nome); end; end; if (trovato="n") then begin writeln("il record non è stato trovato."); writeln("Vuoi provare a riscrivere il cognome per cercarlo un'altra volta?(s/n)"); readln(chiudi); end; end; end; si:="n"; close(f);{chiudiamo il file fisico} end; end.