Rozumiem, że Fortran, odczytując dane z pliku, pominie wiersze rozpoczynające się od i gwiazdkę (*), zakładając, że są komentarzem. Wydaje mi się, że mam problem z osiągnięciem tego zachowania za pomocą bardzo prostego programu, który stworzyłem. To jest mój prosty Fortran Program:Czytanie wierszy komentarza poprawnie w pliku wejściowym przy użyciu Fortran 90
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
to "file.inp":
1 *Hello
2 1
zbudowałem mój prosty program z
gfortran -g -o test test.f90
Kiedy biegnę, pojawia się błąd :
At line 7 of file test.f90 (unit = 1, file = 'file.inp')
Fortran runtime error: Bad integer for item 1 in list input
Po uruchomieniu pliku wejściowego wi z usuniętą linią komentarza, tj .:
1 1
Kod działa poprawnie. Tak więc wydaje się, że jest to problem z prawidłowym interpretowaniem tej linii komentarza przez Fortran. To musi być coś niezwykle prostego, czego tu brakuje, ale nie mogę znaleźć niczego w google.
Tak, właśnie to wymyśliłem i wróciłem, aby opublikować moje rozwiązanie. Jednak twój kod jest nieco mądrzejszy niż rozwiązanie, które wymyśliłem (używałem opcji "end =" dla mojego odczytu). Jedną z rzeczy, których nie rozumiem, jest potrzeba używania "iso_fortran_env"? Przepraszam, napisałem kilka dużych programów Fortran i sprawiłem, że działają, ale jestem trochę noob, jeśli chodzi o wewnętrzne moduły i to, co przynoszą do stołu. – rks171
Między innymi iso_fortran_env udostępnia wartość "isostat_end", aby sprawdzić, czy niezerowy kod powrotu jest końcem pliku. Pozwala to na użycie konstruktu "exit" zamiast etykiet instrukcji, jak w przypadku "end = LineNumber". –