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.5 File interni 441<br />

il quale opera la conversione di una stringa di caratteri in un reale. In sintesi, l’esempio in<br />

esame prevede la lettura del valore della stringa string, valore che viene rappresentato nella<br />

forma interna di rappresentazione dei reali ed associato alla variabile pigreco. <strong>Il</strong> prossimo<br />

esempio, invece, produce la conversione del valore della variabile intera ind in una stringa di<br />

cifre decimali e la sua successiva registrazione nella variabile str.<br />

CHARACTER(LEN=10) :: str<br />

INTEGER :: ind<br />

...<br />

ind = 31<br />

READ(str,’(I3)’) ind<br />

Un esempio appena più complesso, che fa uso di un file interno multirecord, è il seguente:<br />

PROGRAM prova_file_interni<br />

CHARACTER(5),DIMENSION(3) :: str<br />

INTEGER, DIMENSION(3,3) :: vet<br />

CHARACTER(12) :: fname<br />

! ...<br />

str = (/"1 2 3","4 5 6","7 8 9"/)<br />

! ...<br />

! La prossima list-directed READ esegue l’assegnazione:<br />

! |1 4 7|<br />

! vet=|2 5 8|<br />

! |3 6 9|<br />

READ(str,*) vet<br />

! <strong>Il</strong> prossimo formatted WRITE pone fname=’FM003.DAT’.<br />

WRITE (fname,200) vet(3,1)<br />

200 FORMAT (’FM’,I3.3,’.DAT’)<br />

! Viene connesso il file FM003.DAT per successive<br />

! operazioni di I/O<br />

OPEN(UNIT=11,FILE=fname,STATUS=’NEW’)<br />

! ...<br />

END PROGRAM prova_file_interni<br />

<strong>Il</strong> programma che segue, infine, rappresenta un ulteriore esempio di utilizzo dei file interni.<br />

Le operazioni eseguite sono assai semplici. Dapprima viene letta una stringa di cifre intervallate<br />

dal simbolo di dollaro. Quindi, ciascun carattere $ viene sostituito da uno spazio bianco,<br />

affinché la successiva operazione di lettura coinvolga soltanto cifre e punti decimali di modo che<br />

sia possibile assegnare, ordinatamente, i valori letti agli elementi di un array di tipo REAL.<br />

PROGRAM internal_file<br />

IMPLICIT NONE<br />

INTEGER :: k, error<br />

REAL, DIMENSION(10) :: money

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

Saved successfully!

Ooh no, something went wrong!