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.

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

NAMELIST/lista1/m,n,impiegato<br />

! ...<br />

impiegato = persona(20,4,’John Smith’)<br />

! ...<br />

OPEN(UNIT=7,FILE=’dati.dat’)<br />

READ(UNIT=7,NML=lista1)<br />

! ...<br />

END PROGRAM prova_namelist<br />

In questo breve programma di prova vengono dichiarate due variabili intere, m ed n ed una<br />

struttura, impiegato e tutte e tre vengono inserite nella lista con nome lista1. L’oggetto di<br />

tipo derivato, impiegato, viene inizializzato, dopodiché all’unità logica 7 viene connesso il file<br />

dati.dat nel quale vengono letti i valori di alcune (o tutte) le variabili della lista. Un valido<br />

esempio per il file dati.dat potrebbe essere:<br />

&LISTA1<br />

m = 3<br />

n = 12<br />

smith%level = 6<br />

/<br />

nel qual caso, della struttura impiegato, soltanto il valore della componente level verrebbe<br />

aggiornato mentre le componenti matr e name resterebbero inalterate.<br />

Una utile innovazione apportata dal <strong>Fortran</strong> <strong>95</strong> riguarda la possibilità di documentare linea<br />

per linea i record di input per NAMELIST con opportuni commenti. Questi commenti vanno<br />

inseriti così come si farebbe nel codice sorgente, ossia come stringhe precedute da un punto<br />

esclamativo. Pertanto, ritornando all’esempio precedente, un file di input meglio documentato<br />

e più autoesplicativo potrebbe essere:<br />

&LISTA1<br />

m = 3 ! numero di figli<br />

n = 12 ! anni di servizio<br />

smith%level = 6<br />

/<br />

8.4 Gestione dei file ad accesso diretto<br />

Esistono molte situazioni, come l’interrogazione di un database, in cui risulta più efficiente<br />

effettuare operazioni di lettura/scrittura di record in maniera non sequenziale ma casuale. Ciò<br />

può ottenersi connettendo il file di lavoro ad accesso diretto, ossia specificando la clausola<br />

ACCESS=’DIRECT’ nella lista degli specificatori di OPEN.<br />

I record in un file connesso ad accesso diretto si caratterizzano per il fatto che possono<br />

essere letti e scritti in qualsiasi ordine. Tuttavia, un vincolo che deve essere rispettato consiste<br />

nel fatto che i record del file devono avere tutti la stessa lunghezza specificata dalla clausola

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

Saved successfully!

Ooh no, something went wrong!