我是否正确理解了堡垒格式?

时间:2017-07-17 15:47:12

标签: fortran format gfortran fortran90

我正在尝试编译其他人的代码,但我不习惯使用fortran。在尝试编译时,我收到了错误

ForceToForce.f90:119.34:

     99 FORMAT(3(F15.10),X,3I)
                              1
Error: Nonnegative width required in format string at (1)
ForceToForce.f90:120.37:

     111 FORMAT(4(F15.10),X,2(3I))
                                 1
Error: Nonnegative width required in format string at (1)
ForceToForce.f90:153.60:

                       WRITE(399999,FMT=111)QPCOM(i,1),QPCOM(i
                                                        1
Error: FORMAT label 111 at (1) not defined

我做了一些研究,我明白你需要在我之后输入一个整数来计算所用位置的数量。所以我将行改为

111 FORMAT(4(F15.10),X,2(I3))

并且代码符合但却给我一个分段错误。因为这是我改变的唯一一件事,我认为我必须误解为假设使用FORMAT。还有什么我应该尝试的吗?

1 个答案:

答案 0 :(得分:0)

不,那是错的。 2(3I)指定六个整数。 2(I3)是两个整数,每个整数的宽度为3个字符。

Fortran标准要​​求为I​​编辑描述符指定非负宽度,因为明确在错误消息中说明。请参阅Error: Nonnegative width required in format string at (1)以前可能由英特尔Fortran编译的代码,该代码并未严格执行此限制。

所以,你的解决方案是错误的。你可以使用3I0,你应该没事,行为可能会保持完全相同。