0

コード モジュール (Fortran F90 ファイル) を定義し、次の 2 つのサブルーチンを提供しました。

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

コンパイラ (Intel Fortran 12、32 ビット Windows を対象とするものは何でも) は、1 つのエラー メッセージを返します。

error #7137: PURE プロシージャで参照されるすべてのプロシージャ (定義された操作または代入を介して参照されるものを含む) は、PURE を明示的に宣言する必要があります。【エクスローテーション】

私は少し困惑しています。PURE サブルーチン「DummyDummy」がコンパイルされるように、このコードを変更するにはどうすればよいですか?

4

1 に答える 1

1

Fortran 90 についてはよくわかりませんが (私の時代など)、それをモジュールに配置すると機能します。さまざまな「最新の」fortran 機能にはモジュールが必要であるという印象を受けます。

とにかく、私よりも賢い(または若い?)誰かが説明できますが、それはあなたが続けるのに役立つはずです.

module foo
  implicit none
contains

  pure Subroutine XRotation (x, y, z, Xrot, xp, yp, zp)
  ....

end module foo

ああ、ここに説明があります(回答を参照してください)-gfortranを使用してFortran 90で純粋なサブルーチンを記述および呼び出します

ps float 引数に整数を渡すと、型の警告も表示されます。

于 2012-03-23T00:50:50.350 に答える