Правильное чтение строк комментариев во входном файле с использованием Fortran 90

Я понимаю, что Fortran при чтении данных из файла пропустит строки, начинающиеся с и звездочку (*), считая, что они являются комментарием. Ну, похоже, у меня возникла проблема с достижением такого поведения с помощью очень простой программы, которую я создал. Это моя простая программа Fortran:

1 program test 2 3 integer dat1 4 5 open(unit=1,file="file.inp") 6 7 read(1,*) dat1 8 9 10 end program test 

Это файл file.inp:

  1 *Hello 2 1 

Я построил свою простую программу с помощью

 gfortran -g -o test test.f90 

Когда я бегу, я получаю ошибку:

 At line 7 of file test.f90 (unit = 1, file = 'file.inp') Fortran runtime error: Bad integer for item 1 in list input 

Когда я запускаю входной файл с удаленной строкой комментария, то есть:

 1 1 

Код работает нормально. Поэтому, кажется, проблема в том, что Fortran правильно интерпретирует эту строку комментариев. Это должно быть что-то чрезвычайно простое, я здесь отсутствует, но я не могу ничего добавить в Google.

Fortran автоматически не пропускает строки комментариев во входных файлах. Вы можете сделать это достаточно легко, сначала прочитав строку в строке, проверив первый символ для символа комментария или выполнив поиск строки для этого символа, а затем, если строка не является комментарием, выполните «внутреннее чтение» строки в получить числовое значение.

Что-то вроде:

 use, intrinsic :: iso_fortran_env character (len=200) :: line integer :: dat1, RetCode read_loop: do read (1, '(A)', isostat=RetCode) line if ( RetCode == iostat_end) exit ReadLoop if ( RetCode /= 0 ) then ... read error exit read_loop end if if ( index (line, "*") /= 0 ) cycle read_loop read (line, *) dat1 end do read_loop 

Fortran не игнорирует ничего по умолчанию, если только вы не используете налисты, и в этом случае комментарии начинаются с восклицательного знака.

Давайте будем гением компьютера.