我经过了Fortran指南并尝试了示例程序,查找了网络是否有错误,但似乎没有任何帮助。
我的程序如下:
program TYPE_CHECK
character(30), dimension(10) :: buff
integer, dimension(10) :: x
integer :: i
do i=1,10
x(i) = i
enddo
write(*, "(I3)") (x(j), j=1,10)
do j=1,10
write(buff(j), *)(x(j)),
* 'hi '
enddo
do j=1,10
write(*, 776) (buff(j))
776 format(' NO OF ',A20, '=')
enddo
end program TYPE_CHECK
上面的输出应如下:
1
2
3
4
5
6
7
8
9
10
NO OF 1 hi =
NO OF 2 hi =
NO OF 3 hi =
NO OF 4 hi =
NO OF 5 hi =
NO OF 6 hi =
NO OF 7 hi =
NO OF 8 hi =
NO OF 9 hi =
NO OF 10 hi =
但是给出以下错误:
myfoo2.F:12.30:
write(buff(j), *)(x(j)),
1
Error: Expected expression in WRITE statement at (1)
myfoo2.F:13.7:
* 'hi '
1
Error: Invalid character in name at (1)
您能告诉我我在哪里出错了。谢谢!
如果您在发布时一直小心,则此:
write(buff(j), *)(x(j)),
* 'hi '
是问题的根源。它的格式化不正确,固定形式源也不正确,也没有正确持续的自由形式源。我建议您确保您了解这些表格之间的区别,并且您符合自由形式源的要求。(好吧,如果您使用打孔卡为编译器准备源
更改您必须进行的
write(buff(j), *)(x(j)), &
'hi '
在固定形式的源中,持续特征在第6列中,该线路延续了未完成的表达。您的摘要显然不是固定形式,因为您的星号直接在write
中的w
下方,但是固定形式的源语句中的第7列开始。
在自由形式的源线中,通过将ampersand( &
)附加到继续的线的末端。
也许用" hi"
替换'hi'帮助我解决了类似的错误