|
F90 standardizza il concetto, già noto come estensione F77, di
namelist I/O cioè la definizione di un raggruppamento di variabili che
possono essere lette/scritte con un unico comando da/a un file con un
formato libero, facilmente modificabile a mano.
Le namelist sono particolarmente utili, ad es., per leggere la configurazione di un programma. F90 permette anche l'I/O di tipi derivati o di loro membri denro le namelist, mentre non è permesso l'uso di variabili allocate dinamicamente. Attenzione, se si desidera che una namelist contenente variabili di tipo character e scritta da fortran possa essere riletta correttamente, essa deve essere scritta su un'unità di file aperta con la keyword DELIM='APOSTROPHE' (novità F90) che indica di delimitare le stringhe con singoli apici. Attenzione, la sintassi del file di namelist in F90 è cambiata rispetto ad alcune note estensioni F77, per cui ogni singolo blocco namelist comincia con i caratteri &<nome> dove nome è il nome della namelist, e termina con i caratteri /END. Tutto ciò che non rientra tra i delimitatori di namelist viene ignorato in lettura e può quindi essere usato come commento. Le variabili del gruppo namelist che non figurano nel file non vengono assegnate, per cui conservano il valore che avevano precedentemente alla READ. |
PROGRAM naml INTEGER :: nstaz, nobs(2) REAL :: a, b CHARACTER(LEN=10) :: rete NAMELIST /conf/nstaz,nobs,a,b,rete OPEN(10, FILE='conf.naml', STATUS='OLD') READ(10, NML=conf) CLOSE(10) nstaz = nstaz+100 rete = 'fidugoal' OPEN(10, FILE='conf_out.naml', STATUS='NEW', DELIM='APOSTROPHE') WRITE(10, NML=conf) CLOSE(10) END PROGRAM naml |