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


変数のストレージ・クラス

注:
この項では、変数のストレージ・クラスについてのみ扱っています。 名前付き定数およびそのサブオブジェクトは、リテラル の ストレージ・クラスを持っています。

基本ストレージ・クラス

すべての変数は、根本的には、次の 5 つのストレージ・クラスの いずれか 1 つによって表されます。

Automatic
プロシージャー内の変数のためのもので、プロシージャーの終了時に保持されません。 変数はスタック・ストレージ域に常駐します。

Static
プログラムが終了するまでメモリーを保持する変数のためのものです。 変数は、データ・ストレージに常駐します。 未初期化変数は、bss ストレージに常駐します。

Common
共通ブロック変数のためのものです。 共通ブロック変数が初期化されると、ブロック全体がデータ・ストレージに常駐します。 初期化されない場合は、ブロック全体が bss ストレージに常駐します。

Controlled Automatic
自動オブジェクトのためのものです。 変数はスタック・ストレージ域に常駐します。 XL Fortran は、プロシージャーへの入り口にストレージを割り振り、 プロシージャーが完了すると、そのストレージの割り振りを解除します。

Controlled
割り振り可能オブジェクトのためのものです。 変数は、動的ストレージ域に常駐します。 ストレージの割り振りおよび割り振り解除は、明示的に行わなければなりません。

2 次ストレージ・クラス

以下のストレージ・クラスは、それ自体にストレージは持っていませんが、 実行時に基本ストレージに関連付けられます。

Pointee
対応する整数ポインターの値によって異なります。

Reference parameter
仮引き数で、対応する実引き数がデフォルトの受け渡し方式 または %REF によってプロシージャーに渡されます。

Value parameter
仮引き数で、対応する実引き数が値によってプロシージャーに渡されます。

引き渡し方法の詳細については、%VAL および %REFを参照してください。

ストレージ・クラスの割り当て

変数名には、次の 1 つの方法によってストレージ・クラスが割り当てられます。

  1. 明示

    上記のいずれにも該当しない変数で、明示的なストレージ・クラスを持つ 変数と同等な変数は、明示的なストレージ・クラスを継承します。

    上記のいずれにも該当しない変数で、明示的なストレージ・クラスを持つ 変数と同等ではない変数は、以下の場合、明示的なストレージ・クラスを持ちます。

  2. 暗黙

    変数が明示的なストレージ・クラスを持たない場合、次のような暗黙の ストレージ・クラスが割り当てられます。

    特定の有効範囲単位内で、英字、ドル記号、下線のいずれか が IMPLICIT STATIC ステートメントまた は IMPLICIT AUTOMATIC ステートメントに指定されていない場合、 暗黙のストレージ・クラスはホストと同じになります。

    モジュールの指定部分で宣言された変数は、静的ストレージ・クラスに関連させられます。

    上記のいずれにも該当しない変数で、暗黙のストレージ・クラスを持つ変数と 同等なものは、暗黙のストレージ・クラスを継承します。

  3. デフォルト

    それ以外の変数はすべて、デフォルトのストレージ・クラスを持ちます。

+------------------------------End of IBM 拡張-------------------------------+

IBM Copyright 2003