2012-01-09 2 views
0

私はFORTRANの初心者です。私はインテルFORTRANで書かれたいくつかのFORTRANプログラムを持っており、今はgfortranを使ってコンパイルしています。FORTRANエラー - 'jfix'への未定義の参照

サブルーチンの1つに、JFIX()関数が使用されています。コンパイルすると、次のエラーがスローされます。

undefined reference to 'jfix_' 

サブルーチンは、誰も私がこれを解決するのに役立つことができますExternal::JFIX

などの上に、この組み込み関数への参照を持っていますか?

+0

ちょっとしたことがありますが、組み込み関数は 'external :: jfix'(例えば)宣言を必要としません。 'external'ステートメントは、プログラムやモジュールの外部で定義されたルーチンを参照するために使用されます。多くの場合、ライブラリに含まれるルーチンを参照するために使用されます。だから、私の推測は(答えに記載されているように)、 'JFIX'はIntelによって書かれた拡張ライブラリの一部です。 – Chris

答えて

2

JFIXはFORTRANのIntel拡張です。引数をINTEGER(4)に変換します。

GNU FORTRANに相当するものがあるかもしれません。あるいは、あなた自身で提供しなければならないかもしれません。

インテルFortranランゲージリファレンスは、Web上のさまざまな場所から入手できます。ここにはoneがあります。

+0

ありがとう、私はJFIX()の同等の関数を見つけました。私の場合はINT(A)を使用しなければなりませんでした。 –

0

JFIXは必要なものかもしれませんが、JFIXは実数を整数に変換するだけでなく、他のすべての種類のものを整数に変換するので注意してください。インテルFortranリファレンスから

hereを発見し、それは、(8)(1)、INTEGER(2)、INTEGER(4)、INTEGER(8)、REAL (4)、REAL

INTEGERに変換します

INTEGER(4)

にREAL(16)、COMPLEX(4)、 COMPLEX(8)、COMPLEX(16)

ちょうどあなたと将来の読者に言いました:それはですがあなたのケースではINTと同等です。ここではnどこにでもある。

Fortranを初めて使い慣れたので、括弧の間の数字は変数の精度の種類です。たとえば、REAL(4)は従来のアーキテクチャREAL(8)の倍精度では単純精度です。