我已经定义了一个代码模块(一个 Fortran F90 文件)并为它提供了这两个子例程:
pure Subroutine XRotation (x, y, z, Xrot, xp, yp, zp)
! Rotate about X-axis through the angle Xrot
real*4, INTENT(IN) :: x, y, z, xrot
real*4, INTENT(OUT) :: xp, yp, zp
real*4 xrad
Xrad = Xrot * 3.141592627 / 180 ! Convert to radians
yp = y * COS(Xrad) + z * SIN(Xrad)
xp = x
zp = z * COS(Xrad) - y * SIN(Xrad)
END
Pure Subroutine DummyDummy()
Call XRotation(1,2,3,4,5,6,7)
End Subroutine
编译器(英特尔 Fortran 12,针对 32 位 Windows,无论其价值如何)返回一条错误消息:
错误 #7137:PURE 过程中引用的任何过程,包括通过定义的操作或赋值引用的过程,都必须显式声明为 PURE。[XROTATION]
我有点难过。如何更改此代码以便 PURE 子例程“DummyDummy”编译?