文と属性:副プログラムの RETURN または END 文が実行された後も,オブジェクトの値と定義が保たれるようになります。
SAVE 属性は,型宣言文または SAVE 文で指定することができ,以下のいずれかの形式を取ります。
形式
型宣言文
type, [att-ls,] SAVE [,att-ls] :: [object [,object]...]
文
SAVE [object [,object]...]
type
データ型指定子。
att-ls
省略可能な属性指定子並び。
object
オブジェクトの名前,または斜線で囲まれた共通ブロックの名前 (/common-block-name/)。
規則と振る舞い
Compaq Fortran では,基本設定として特定の変数に SAVE 属性を与えられるものと与えられないものがあります。
以下の変数は,基本設定として保存されます。
COMMON 変数
再帰副プログラムの局所変数
DATA 文で初期化されたデータ
以下の変数は,基本設定として保存されません。
AUTOMATIC として宣言された変数
割付け配列の局所変数
構造型の成分の全てを基本初期値で初期化されたデータを持つ構造型変数
STRUCTURE 宣言中で指定した基本初期値で初期化されたデータを持つ RECORD 変数
上記の 2 つの一覧で示されていない局所変数は,基本設定として保存されます。
移植性を高め,コンパイラの警告メッセージが生成されるのを防ぐために,副プログラムの呼び出しの前後で値を保存したい変数については,SAVE 文を使用することをお勧めします。
SAVE 文が明示的な並びを含んでいない場合,有効域中の対象となりうるすべての項目が保存されます。
SAVE 文で以下のものを指定することはできません (これらの値は保存できません)。
無名共通ブロック
共通ブロック中のオブジェクト
手続
仮引数
関数結果
自動割付けオブジェクト
PARAMETER (名前付き) 定数
共通ブロックを SAVE 文で指定することは可能ですが,共通ブロック中の個々の変数は,他の有効域では不定となります (または再定義されます)。
共通ブロックが (主プログラム以外の) プログラムのいずれかの有効域で保存されている場合,その共通ブロックが現れるすべての有効域で保存しなくてはなりません。
SAVE 文は主プログラム中では効果を持ちません。
互換性
CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB
関連情報
COMMON,DATA,MOLULE,MODULE PROCEDURE,RECURSIVE,型宣言,属性の互換性
例
次の例は,SAVE 属性を指定する型宣言文を示しています。
SUBROUTINE TEST() REAL, SAVE :: X, Y
次に SAVE 文の例を示します。
SAVE A, /BLOCK_B/, C, /BLOCK_D/, E
以下に別の例を示します。
SUBROUTINE MySub COMMON /z/ da, in, a, idum(10) real(8) x,y ... SAVE x, y, /z/ ! 別の宣言 REAL(8), SAVE :: x, y SAVE /z/