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.3 Gestione dei file ad accesso sequenziale 433<br />

WRITE(11,’(A1)’,ADVANCE=’NO’) "-"<br />

DO i=7,9<br />

WRITE(11,’(I1)’,ADVANCE=’NO’) vet(i)<br />

END DO<br />

WRITE(11,’(A1)’,ADVANCE=’NO’) "-"<br />

il quale produce, sul file connesso all’unità logica 11, il record 123-00-9886.<br />

8.3.2 I/O con meccanismo namelist<br />

Le istruzioni di I/O con meccanismo namelist servono a trasferire, con la medesima istruzione,<br />

un intero gruppo di variabili senza l’obbligo di curare il formato e la modalità di presentazione.<br />

Affinché ciò sia possibile è necessario che le suddette variabili siano specificate in una opportuna<br />

lista dichiarate con una istruzione NAMELIST.<br />

Le operazioni di I/O con meccanismo namelist sono utili per inizializzare lo stesso gruppo<br />

di variabili in sessioni successive di uno stesso run o anche per cambiare, in maniera selettiva,<br />

il valore di alcune variabili a cui sia stato già assegnato un valore iniziale.<br />

I dettagli relativi all’istruzione NAMELIST sono stati già discussi nel capitolo 4 dove è stato<br />

illustrato anche il funzionamento delle istruzioni di lettura e scrittura con meccanismo namelist<br />

relativi ai dispositivi di I/O standard. Tutto quanto detto nel capitolo 4 si applica anche in<br />

relazione alla gestione dei file esterni. Può risultare utile, tuttavia, riportare la sintassi delle<br />

operazioni di connessione e di lettura/scrittura di un file ad accesso sequenziale per operazioni<br />

di I/O di tipo namelist:<br />

OPEN([UNIT=]u,FILE=fln[,ACCESS=’SEQUENTIAL’][,IOSTAT=ios] &<br />

[,STATUS=st][,ACTION=act][,DELIM=del][,PAD=pad] &<br />

[,POSITION=pos])<br />

READ([UNIT=]u,[NML=]list[,IOSTAT=ios])<br />

WRITE([UNIT=]u,[NML=]list[,IOSTAT=ios])<br />

Si noti l’assenza, nelle istruzioni READ e WRITE, della clausola relativa al formato (FORMAT=) e<br />

quella relativa all’avanzamento (ADVANCE), entrambe incompatibili con lo specificatore NML.<br />

Tanto per fissare le idee, si può considerare il seguente esempio:<br />

PROGRAM prova_namelist<br />

IMPLICIT NONE<br />

INTEGER :: m, n<br />

TYPE persona<br />

INTEGER :: matr<br />

INTEGER :: level<br />

CHARACTER(20) :: name<br />

END TYPE persona<br />

TYPE(persona) :: impiegato

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

Saved successfully!

Ooh no, something went wrong!