XL Fortran for AIX V8.1.1

ランゲージ・リファレンス

USE

目的

USE ステートメントは、モジュールの共通エンティティーへのローカル・アクセスを可能にするモジュール参照です。

構文



>>-USE--module_name--+---------------------------+-------------><
                     +-,--rename_list------------+
                     '-,--ONLY--:--+-----------+-'
                                   '-only_list-'
 
 

rename
アクセス可能なデータ・エンティティーへのローカル名の割り当てです。 local_name => use_name

only
rename、総称仕様、または変数、プロシージャー、派生型、名前付き定数、名前リスト・グループの名前です。

規則

USE ステートメントは、specification_part の中の他のすべてのステートメントより前の位置にのみ指定できます。 1 つの有効範囲単位内に複数の USE ステートメントを指定することができます。

+----------------------------------IBM 拡張----------------------------------+

USE ステートメントを含むファイルがコンパイルされるとき、指定するモジュールはファイルの中で USE ステートメントの前になければなりません。あるいは、そのモジュールが他のファイルにある場合は、前もってコンパイルされていなければなりません。各参照エンティティーはモジュール内の共通エンティティーの名前でなければなりません。

+--------------------------------IBM 拡張の終り-------------------------------+

有効範囲単位内のエンティティーはモジュール・エンティティーと 使用関連 の関係になります。また、ローカル・エンティティーは対応するモジュール・エンティティーの属性を持ちます。

PRIVATE 属性の他、USE ステートメントの ONLY 文節はアクセス可能なモジュールに関する制約を指定します。 ONLY 文節を指定すると、only_list に指定されているエンティティーだけがアクセス可能になります。キーワードの後にリストを指定しないと、いずれのモジュール・エンティティーもアクセス可能にはなりません。 ONLY 文節がない場合、すべての共通エンティティーがアクセス可能になります。

1 つの有効範囲単位内に同一のモジュールを指定する USE ステートメントが複数存在し、そのうちの 1 つのステートメントに ONLY 文節がない場合、すべての共通エンティティーがアクセス可能になります。 USE ステートメントのそれぞれに ONLY 文節がある場合、1 つ以上の only_lists に指定されているエンティティーだけがアクセス可能になります。

ローカルな使用を目的としてアクセス可能なエンティティーの名前を変更することができます。モジュール・エンティティーは複数のローカル名でアクセスすることができます。名前変更を指定しない場合、使用関連のエンティティーの名前はローカル名になります。使用関連のローカル名を再度宣言することはできません。しかし、USE ステートメントかモジュールの有効範囲単位内に存在する場合は、ローカル名を PUBLIC または PRIVATE ステートメントに指定することができます。

ある有効範囲単位にアクセス可能な複数の総称インターフェースの名前、演算子、および割り当てが同じ場合、それらは 1 つの総称インターフェースとして処理されます。そのような場合、総称インターフェースのうちの 1 つに、同じ名前を持つアクセス可能なプロシージャーへのインターフェース本体を含ませることができます。それ以外の場合は、名前が有効範囲単位内のエンティティーを参照するために使用されていないときにだけ、任意の 2 つの使用関連のエンティティーに同じ名前を指定することができます。使用関連のエンティティーとホスト・エンティティーが同じ名前を共用する場合、ホスト・エンティティーはその名前を使用したホスト関連付けを介してもアクセスできないようになります。

モジュールは、直接的にも間接的にもそれ自身を参照することはできません。たとえば、モジュール Y がモジュール X を参照する場合、モジュール X はモジュール Y を参照することはできません。

モジュール (たとえばモジュール B) が使用関連付けを介して他のモジュール (たとえばモジュール A) の共通エンティティーにアクセスすることを考えてください。モジュール B のローカル・エンティティー (モジュール A からのエンティティーと使用関連の関係を持つエンティティーを含みます) の他のプログラム単位へのアクセス可能度は PRIVATE および PUBLIC 属性、また、それらを指定していない場合は、モジュール B のデフォルトのアクセス可能度で決定されます。もちろん、他のプログラム単位はモジュール A の共通エンティティーに直接アクセスすることができます。

   MODULE A
     REAL :: X=5.0
   END MODULE A
   MODULE B
     USE A
     PRIVATE :: X               !  X cannot be accessed through module B
     REAL :: C=80, D=50
   END MODULE B
   PROGRAM TEST
     INTEGER :: TX=7
     CALL SUB
     CONTAINS
 
     SUBROUTINE SUB
     USE B, ONLY : C
     USE B, T1 => C
     USE B, TX => C             !  C is given another local name
     USE A
     PRINT *, TX                !  Value written is 80 because use-associated
                                !  entity overrides host entity
     END SUBROUTINE
   END

関連情報


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]