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 427<br />

IMPLICIT NONE<br />

INTEGER, PARAMETER :: end_of_file = -1<br />

INTEGER, PARAMETER :: end_of_record = -2<br />

! Att.ne: I valori precedenti sono, in generale,<br />

! processor-dependent<br />

CHARACTER(LEN=1) :: c<br />

INTEGER :: count, ios<br />

! Start<br />

OPEN(UNIT=11,FILE="miofile.txt",STATUS="OLD",ACTION="READ")<br />

count = 0<br />

DO<br />

READ(UNIT=11,FMT="(A)",ADVANCE="NO",IOSTAT=ios) c<br />

IF (ios==end_of_record) THEN<br />

CYCLE<br />

ELSE IF(ios==end_of_file) THEN<br />

EXIT<br />

ELSE<br />

count = count+1<br />

END IF<br />

END DO<br />

PRINT*, "<strong>Il</strong> numero di caratteri nell file e’: ",count<br />

END PROGRAM char_count<br />

Un ulteriore esempio, che gestisce in forma più completa eventuali condizioni di errore, è<br />

il seguente:<br />

PROGRAM prova_lettura<br />

!<br />

! Scopo: leggere da file gli elementi di un array monodimensionale<br />

! e stamparne i valori a video<br />

!<br />

IMPLICIT NONE<br />

INTEGER , DIMENSION(10) :: a=0<br />

INTEGER :: IO_stat_number=0<br />

INTEGER :: i<br />

OPEN(UNIT=1,FILE=’dati.dat’,STATUS=’OLD’,ACTION=’READ’)<br />

DO i=1,10<br />

READ(UNIT=1,FMT=10,IOSTAT=IO_stat_number) a(i)<br />

10 FORMAT(I3)<br />

IF (IO_stat_number==0) THEN<br />

CYCLE<br />

ELSE IF (IO_stat_number==-1) THEN<br />

PRINT*," End-of-file raggiunto alla linea ",i<br />

PRINT*," Controllare il file di input! "

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

Saved successfully!

Ooh no, something went wrong!