USE

:プログラム単位に対して,モジュール内の公開言語要素の参照許可を提供します。

形式

USE name [, rename-list ] ...
USE name, ONLY : [, only-list ]

name
モジュール名。

rename-list
次の形式を持つ 1 つまたは複数の項目。

local-name => mod-name

local-name
モジュールを使用するプログラム単位の言語要素名。

mod-name
モジュール内の公開言語要素名。

only-list
モジュール内の公開言語要素名,または総称識別子 (総称名,ユーザー定義演算子,またはユーザー定義代入)。

only-list 中の言語要素は次の形式を取ることもできます。

[local-name =>] mod-name

規則と振る舞い

USE 文が ONLY 句なしで指定されている場合,プログラム単位は名前付きモジュール内のすべての公開言語要素を参照することができます。

USE 文が ONLY 句付きで指定されている場合,プログラム単位は ONLY 句の後に続く言語要素だけを参照することができます。

1 つの有効域中に,特定のモジュールに対する USE 文が複数存在する場合,以下の規則が適用されます。

1 つの有効域中で参照可能な 2 つ以上の総称インタフェースが同じ名前か同じ演算子を持っている場合,またはすべてが代入である場合,それらは 1 つの総称インタフェースとして解釈されます。それ以外の場合,複数の参照可能な言語要素が同じ名前を持てるのは,有効域中にその名前に対する引用がない場合に限られます。

USE 文によって参照可能になった言語要素の局所名は,PUBLIC または PRIVATE 以外の属性を付けて再宣言されてはなりません。局所名は変数群要素並びに入れることはできますが,COMMON または EQUIVALENCE 文に入れることはできません。

互換性

CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB

関連情報

USEプログラム単位と手続

以下に,USE 文の例を示します。

	MODULE MOD_A
	  INTEGER :: B, C
	  REAL E(25,5), D(100)
	END MODULE MOD_A
	...
	SUBROUTINE SUB_Y
	  USE MOD_A, DX => D, EX => E	! 配列 D は DX に,配列 E は EX に
	  ...				! 名前が変更されます。スカラ変数 B
	END SUBROUTINE SUB_Y		! と C もまたこのサブルーチンで利用
	...				! 可能です (モジュール名を使って)。
	SUBROUTINE SUB_Z
	  USE MOD_A, ONLY: B, C		! スカラ変数 B と C のみが
	  ...				! このサブルーチンで利用可能です。
	END SUBROUTINE SUB_Z
	...

次の例は,共通ブロックを含んでいるモジュールを示しています。

	MODULE COLORS
	  COMMON /BLOCKA/ C, D(15)
	  COMMON /BLOCKB/ E, F
	  ...
	END MODULE COLORS
	...
	FUNCTION HUE(A, B)
	  USE COLORS
	  ...
	END FUNCTION HUE

USE 文は,モジュール COLORS 中の共通ブロックに含まれるすべての変数を,関数 HUE から参照可能にします。

データを抽象化するために,ユーザー定義のデータ型と,この型の値に対して行われる演算を,1 つのモジュール中にパッケージ化することができます。次の例は,このようなモジュールを示しています。

	MODULE CALCULATION
	  TYPE ITEM
	    REAL :: X, Y
	  END TYPE ITEM

	  INTERFACE OPERATOR (+)
	    MODULE PROCEDURE ITEM_CALC
	  END INTERFACE

	CONTAINS
	  FUNCTION ITEM_CALC (A1, A2)
	    TYPE(ITEM) A1, A2, ITEM_CALC
	    ...
	  END FUNCTION ITEM_CALC
	  ...
	END MODULE CALCULATION

	PROGRAM TOTALS
	USE CALCULATION
	TYPE(ITEM) X, Y, Z
	  ...
	  X = Y + Z
	  ...
	END

USE 文により,プログラム TOTALS は,型 ITEM と拡張組込み演算子 + の両方を使って計算を行えるようになります。

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

	! モジュールには元になる型宣言が含まれています。
	MODULE geometry
	  type square
	    real side
	    integer border
	  end type
	  type circle
	    real radius
	    integer border
	  end type
	END MODULE

	! プログラムは局所的利用のためモジュール型の名前を変えます。
	PROGRAM test
	 USE GEOMETRY,LSQUARE=>SQUARE,LCIRCLE=>CIRCLE
	 ! これらの型を宣言に使用します。
	 type (LSQUARE) s1,s2
	 type (LCIRCLE) c1,c2,c3