文と属性:オブジェクトの値が,現在のプログラム単位に対して局所的な情報だけを基にすると完全に予測不可能であることを宣言します。これにより,オブジェクトがコンパイル時に最適化されるのを防ぐことができます。
VOLATILE 属性は,型宣言文または VOLATILE 文で指定することができ,以下のいずれかの形式を取ります。
形式
型宣言文
type, [att-ls,] VOLATILE [,att-ls] :: object [,object]...
文
VOLATILE object [,object]...
type
データ型指定子。
att-ls
省略可能な属性指定子並び。
object
オブジェクトの名前,または斜線で囲まれた共通ブロックの名前。
規則と振る舞い
変数または共通ブロックが,コンパイラ認識できないような方法で読み書きされる可能性がある場合,VOLATILE として宣言されなくてはなりません。以下のような例があります。
オペレーティング・システム機能を使って,(他のプログラムから参照できるように) 変数を共有メモリーに格納している場合,変数を VOLATILE として宣言しなくてはなりません。
非同期イベントが起こったときにオペレーティング・システムから呼び出されるルーチンが,変数を参照または変更する場合,変数を VOLATILE として宣言しなくてはなりません。
配列が VOLATILE として宣言されていると,配列のすべての要素が VOLATILE になります。共通ブロックが VOLATILE として宣言されていると,共通ブロック中のすべての変数が VOLATILE になります。
構造型のオブジェクトが VOLATILE として宣言されていると,その成分も VOLATILE になります。
ポインタが VOLATILE として宣言されていると,ポインタ自身が VOLATILE になります。
VOLATILE 文では以下のものは指定できません。
手続
関数結果
変数群要素
互換性
CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB
関連情報
例
次の例は,VOLATILE 属性を指定する型宣言文を示しています。
INTEGER, VOLATILE :: D, E
次の例は,VOLATILE 文を示しています。
PROGRAM TEST LOGICAL(1) IPI(4) INTEGER(4) A, B, C, D, E, ILOOK INTEGER(4) P1, P2, P3, P4 COMMON /BLK1/A, B, C VOLATILE /BLK1/, D, E EQUIVALENCE(ILOOK, IPI) EQUIVALENCE(A, P1) EQUIVALENCE(P1, P4)
名前付き共通ブロック BLK1 と変数 D および E が VOLATILE になります。変数 P1 と P4 は,P1 の直接的な等価関係と P4 の間接的な等価関係のために VOLATILE になります。