Вы можете прочитать каждую строку в символьной переменной и проверить ее скорректированную усеченную длину, если ваша единственная цель - пропустить пустую строку, что-то вроде следующего кода (см. Переменную record
). Выход за пределы этой простой реализации требует от вас дополнительной информации о том, какое именно поведение вы хотите получить.
implicit none
integer, parameter :: FUnitIn = 10
character(len=255) :: FNameIn = "./test.txt"
integer :: FStatOpen, FStatRead
integer :: yyyy, mm, dd
character(len=1023) :: record
open ( unit = FUnitIn, &
file = trim(FNameIn), &
access = "sequential", &
form = "formatted", &
status = "old", &
iostat = FStatOpen)
if (FStatOpen /= 0) then ! ERROR
stop
end if
do
read (FUnitIn, "(3I4)", iostat=FStatRead) record
if (FStatRead /= 0) then
exit
elseif ( len_trim(adjustl(record)) > 0 ) then
read (record, *) yyyy, mm, dd
write (6, "(3I4)") yyyy, mm, dd
end if
end do