Statement Function (文関数)

:手続が引用されている同じプログラム単位で 1 つの文で関数を定義します。

形式

fun ([d-arg [, d-arg] ...]) = expr

fun
文関数名。

d-arg
仮引数。1 つの仮引数は,仮引数並びに 1 回しか宣言することができず,その有効範囲は文関数に対して局所的となります。

expr
実行する計算を定義するスカラ式。

式で使用される名前付き定数と変数は,有効域の宣言部で事前に宣言されているか,参照または親子結合によって参照可能になっていなくてはなりません。

式が関数引用を含んでいる場合,その関数は同じプログラム単位で事前に定義されていなくてはなりません。

文関数引用は次の形式を取ります。

fun ([a-arg [, a-arg] ...])

fun
文関数名。

a-arg
実引数。

規則と振る舞い

式に文関数引用が現れると,実引数の値が文関数定義の仮引数に結合されます。その後,定義中の式が評価されます。結果として得られた値は,関数引用を含んでいる式の評価を完了するために使用されます。

文関数のデータ型は,型宣言文で明示的に定義することができます。型が指定されていない場合,そのプログラム単位で有効になっている暗黙の型付け規則によって決定されます。

実引数は,対応する仮引数と,その数,順序,およびデータ型が一致していなくてはなりません。

データ型を除き,言語要素に結合された宣言情報は,文関数の仮引数には結合されません。たとえば,言語要素を配列として,または共通ブロック中にあるものとして宣言しても,同じ名前の仮引数には影響はありません。

文関数名は,同じプログラム単位の他の言語要素と同じであってはなりません。

文関数に対する引用は,その関数の定義が置かれているのと同じプログラム単位になくてはなりません。

文関数引用は,式として (または式の一部として) 指定されていなくてはなりません。引用を代入文の左辺に置くことはできません。

文関数を手続引数として使用することはできません。

互換性

CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB

関連情報

FUNCTION参照結合と親子結合引数結合

以下に文関数の例を示します。

	REAL VOLUME, RADIUS
	VOLUME(RADIUS) = 4.189*RADIUS**3

	CHARACTER*10 CSF,A,B
	CSF(A,B) = A(6:10)//B(1:5)

次の例は,文関数とそれに対する引用を示しています。

	AVG(A,B,C) = (A+B+C)/3.
	...
	GRADE = AVG(TEST1,TEST2,XLAB)
	IF (AVG(P,D,Q) .LT. AVG(X,Y,Z)) STOP
	FINAL = AVG(TEST3,TEST4,LAB2)	! 無効な引用。3 番目の引数
	...				! の暗黙の型が仮引数の暗黙
	...				! の型に一致していません。

すべての引数が明示的な型であれば,暗黙の型付け問題は回避することができます。

次の文関数定義は,仮引数として使用することが不可能な定数を含んでいるので無効です。

	REAL COMP, C, D, E
	COMP(C,D,E,3.) = (C + D - E)/3.

以下に他の例を示します。

	Add (a, b) = a + b
	REAL(4) y, x(6)
	. . .
	DO n = 2, 6
	  x(n) = Add (y, x(n-1))
	END DO