福特兰"Error:Expected expression in WRITE statement"



我经过了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'

帮助我解决了类似的错误

最新更新