Вот два метода.Я отказываюсь преподавать устаревший Фортран 77, который не должен был использоваться или обучаться в течение 25 лет +, но первый метод должен работать в любой версии Фортрана, начиная с 77
Метод 1:
ijb@ianbushdesktop ~/stackoverflow $ cat data.dat
1
2
3
ijb@ianbushdesktop ~/stackoverflow $ cat end.f90
Program eof
Implicit None
Integer :: data
Open( 10, file = 'data.dat' )
Do
Read( 10, *, End = 1 ) data
Write( *, * ) data
End Do
1 Write( *, * ) 'Hit EOF'
End Program eof
ijb@ianbushdesktop ~/stackoverflow $ gfortran -std=f2003 -Wall -Wextra -O -fcheck=all end.f90
ijb@ianbushdesktop ~/stackoverflow $ ./a.out
1
2
3
Hit EOF
Метод 2:
Это требует F2003, но это то, что вы должны использовать в эти дни
ijb@ianbushdesktop ~/stackoverflow $ cat data.dat
1
2
3
ijb@ianbushdesktop ~/stackoverflow $ cat end2.f90
Program eof
Use, intrinsic :: iso_fortran_env, Only : iostat_end
Implicit None
Integer :: data, error
Open( 10, file = 'data.dat' )
Do
Read( 10, *, iostat = error ) data
Select Case( error )
Case( 0 )
Write( *, * ) data
Case( iostat_end )
Exit
Case Default
Write( *, * ) 'Error in reading file'
Stop
End Select
End Do
Write( *, * ) 'Hit EOF'
End Program eof
ijb@ianbushdesktop ~/stackoverflow $ gfortran -std=f2003 -Wall -Wextra -O -fcheck=all end2.f90
ijb@ianbushdesktop ~/stackoverflow $ ./a.out
1
2
3
Hit EOF