+----------------------------------IBM 拡張----------------------------------+
目的
AUTOMATIC 属性は変数に自動ストレージ・クラスを持たせることを指定します。つまり、一度プロシージャーが終了した後は変数は定義済みではありません。
構文
>>-AUTOMATIC--+----+--automatic_list--------------------------->< '-::-' |
規則
automatic の名前がそれが宣言されている関数と同じ名前の場合、文字タイプ、あるいは派生型にすることはできません。
ポインターまたは配列である関数結果、仮引き数、ステートメント関数、自動オブジェクト、またはポインティング先には、AUTOMATIC 属性を指定してはなりません。 AUTOMATIC 属性を持つ変数をモジュールの有効範囲単位内で定義することはできません。共通ブロック項目に、AUTOMATIC 属性によって明示的に宣言された変数を指定することはできません。
同じ有効範囲単位内で 1 つの変数に対して複数の AUTOMATIC 属性を指定することはできません。
スレッドの作業範囲内で AUTOMATIC と宣言された変数はすべて、そのスレッドに対してローカルになります。
-qinitauto コンパイラー・オプションが指定されていない場合、DATA ステートメントやタイプ宣言ステートメントを使用しても AUTOMATIC 属性を持つ変数を初期化することはできません。 -qinitauto オプションが指定されている場合、AUTOMATIC 属性を持つ変数のストレージのすべてのバイトは指定されたバイト値 (値が設定されていない場合は 0) に初期化されます。
automatic がポインターの場合、AUTOMATIC 属性はポインター自身に設定されるのであり、そのポインターに関連する (あるいは関連する可能性のある) ターゲットに設定されることはありません。
ローカル変数はデフォルトで自動ストレージ・クラスを持っています。呼び出しコマンドに関するデフォルト設定値の詳細については、「ユーザーズ・ガイド」の『-qsave オプション』を参照してください。
AUTOMATIC 属性と互換性のある属性 | ||||
---|---|---|---|---|
|
CALL SUB CONTAINS SUBROUTINE SUB INTEGER, AUTOMATIC :: VAR VAR = 12 END SUBROUTINE ! VAR becomes undefined END
関連情報
+--------------------------------IBM 拡張の終り-------------------------------+