XL Fortran for AIX V8.1.1

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


関連付け

関連付けは、同一の有効範囲単位内で同一のデータ項目を複数の異なる名前で識別する場合、または同一の実行可能プログラムの異なる有効範囲単位で、同一のデータ項目を同じ名前または複数の異なる名前で識別する場合に生じます。

ホスト関連付け

ホスト関連付け を使用すれば、内部サブプログラム、モジュール・サブプログラム、または派生型定義からそのホスト内の名前付きエンティティーにアクセスできるようになります。アクセスされるエンティティーは、ホスト内のときと同じ属性を持ち、 (もしあれば) 同じ名前で識別されます。上記エンティティーには、オブジェクト、派生型定義、名前リスト・グループ、インターフェース・ブロックおよびプロシージャーなどが含まれます。

EXTERNAL 属性が指定されている名前はグローバル名です。この名前を非総称名として持つホスト有効範囲単位内のどのエンティティーにも、その名前およびホスト関連付けを使用してアクセスすることはできません。

ある有効範囲単位内で宣言または初期化が行われる場合、次に示すエンティティーはその有効範囲単位内でローカルとなります。

サブプログラムに対してローカルであるエンティティーは、ホスト有効範囲単位内ではアクセスできません。

次のような場合、DATA ステートメントの前にローカル・エンティティーの参照または定義を行うことはできません。

  1. ある有効範囲単位に限定してローカルである場合。エンティティーは DATA ステートメントで初期化されるからです。
  2. ホストにあるエンティティーがローカル・エンティティーの名前と同じ場合。

ホストの派生型名にアクセスできない場合でも、そのタイプの構造体またはそのような構造体のサブオブジェクトにはアクセス可能です。

サブプログラムがホスト関連付けを介してポインター (または複数ポインター) にアクセスすると、サブプログラムの呼び出し時に存在するポインター関連付けはサブプログラムに現行のまま残ります。このポインター関連付けは、サブプログラム内で変更してもかまいません。プロシージャーが実行を終了しても、ポインター関連付けは現行のまま残ります。ただし、これによってポインターが未定義になる場合は例外です。この場合、ホストに関連したポインターの関連付け状況は未定義となります。

インターフェース本体は、使用関連付けを介してエンティティーを使用することはできますが、ホスト関連付けを介して名前付きエンティティーを使用することはありません。

内部サブプログラムまたはモジュール・サブプログラムのホスト有効範囲単位には、同一の使用関連付けをもったエンティティーを指定することができます。

ホスト関連付けの例

SUBROUTINE MYSUB
TYPE DATES                   ! Define DATES
  INTEGER START
  INTEGER END
END TYPE DATES
CONTAINS
  INTEGER FUNCTION MYFUNC(PNAME)
  TYPE PLANTS
    TYPE (DATES) LIFESPAN    ! Host association of DATES
      CHARACTER(10) SPECIES
      INTEGER PHOTOPER
    END TYPE PLANTS
  END FUNCTION MYFUNC
END SUBROUTINE MYSUB

使用関連付け

使用関連付け は、USE ステートメントによってモジュールのエンティティーにアクセスする際に生じます。使用に関連したエンティティーの名前を変更して、ローカルの有効範囲単位内で使用することが可能です。この関連付けは実行可能プログラムの実行時の間は有効です。詳細については、USEを参照してください。

MODULE M
  CONTAINS
  SUBROUTINE PRINTCHAR(X)
    CHARACTER(20) X
    PRINT *, X
  END SUBROUTINE
END MODULE
PROGRAM MAIN
USE M                         ! Accesses public entities of module M
CHARACTER(20) :: NAME='George'
CALL PRINTCHAR(NAME)          ! Calls PRINTCHAR from module M
END

ポインター関連付け

ポインターに関連したターゲットは、ポインターに対する参照によって、参照することができます。これをポインター関連付けと呼びます。

ポインターはすべて次のような関連付け状況となります。

関連 (Associated)

関連解除 (Disassociated)

未定義 (Undefined)

定義状況および関連付け状況

ポインターの定義状況は、そのターゲットの状況を示します。ポインターが定義可能なターゲットに関連している場合、そのポインターの定義状況は、変数の規則にしたがって定義または未定義状態にすることができます。

ポインターの関連付け状況が関連解除 (Disassociated) または未定義 (Undefined) の場合には、そのポインターを参照したり割り振りを解除できません。関連付け状況がどんな場合でも、ポインターは必ずヌル文字化され、割り振られるかまたはポインター割り当てをされます。ポインターが割り振られると、その定義状況は未定義になります。ポインターがポインター割り当てをされると、その関連付け状況および定義状況は、そのターゲットによって決められます。したがって、ポインターが定義されたターゲットに関連すると、そのポインターは定義された状態になります。

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

整数ポインター関連付け

データ・オブジェクトに関連した整数ポインターを使用すると、データ・オブジェクトを参照することが可能になります。 これを整数ポインター関連付けと呼びます。

整数ポインター関連付けは、次のような状況でのみ生じます。

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


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