25.06.2013 Views

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

8.2 Le specifiche di I/O 415<br />

oppure il numero di caratteri dei record formattati. Per file ad accesso diretto questo<br />

specificatore specifica la lunghezza dei record ed è obbligatorio. Per file ad accesso sequenziale<br />

esso è opzionale e specifica la lunghezza massima per un record, con un valore<br />

di default che dipende dal processore.<br />

Un esempio di istruzione OPEN è il seguente:<br />

OPEN(UNIT=11,IOSTAT=ios,FILE=’archivio’,STATUS=’NEW’, &<br />

ACCESS=’DIRECT’,RECL=100)<br />

Un’operazione perfettamente equivalente è realizzata dalle seguenti istruzioni:<br />

k = 5<br />

dim = 100<br />

filename = "archivio"<br />

OPEN(UNIT=2*k+1,IOSTAT=ios,FILE=filename,STATUS=’NEW’, &<br />

ACCESS=’DIRECT’,RECL=dim)<br />

In entrambi i casi si ha l’effetto di creare un file ad accesso diretto, non formattato, con nome<br />

esterno archivio, caratterizzato da record di lunghezza 100. <strong>Il</strong> file così creato è connesso<br />

all’unità logica 11. Un eventuale fallimento nella connessione del file può essere rilevato dal<br />

valore della variabile intera ios (che, nel caso, assumerebbe valore positivo dipendente dal<br />

processore) e, pertanto, non provocherà un arresto del sistema. La clausola IOSTAT= può<br />

tornare molto utile al fine di evitare di riscrivere su un file già esistente:<br />

OPEN(UNIT=ilun,FILE=infile,FORM=’FORMATTED’, &<br />

ACCESS=’SEQUENTIAL’, STATUS=’NEW’,IOSTAT=rstat)<br />

IF(rstat/=0) THEN<br />

PRINT*, "Errore durante l’apertura del file: ", infile<br />

PRINT*, "Assicurarsi che il file non esista gia’!"<br />

END IF<br />

Si noti che uno stesso file non può risultare connesso contemporaneamente a due distinte<br />

unità logiche. Nulla vieta, però, che un file possa essere riconnesso alla stessa o ad un’altra<br />

unità dopo essere stato sconnesso.<br />

8.2.2 Sconnessione di un file<br />

Al termine dell’esecuzione di un programma ogni file che sia stato connesso viene automaticamente<br />

sconnesso (”chiuso”). Se, tuttavia, si desidera operare tale sconnessione prima della<br />

fine del programma, ad esempio per riconnettere quel file ad altra unità, è possibile utilizzare<br />

l’istruzione CLOSE la cui sintassi è:<br />

CLOSE([UNIT=]u[,IOSTAT=ios][,STATUS=st])<br />

in cui gli specificatori possono apparire in qualsiasi ordine, a meno che la parola chiave UNIT=<br />

non sia assente, nel qual caso l’unità logica u deve essere specificata per prima.<br />

Di seguito viene elencato il significato di ciascuno specificatore.

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

Saved successfully!

Ooh no, something went wrong!