XL Fortran for AIX V8.1.1

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

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

VOLATILE

目的

VOLATILE 属性を指定することにより、データ・オブジェクトを独立した I/O プロセスおよび独立した非同期割り込みプロセスがアクセスできるメモリーにマップできます。揮発性データ・オブジェクトを操作するコードは最適化されません。

構文



                     .-,---------------------------.
                     V                             |
>>-VOLATILE--+----+----+-variable_name-----------+-+-----------><
             '-::-'    +-/--common_block_name--/-+
                       '-derived_type_name-------'
 
 

規則

配列名を揮発性 (volatile) として宣言すると、その配列の各エレメントも揮発性と見なされます。共通ブロックを揮発性として宣言すると、その共通ブロックの各変数も揮発性と見なされます。共通ブロック内のその他のエレメントの状況に影響を与えずに、共通ブロックの 1 つのエレメントだけを揮発性として宣言することもできます。

1 つの共通ブロックを複数の有効範囲内で宣言する場合、および 1 つの共通ブロック (または共通ブロックの 1 つ以上のエレメント) を複数の有効範囲のうちの 1 つで揮発性として宣言する場合、その共通ブロック (または共通ブロックの 1 つ以上のエレメント) を揮発性と見なすそれぞれの有効範囲内に VOLATILE 属性を指定しなければなりません。

派生型名を揮発性として宣言すると、そのタイプで宣言されたすべての変数は揮発性と見なされます。派生型のオブジェクトを揮発性として宣言すると、そのコンポーネントもすべて揮発性と見なされます。派生型のコンポーネント自体が派生型である場合は、そのコンポーネントはそのタイプから揮発属性を継承しません。揮発性として宣言されている派生型名には、タイプ宣言ステートメント内のタイプ名を使用する前に VOLATILE 属性を指定しなければなりません。

ポインターを揮発性として宣言すると、そのポインターのストレージ自体が揮発性と見なされます。 VOLATILE 属性は、関連するポインター・ターゲットには影響を与えません。

あるオブジェクトを揮発性として宣言し、そのオブジェクトを EQUIVALENCE ステートメントで使用した場合、等価関連付けによってその揮発性オブジェクトに関連したオブジェクトも、すべて揮発性と見なされます。

スレッドを介して共用され、複数のスレッドによって保管され、読み取られるデータ・オブジェクトは、VOLATILE として宣言されなければなりません。ただし、プログラムがコンパイラーの自動またはディレクティブ・ベースの並列機能のみを使用する場合、SHARED 属性を持つ変数は、VOLATILE と宣言する必要はありません。

仮引き数に関連した実引き数が揮発性と宣言されている変数の場合、仮引き数も揮発性と見なす場合は、仮引き数を揮発性として宣言しなければなりません。仮引き数を揮発性と宣言しているときに、関連する実引き数も揮発性と見なす場合は、実引き数を揮発性として宣言しなければなりません。

ステートメント関数を揮発性として宣言しても、そのステートメント関数には影響を与えません。

関数サブプログラム内では、関数結果変数を揮発性として宣言することができます。すべての入力結果変数は揮発性と見なされます。 ENTRY 名を VOLATILE 属性を使って指定することはできません。

VOLATILE 属性と互換性のある属性





      FUNCTION TEST ()
        REAL ONE, TWO, THREE
        COMMON /BLOCK1/A, B, C
        ...
        VOLATILE /BLOCK1/, ONE, TEST
! Common block elements A, B and C are considered volatile
! since common block BLOCK1 is declared volatile.
        ...
        EQUIVALENCE (ONE, TWO), (TWO, THREE)
! Variables TWO and THREE are volatile as they are equivalenced
! with variable ONE which is declared volatile.
      END FUNCTION

関連情報

第 11 章, 汎用ディレクティブ

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


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