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.

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!