EGL use ステートメントの DataTable パーツを参照する場合、 このステートメントに deleteAfterUse プロパティーを 組み込むことができます。このプロパティーは、COBOL 用に生成されたアプリケーションに対して、データ・テーブルが メモリー内に保持される期間に影響します。このプロパティーは、Java™ プログラムには影響を与えません。
表が、大量のメモリーを占有していても、COBOL 環境では、一連の呼び出し先プログラムにおける単一プログラムのみで使用される場合に、このプロパティーに YES の値を指定します。
デフォルト値 NO は、それを使用する複数のプログラム・セグメントに対して、テーブルを開いたままにしておく効果があります。
このプロパティーは、データ・テーブルの使用回数に影響を与えます。 使用回数がゼロになると、データ・テーブルは削除されます。使用回数は、 2 次関数 (main() 関数によって直接呼び出される関数) がプログラム内のデータ・テーブルを最初に参照すると増分されます。複数のプログラムが 2 次関数からデータ・テーブルを参照すると、 使用回数はそれに応じて増分されます。
使用回数は、次の表の規則に従って以下のように減少します。
| deleteAfterUse の値 | プログラムのセグメント化 | 使用回数が減少するとき |
|---|---|---|
| NO | はい | main() 関数の終了時、または converse の発生時 |
| NO | いいえ | main() 関数の終了時 |
| YES | はい | 2 次関数の終了時、または converse の発生時 |
| YES | いいえ | 2 次関数の終了時 |
規則が明らかに複雑であるにもかかわらず、効果は単純明快です。 deleteAfterUse が YES に設定されている場合、これをアクティブに使用している 2 次関数がないとすぐに、 EGL によってデータ・テーブルが削除されます。 deleteAfterUse が NO に設定されている場合、 EGL は、表を使用するすべてのプログラムが終了するまで、データ・テーブルを メモリー内に保持します。
データ・テーブルの resident プロパティーは、 関連付けられた use ステートメントの deleteAfterUse プロパティーに優先することに注意してください。 resident が YES に設定されている場合、 表を使用するすべてのプログラムが終了するまで、EGL でデータ・テーブルをメモリー内に 保持します。
次の例は、use ステートメントの deleteAfterUse プロパティーを示します。
use myMessageTable {deleteAfterUse = YES};
| プラットフォーム | 問題 |
|---|---|
| Java 生成 | Java は、常に、deleteAfterUse が NO に設定されているように振る舞います。 |
| JavaScript 生成 | DataTable はサポートされていません。 |