我正在尝试编译其他人的代码,但我不习惯使用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。还有什么我应该尝试的吗?
答案 0 :(得分:0)
不,那是错的。 2(3I)
指定六个整数。 2(I3)
是两个整数,每个整数的宽度为3个字符。
Fortran标准要求为I编辑描述符指定非负宽度,因为明确在错误消息中说明。请参阅Error: Nonnegative width required in format string at (1)以前可能由英特尔Fortran编译的代码,该代码并未严格执行此限制。
所以,你的解决方案是错误的。你可以使用3I0
,你应该没事,行为可能会保持完全相同。