DataTable プロパティー
各 DataTable パーツは、それぞれ独自の EGL ソース・ファイルに定義されます。 このファイルには、以下のプロパティーを指定することができます。 contents プロパティーのみが必要です。
- alias
- 生成された出力の名前に取り込まれる (引用符で囲まれた) ストリング。 alias (別名) を指定しない場合は、代わりに DataTable 名が使用されます。
- contents
- DataTable セルの値の配列。配列の各行は、表の 1 行を示しています。
各行は、列定義で指定されているようにフォーマット設定されています。
各値は、以下のリテラル型のいずれかです。
- 数値リテラル
- ストリング・リテラル、またはストリング・リテラルの連結
- ブール・リテラル (YES または NO、TRUE または FALSE)
- resident
- DataTable にアクセスしたすべてのプログラムが終了した後、その DataTable をメモリー内に保持しておくかどうかを示すブール値。有効な値は YES と NO (デフォルト) です。
resident プロパティーを YES に設定した場合、
shared プロパティーの値とは無関係に、DataTable が共用されます。
DataTable の常駐には、以下のような利点があります。
- 前に実行されたプログラムによって書き込まれた値の保存。
- 追加のロード処理を要しない即時アクセスの可用性。
- resident が NO に設定されている場合、次の要因が表のアンロードに
影響を与えます。
- VAGen 互換モードで実行していない場合、プログラムが終了すると、 DataTable がアンロードされます。
- VAGen 互換モードで実行している場合、 DataTable では use ステートメントの deleteAfterUse プロパティーで、 DataTable のアンロードをコントロールします。『deleteAfterUse』を参照してください。
- DataTable のアンロードは、ターゲット・システム、およびプログラムが常駐であるかどうかによっても影響を受けます。
このトピックの『互換性』を参照してください。
注: DataTable は、EGL ランタイムがその use 文を処理するときではなく、最初のプログラム・アクセス時にメモリーにロードされます。
- shared
- 同じ実行単位内のすべてのプログラムが DataTable の同一インスタンスを使用しているかどうかを示すブール値。shared が YES に 設定されている場合、実行単位内のすべてのプログラムは DataTable の同一コピーを共有します。 shared が NO (デフォルト) に設定されている場合、実行単位内の各プログラム には DataTable の固有のコピーがあります。
互換性
| プラットフォーム | 問題 |
|---|---|
| COBOL 生成 | 生成される名前の最大長は 7 文字です。 |
| CICS® | DataTable の resident プロパティーを YES に設定した場合、DataTable プログラムの CICS RDO PROGRAM 定義に関する RESIDENT キーワードを YES に設定しないでください。 常駐 DataTable は、以下のいずれかが起きるまで
ロードされたままになります。
shared プロパティーは、CICS 領域のすべてのプログラム、および所定の実行単位内のすべてのプログラムが、DataTable の同じインスタンスを使用するかどうかを示します。 共用テーブルを変更すると、このテーブルが再ロードされるまで、同じ CICS 領域内の共用テーブルのすべてのユーザーに対して変更が有効になります。 ご使用のプログラムが共用テーブルを更新したら、 I/O ステートメント間、あるいはプログラム、ライブラリー、サービス呼び出しの間で全体を更新します。 I/O ステートメントまたは呼び出しの前に DataTable から値を取得して、 I/O ステートメントまたは call ステートメントの後に、 取得した値に基づいて DataTable を変更しないようにしてください。他のユーザーのトランザクションが、 I/O ステートメントまたは call ステートメントのコントロールを取得して、 更新操作の最中に同じテーブルを更新した可能性があります。 I/O ステートメントまたは call ステートメントにわたって同期が必要な場合、 外部直列化方式を使用します。 |
IMS BMP |
常駐 DataTable は、以下のいずれかの状態が起きるまで
ロードされたままになります。
resident プロパティーが NO に設定されている場合、 shared プロパティーが無視されます。各ジョブ・ステップには、 テーブルの別々のコピーがあります。 |
| IMS/VS | 常駐 DataTable は、以下のいずれかの状態が起きるまで
ロードされたままになります。
共用 DataTables の変更はサポートされていません。 |
| iSeries COBOL | 常駐 DataTable は、以下のいずれかの状態が起きるまで
ロードされたままになります。
|
| Java™ 生成 | resident DataTable は、実行単位が終了するまでロードされたままになります。 しかし、非常駐の DataTable は、それを使用するプログラムが終了するとともにアンロードされます。 |
| JavaScript 生成 | DataTable はサポートされていません。 |