EXTERNAL 文の FORTRAN-66 解釈

FORTRAN-66 文脈を指示するコンパイラ・オプション /f66 を指定した場合,EXTERNAL 文は FORTRAN IV (FORTRAN-66) 標準で定められていた方法で解釈されます。この解釈には,FORTRAN 77 とそれ以降のリビジョンの Fortran 標準との互換性はありません。

EXTERNAL 文の FORTRAN-66 解釈は,INTRINSIC 文の機能を,EXTERNAL 文の機能と組み合わせたものです。

これを使用すると,副プログラムを他の副プログラムの引数として使用することができます。引数として使用する副プログラムは,ユーザー提供関数と Fortran 95/90 ライブラリー関数のどちらであってもかまいません。

FORTRAN-66 の EXTERNAL 文は,次の形式を取ります。

EXTERNAL [*]v [, [*]v] ...

*
同じ名前の Fortran 95/90 ライブラリー関数の代わりに,ユーザー提供関数を使用することを指定。

v
副プログラムの名前,または副プログラムの名前に結合された仮引数の名前。

規則と振る舞い

FORTRAN-66 の EXTERNAL 文は,その並び中のすべての名前が外部関数名であることを宣言します。このような名前は,副プログラムへの実引数として使用することができ,副プログラムは対応する仮引数を関数引用または CALL 文中で使用することができます。

ただし,引数として使用された場合,完全な関数引用は副プログラム名ではなく値を表します。たとえば,CALL SUBR(A, SQRT(B), C) 中の SQRT(B) などです。つまり,これは (不完全な引用の SQRT のように) EXTERNAL 文で定義されているわけではありません。

次の例は,FORTRAN-66 の EXTERNAL 文を示しています。

	主プログラム				副プログラム
	EXTERNAL SIN, COS, *TAN, SINDEG 	SUBROUTINE TRIG(X,F,Y)
	   .					Y = F(X)
	   .					RETURN
	   .					END
	CALL TRIG(ANGLE, SIN, SINE)
	   .
	   .					FUNCTION TAN(X)
	   .					TAN = SIN(X)/COS(X)
	CALL TRIG(ANGLE, COS, COSINE)		RETURN
	   .					END
	   .
	   .
	CALL TRIG(ANGLE, TAN, TANGNT)		FUNCTION SINDEG(X)
	   .					SINDEG = SIN(X*3.1459/180)
	   .					RETURN
	   .					END
	CALL TRIG(ANGLED, SINDEG, SINE)

CALL 文は,関数の名前をサブルーチン TRIG に渡します。後に,関数引用 F(X) は,TRIG の第 2 の文で関数を呼び出します。TRIG を呼び出したのがどの CALL 文だったかによって,第 2 の文は以下のいずれかと等価になります。

	Y = SIN(X)
	Y = COS(X)
	Y = TAN(X)
	Y = SINDEG(X)

関数 SINCOS は,Fortran 95/90 ライブラリーに用意されている三角関数の例です。関数 TAN もライブラリーに用意されていますが,EXTERNAL 文中の星印 (*) は,ライブラリー関数ではなくユーザー提供関数を使用することを指定しています。関数 SINDEG もユーザー提供関数です。同じ名前のライブラリー関数は存在しないため,星印は不要です。