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.

4.9 Istruzioni di I/O con meccanismo namelist 211<br />

le variabili char1 e char2 sarebbero state riprodotte come:<br />

CHAR1 = "A" CHAR2 = "0123456789"<br />

Le operazioni di ingresso con NAMELIST avvengono in maniera molto simile a quanto visto<br />

per il meccanismo di uscita. La differenza sostanziale rispetto al caso precedente, tuttavia,<br />

è rappresentata dal fatto che l’utente non ha l’obbligo di inserire i valori di tutte le variabili<br />

della lista, in tal caso i valori delle variabili non introdotte resterà inalterato. Dunque, nelle<br />

operazioni di lettura vengono definiti soltanto gli oggetti specificati nel file di input mentre<br />

tutti gli eventuali altri elementi della lista restano nel loro preesistente stato di definizione (o,<br />

eventualmente, restano indefiniti). Allo stesso modo, è possibile definire il valore di un elemento<br />

di array o di un suo sottoinsieme senza alterare il valore delle altre porzioni dell’array. E’ anche<br />

possibile inserire due o più volte il valore di una stessa variabile, con il risultato che il valore<br />

effettivamente attribuito alla variabile sarà l’ultimo introdotto. Nel caso di input di valori<br />

complessi o di tipo definito dall’utente è importante che il numero delle componenti introdotte<br />

non superi quello previsto per il tipo in esame (sebbene esso possa essere minore con il solito<br />

risultato che il valore delle componenti non introdotte resta inalterato).<br />

Per quanto concerne il formato dei dati da introdurre in input e le regole di scrittura valgono,<br />

fatta salva qualche eccezione, le stesse considerazioni svolte a proposito dell’uso di NAMELIST<br />

nelle operazioni di uscita. Si ha, pertanto, quanto segue:<br />

• <strong>Il</strong> primo carattere da introdurre deve essere un ampersand (&) immediatamente seguito dal<br />

nome della lista (senza blank interposti). Detto nome può essere scritto indifferentemente<br />

in caratteri maiuscoli o minuscoli.<br />

• Per ogni variabile della lista deve essere riprodotta la coppianome -valore . Non ha, tuttavia,<br />

importanza l’ordine con cui si inseriscono le coppie nome -valore né ha importanza<br />

il modo con cui le coppie vengono separate, potendo scegliere indifferentemente come<br />

separatori virgole o spazi bianchi, così come è possibile anche disporle su righe differenti.<br />

• L’ultimo carattere da introdurre deve essere il carattere slash (/).<br />

Si noti che, contrariamente a quanto avviene con le istruzioni di uscita, in fase di lettura gli<br />

oggetti stringa di caratteri devono essere delimitati da apici (indifferentemente singoli o doppi).<br />

Un esempio di input con NAMELIST può essere il seguente:<br />

INTEGER :: a, b CHARACTER(LEN=10) str NAMELIST /mynml/ a, b, str<br />

...<br />

READ(*,NML=mynml)<br />

e tutte le seguenti possibilità rappresentano valide alternative per l’inserimento dei dati:<br />

&mynml a=1, b=3, str="tutto ok"\<br />

&MYNML a=1 b=3 str="tutto ok" \<br />

&mynml str="tutto ok" b=3 a=1\

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

Saved successfully!

Ooh no, something went wrong!