有効範囲

プログラム要素は以下の種類の有効範囲を持ちます (を参照)。

プログラム要素の有効範囲

要素 有効範囲  
プログラム単位 大域  
共通ブロック 1 大域  
外部手続 大域  
組込み手続 大域 2  
モジュール手続 局所 類 I
内部手続 局所 類 I
仮手続 局所 類 I
文関数 局所 類 I
構造型 局所 類 I
構造型の構成要素 局所 類 II
名前付き定数 局所 類 I
名前付き構造構文 局所 類 I
変数群 局所 類 I
総称識別子 局所 類 I
手続の引数キーワード 局所 類 III
副プログラム全体で引用できる変数 局所 類 I
文関数中の仮引数である変数  
DATA または FORALL 文の DO 形反復並び 3 である DO 変数,または配列構成子  
組込み演算子 大域  
ユーザー定義演算子 局所  
文番号 局所  
外部 I/O 装置番号 大域  
組込み代入 大域 4  
ユーザー定義代入 局所  
1 共通ブロックの名前も局所要素の識別に使用することができます。
2 ある組込み手続が有効域中で使用されていない場合,その名前をその有効域中で局所要素の名前として使用することができます。たとえば,プログラム単位中で組込み関数 COS が使用されていなければ,そのプログラム単位中で COS を局所変数として使用することができます。
3 I/O 並びの DO 形反復並び中の DO 変数は,局所的な有効範囲を持ちます。
4 代入シンボル (=) の有効範囲は大域ですが,別の新たな演算を識別することができます (「総称代入の定義」を参照)。

有効域は他の有効域を含むことができます。たとえば,次の例は 6 つの有効域を示しています。

	MODULE MOD_1			! 有効域 1
	   ...				! 有効域 1
	CONTAINS			! 有効域 1
	  FUNCTION FIRST		! 有効域 2
	    TYPE NAME			! 有効域 3
	    ...				! 有効域 3
	    END TYPE NAME		! 有効域 3
	    ...				! 有効域 2
	  CONTAINS			! 有効域 2
	    SUBROUTINE SUB_B		! 有効域 4
	      TYPE PROCESS		! 有効域 5
	      ...			! 有効域 5
	      END TYPE PROCESS		! 有効域 5
	      INTERFACE			! 有効域 5
	        SUBROUTINE SUB_A	! 有効域 6
	        ...			! 有効域 6
	        END SUBROUTINE SUB_A	! 有効域 6
	      END INTERFACE		! 有効域 5
	    END SUBROUTINE SUB_B	! 有効域 4
	  END FUNCTION FIRST		! 有効域 2
	END MODULE			! 有効域 1

関連情報