内部手続

内部手続は,プログラム単位の CONTAINS 文の次にくる関数またはサブルーチンです。内部手続が現れるプログラム単位は,その親プログラムと呼ばれます。

内部手続は,主プログラム,外部副プログラム,またはモジュール副プログラムに入れることができます。

内部手続は次の形式を取ります。

CONTAINS

internal-subprogram
[internal-subprogram] ...

internal-subprogram
手続を定義する関数またはサブルーチン副プログラム。内部副プログラムは他の内部副プログラムを含むことはできません。

規則と振る舞い

内部手続は,以下の点を除けば,外部手続と同じです。

内部手続は自分自身を (直接または間接に) 引用することができます。内部手続は,その親プログラムの実行部で,および同じ親プログラムに含まれている任意の内部手続 (自分自身を含む) の実行部で引用することができます。

内部手続のインタフェースはつねに明示的です。

次の例は内部手続を示しています。

	PROGRAM COLOR_GUIDE
	...
	CONTAINS
	  FUNCTION HUE(BLUE)	! 内部手続
	  ...
	  END FUNCTION HUE
	END PROGRAM

以下の例は,内部サブルーチン find を含んでいます。このサブルーチンが計算を行い,主プログラムが印刷します。親プログラムで宣言されている変数 ab,および c は,内部サブルーチンに対しても知られています。

	  program INTERNAL
	! 内部サブルーチンと CONTAINS 文の使い方の例
	  real a,b,c
	  call find
	  print *, c
	  contains
	    subroutine find
	      read *, a,b
	      c = sqrt(a**2 + b**2)
	    end subroutine find
	  end

関連情報