25.06.2013 Views

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

• la lista di ingresso o di uscita è assente;<br />

• l’identificatore di formato ([FMT=]formato ) è rimpiazzato dal nome della lista secondo<br />

la sintassi:<br />

[NML=]nome_della_lista<br />

Così, ad esempio, l’istruzione:<br />

WRITE(*,NML=gruppo)<br />

invierà al dispositivo di uscita standard i valori di tutte le variabili facenti parte della lista con<br />

nome gruppo, nell’ordine in cui, in fase dichiarativa, sono state inserite nella lista. L’output<br />

prodotto ha la seguente forma:<br />

• <strong>Il</strong> primo carattere prodotto è un ampersand (&), opzionalmente preceduto da un certo<br />

numero di caratteri vuoti ed immediatamente seguito dal nome del gruppo NAMELIST.<br />

Detto nome apparirà scritto sempre in maiuscolo.<br />

• Per ogni variabile del gruppoNAMELIST verrà prodotta la coppianome -valore separati da<br />

un segno di uguaglianza. <strong>Il</strong> segno = può essere opzionalmente preceduto o seguito da uno<br />

o più spazi bianchi. <strong>Il</strong> formato di uscita dei dati è identico a quello che si avrebbe nel caso<br />

di output guidato da lista. Se una delle variabili è un array, il segno di uguaglianza sarà<br />

seguito dalla lista dei valori corrispondenti, ordinatamente, agli elementi dell’array. Se<br />

due o più valori consecutivi sono identici, il processore può scegliere di rappresentarli nella<br />

forma sintetica r*valore in cui valore è il valore da rappresentare mentrer rappresenta<br />

il numero di ripetizioni. I valori della lista possono essere, opzionalmente, seguiti da una<br />

virgola.<br />

• L’ultimo carattere prodotto è uno slash (/).<br />

Nel seguente esempio vengono dichiarate un certo numero di variabili e inserite all’interno<br />

di una gruppo NAMELIST, successivamente vengono inizializzate e infine riprodotte a video (o<br />

comunque inviate al dispositivo standard di uscita):<br />

INTEGER :: int1, int2, int3 INTEGER, DIMENSION(3) :: array LOGICAL<br />

:: log REAL(KIND=single) :: real1 REAL(KIND=double) :: real2 COMPLEX<br />

:: z1, z2 CHARACTER(LEN=1) :: char1 CHARACTER(LEN=10) :: char2<br />

NAMELIST /esempio/ int1,int2,int3,log1,real1,real2 &<br />

& z1,z2,char1,char2,array<br />

int1 = 11 int2 = 12 int3 = 14 log1 = .TRUE. real1 = 24.0 real2 =<br />

28.0d0 z1 = (38.0,0.0) z2 = 2.0*z1 char1 = ’A’ char2 =<br />

’0123456789’ array = (/41,42,43/) WRITE (*,esempio)<br />

Un possibile output potrebbe essere il seguente:

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

Saved successfully!

Ooh no, something went wrong!