作業用ストレージ・セクションは、データ・ファイルの一部ではないが、プログラムまたはメソッドによって開発され処理されているデータ・レコードを記述します。また、ソース・プログラムまたはメソッドの中で値が代入され、オブジェクト・プログラムの実行時には値が変わらないデータ項目も記述します。
作業用ストレージ・セクションは WORKING-STORAGE SECTION というセクション・ヘッダーで開始し、その後に分離文字ピリオドを付けなければなりません。
- プログラム作業用ストレージ
- プログラム (およびメソッド) の場合の作業用ストレージ・セクションには、実行単位全体を通して複数のプログラムおよびメソッドによって共用される外部データ・レコードを記述することもできます。
ファイル・セクション内のレコード記述に使用されるすべての節は、
VALUE 節と EXTERNAL 節 (これらの節はファイル・セクションの中のレコード記述項目では指定できません) と同じく、作業用ストレージ・セクション内のレコード記述に使用することができます。
- メソッド作業用ストレージ
- メソッドの作業用ストレージの単一コピーは、メソッドの最初の呼び出し時に静的に割り振られ、
実行単位の持続期間中、最後に使用された状態で持続します。
メソッドが呼び出される場合は、どのオブジェクト・インスタンスに対してメソッドが呼び出されたかに関係なく常に同一のコピーが使用されます。
VALUE 節がメソッドの作業用ストレージ・データ項目で指定された場合、そのデータ項目は最初の呼び出しの際に VALUE 節の値に初期設定されます。
EXTERNAL 節がメソッド作業用ストレージ・セクションのデータ記述項目で指定された場合は、実行単位の間に 1 回、そのデータ項目のストレージのコピーが 1 つ割り振られます。
そのストレージは、外部データ項目の定義を含む実行単位内のすべてのプログラムおよびメソッドによって共用されます。
- オブジェクト作業用ストレージ
- オブジェクト段落の作業用ストレージ・セクションで記述されているデータは、オブジェクト・インスタンス・データです。これは通常 インスタンス・データ と呼ばれます。オブジェクトがインスタンス化されるときに、
それぞれのオブジェクト・インスタンスに対して別々のインスタンス・データが静的に
割り振られます。オブジェクト・インスタンス・データは、Java ランタイム・システムによって解放されるまで、最後に使用された状態で持続します。
インスタンス・データは、データ宣言に指定した VALUE 節によって、
またはインスタンス・メソッドに指定した論理によって、初期化することができます。
- ファクトリー作業用ストレージ
- FACTORY 段落の作業用ストレージ・セクションで記述されているデータは、ファクトリー・データです。
クラスのファクトリー・オブジェクトが作成されるときに、ファクトリー・データの単一コピーが静的に割り振られます。
ファクトリー・データは、実行単位の持続期間中、最後に使用された状態で持続します。
ファクトリー・データは、データ宣言に指定した VALUE 節によって、またはファクトリー・メソッドに指定した論理によって、
初期化することができます。
作業用ストレージ・セクションには、レコード記述項目と、
独立データ項目のデータ記述項目 (データ項目記述項目) が含まれています。
- レコード記述項目
- 作業用ストレージ・セクション内にあって、相互に一定の階層関係にあるデータ項目は、レベル番号によって構造化が指定されるレコード群にまとめる必要があります。
詳しくは、データ部 - データ記述項目を参照してください。
- データ項目記述項目
- 作業用ストレージ・セクションにあって相互に階層関係を持たない独立した項目は、
それ以上細分する必要がない限りレコード群にまとめる必要はありません。
その代わりに、それらの項目は独立基本項目として分類および定義されます。
それぞれの項目は、レベル番号 77 または 01 のいずれかで始まる別々のデータ項目記述項目の中で定義されます。
詳しくは、データ部 - データ記述項目を参照してください。