25.06.2013 Views

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

424 Operazioni di I/O su file<br />

Chiaramente una successione di BACKSPACE consecutivi produce l’arretramento del corrispondente<br />

numero di record.<br />

Si noti, tuttavia, che questa operazione è molto onerosa in termini di risorse del processore,<br />

pertanto deve essere usata con molta parsimonia.<br />

L’istruzione REWIND<br />

REWIND([UNIT=]u[,IOSTAT=ios])<br />

in cui, come per BACKSPACE, u è una espressione intera il cui valore rappresenta una unità<br />

logica mentre ios è una variabile intera rappresentativa della riuscita o meno dell’operazione (i<br />

valori possibili per ios sono gli stessi visti per l’istruzione READ). Come sempre, l’ordine degli<br />

specificatori può essere alterato tranne nel caso in cui la parola chiave UNIT= sia assente, nel<br />

qual caso l’unità logica deve essere specificata per prima.<br />

L’effetto dell’istruzioneREWIND è quello di posizionare il file all’inizio del primo record del file<br />

associato all’unità logica ios . Naturalmente, se il file è già posizionato nel suo punto iniziale,<br />

l’istruzione REWIND non avrà alcun effetto. Contrariamente a quanto avviene con BACKSPACE, è<br />

possibile applicare l’istruzione REWIND anche ad un file non esistente o non connesso, senza che<br />

ciò abbia un qualche effetto.<br />

L’istruzione ENDFILE<br />

La fine di un file connesso per acceso sequenziale è normalmente contraddistinta da uno speciale<br />

record detto record di endfile. Tale record è automaticamente applicato dall’istruzione CLOSE<br />

oppure a seguito della normale terminazione del programma. La presenza di tale record può<br />

comunque essere assicurata mediante l’esecuzione dell’istruzioneENDFILE la quale ha la seguente<br />

forma:<br />

ENDFILE([UNIT=]u[,IOSTAT=ios])<br />

in cui, come di consueto, u è una espressione intera il cui valore rappresenta una unità logica<br />

mentre ios è una variabile intera rappresentativa dell’esito dell’operazione (i valori possibili<br />

per ios sono gli stessi che per l’istruzione READ). Come sempre, l’ordine degli specificatori può<br />

essere alterato tranne nel caso in cui la parola chiave UNIT= sia assente, nel qual caso l’unità<br />

logica deve essere specificata per prima.<br />

Se il file può essere connesso anche per accesso diretto, soltanto i record che precedono quello<br />

di endfile verranno considerati e soltanto essi, pertanto, verranno eventualmente processati in<br />

operazioni di I/O successive ad una connessione per accesso diretto.<br />

Si noti, in conclusione, che se un file è connesso ad un’unità logica ma non esiste esso verrà<br />

creato e su di esso verrà prodotto il record di endfile.<br />

8.3 Gestione dei file ad accesso sequenziale<br />

L’insieme delle istruzioni fin qui esaminate consente di gestire un file sequenziale in maniera<br />

assolutamente completa. E’ bene ricordare che il metodo di accesso di un file (sia esso sequen-

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!