http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56007
--- Comment #3 from Tobias Schlüter <tobi at gcc dot gnu.org> 2013-01-22
12:56:26 UTC ---
Just for the fun of it, another confusing way this error message appears:
$ cat t3.f90
character c(5)
do c=2,3
end do
END
$ gfortran t3.f90
t3.f90:3.4:
do c=2,3
1
Error: Loop variable at (1) cannot be a sub-component
t3.f90:4.3:
end do
1
Error: Expecting END PROGRAM statement at (1)
$
Of course this behavior is expected once you look at the code.
Another related error message that's not really helpful:
$ cat t3.f90
real iw1(90) ! same for integer
do iw1(1)=1,2
end do
END
$ gfortran t3.f90
t3.f90:3:
do iw1(1)=1,2
1
Error: Unclassifiable statement at (1)
t3.f90:4.3:
end do
1
Error: Expecting END PROGRAM statement at (1)
tobi@tobias-schluters-computer src$
This latter error message is an artefact of fixed-form, where
doiw1(90)=1,2
cannot be distinguished from an assignment to an array-valued variable (though
it could catch that the variable is not declared).
Here's a fixed-form example showing the various possibilities that involve
arrays:
$ cat t3.f
integer iw1(90), doiw1(90)
do iw1(1)=1,2
end do
do iw1(1)=1
do iw1=1
do iw1=1,2
end do
END
$ gfortran t3.f
t3.f:2.9:
do iw1(1)=1,2
1
Error: Unclassifiable statement at (1)
t3.f:3.12:
end do
1
Error: Expecting END PROGRAM statement at (1)
t3.f:6.15:
do iw1=1,2
1
Error: Loop variable at (1) cannot be a sub-component
t3.f:7.12:
end do
1
Error: Expecting END PROGRAM statement at (1)
$