我是否正确理解了 fortran 格式?
Have I understood the fortran FORMAT properly?
我正在尝试编译别人的代码,但我不习惯使用 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
我做了一些研究,我知道你需要在 I 后面放一个整数来确定使用的位置数。所以我将行更改为
111 FORMAT(4(F15.10),X,2(I3))
并且代码符合要求,但给我一个分段错误。因为这是我唯一改变的地方,所以我想我一定误解了 FORMAT 应该如何使用。还有什么我应该尝试的吗?
不,那是错误的。 2(3I)
指定六个整数。 2(I3)
是两个整数,每个整数的宽度为 3 个字符。
Fortran 标准要求为 I 编辑描述符指定非负宽度,如错误消息中明确所述。参见Error: Nonnegative width required in format string at (1)以前的代码很可能是Intel Fortran编译的,并没有严格执行这个限制。
所以,你的解决方案是错误的。您可以使用 3I0
并且应该没问题,并且行为可能会保持完全相同。
我正在尝试编译别人的代码,但我不习惯使用 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
我做了一些研究,我知道你需要在 I 后面放一个整数来确定使用的位置数。所以我将行更改为
111 FORMAT(4(F15.10),X,2(I3))
并且代码符合要求,但给我一个分段错误。因为这是我唯一改变的地方,所以我想我一定误解了 FORMAT 应该如何使用。还有什么我应该尝试的吗?
不,那是错误的。 2(3I)
指定六个整数。 2(I3)
是两个整数,每个整数的宽度为 3 个字符。
Fortran 标准要求为 I 编辑描述符指定非负宽度,如错误消息中明确所述。参见Error: Nonnegative width required in format string at (1)以前的代码很可能是Intel Fortran编译的,并没有严格执行这个限制。
所以,你的解决方案是错误的。您可以使用 3I0
并且应该没问题,并且行为可能会保持完全相同。