+----------------------------------IBM 拡張----------------------------------+
目的
VOLATILE 属性は、 独立した入出力プロセスおよび独立した非同期割り込みプロセスがアクセスできるメモリーにマップされるデータ・オブジェクトを指定するために使用します。 揮発性データ・オブジェクトを操作するコードは最適化されません。
構文
.-,---------------------------. 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
関連情報
+------------------------------End of IBM 拡張-------------------------------+