結合

結合により異なるプログラム単位から,異なる名前を通して同じ値を参照することができます。要素は,同じ記憶位置に結合されているときに,互いに結合されているといいます。

結合には以下の 3 つの種類があります。

以下の例は,外部プログラム単位と外部手続の間の名前結合,ポインタ結合,および記憶列結合を示しています。

名前結合,ポインタ結合,および記憶列結合の例

	! 有効域 1: 外部プログラム単位

	REAL A, B(4)
	REAL, POINTER :: M(:)
	REAL, TARGET :: N(12)
	COMMON /COM/...
	EQUIVALENCE (A, B(1))	! A と B(1) 間の記憶列結合
	M => N			! ポインタ結合
	CALL P (actual-arg,...)
	...

	! 有効域 2: 外部手続
	SUBROUTINE P (dummy-arg,...)	! これらの引数と有効域 1 の
					! 呼び出し側ルーチンの引数間の
					! 名前結合と記憶列結合

	  COMMON /COM/...		! 有効域 1 の共通ブロック COM との
					! 記憶列結合
	  REAL Y
	  CALL Q (actual-arg,...)
	  CONTAINS
	    SUBROUTINE Q (dummy-arg,...)	! これらの引数と親手続 P 
						! (副プログラム Q は手続 P 
						! と親子結合) の呼び出し側
						! ルーチンの引数間の
						! 名前結合と記憶列結合
	      Y = 2.0*(Y-1.0)			! 親手続 P と Y との名前結合
	    ...