dataTable パーツは EGL ソース・ファイルで宣言します。これについては、『EGL プロジェクト、パッケージ、およびファイル』で説明しています。このパーツは生成可能なパーツです。つまり、このパーツは、ファイルの最上位にあり、ファイルと同じ名前を持つ必要があります。
1 つの dataTable は、プログラムの使用宣言、または (プログラムの唯一のメッセージ・テーブルの場合は) プログラムの msgTablePrefix プロパティーによって、そのプログラムに関連付けられます。
dataTable は、pageHandler の使用宣言により、pageHandler に関連しています。
dataTable パーツの一例を以下に示します。
DataTable myDataTablePart type basicTable
{
{ shared = yes }
myColumn1 char(10);
myColumn2 char(10);
myColumn3 char(10);
{ contents = [
[ "row1 col1", "row1 col2", "row1 " + "col3" ] ,
[ "row2 col1", "row2 col2", "row2 " + "col3" ] ,
[ "row3 col1", "row3 col2", "row3 col3" ]
]
}
end
dataTable パーツの構文図は、以下のとおりです。
- DataTable dataTablePartName ... end
- パーツを dataTable として識別し、パーツ名を指定します。命名の規則については、『命名規則』を参照してください。
- basicTable (デフォルト)
- プログラム・ロジックで使用される情報 (例えば、国およびそれに関連付けられているコード) を含んでいます。
- matchInvalidTable
- テキスト・フィールドの validatorDataTable プロパティーで指定され、ユーザーの入力は、dataTable の最初の列の値とは異なっている必要があることを示します。検証に失敗すると、EGL ランタイムは以下のように応答します。
- validatorDataTable プロパティーで参照されるテーブルにアクセスする。
- テキスト・フィールド固有の validatorDataTableMsgKey プロパティーで識別されるメッセージを取り出す。
- 書式固有の msgField プロパティーで識別されるテキスト・フィールドにメッセージを表示する。
- matchValidTable
- テキスト・フィールドの validatorDataTable プロパティーで指定され、ユーザーの入力が dataTable の最初の列の値に一致する必要があることを示します。検証に失敗すると、EGL ランタイムは以下のように応答します。
- validatorDataTable プロパティーで参照されるテーブルにアクセスする。
- テキスト・フィールド固有の validatorDataTableMsgKey プロパティーで識別されるメッセージを取り出す。
- 書式固有の msgField プロパティーで識別されるフィールドにメッセージを表示する。
- msgTable
- ランタイム・メッセージが含まれています。メッセージは、以下の状況で表示されます。
- テーブルが、プログラムのメッセージ・テーブルである。プログラムへの DataTable の関連付けは、
プログラム・プロパティー msgTablePrefix が、DataTable
の名前の先頭の 1 文字から 4 文字であるテーブル接頭部
を参照している場合に行われます。
メッセージ・テーブルに名前を付ける際には、次の表に示されている、各国語を表す 3 文字のコードを含めます。
言語 |
各国語コード |
ブラジル・ポルトガル語 |
PTB |
中国語 (簡体字) |
CHS |
中国語 (繁体字) |
CHT |
英語、大文字 |
ENP |
英語 (米国) |
ENU |
フランス語 |
FRA |
ドイツ語 |
DEU |
イタリア語 |
ITA |
日本語、カタカナ (1 バイト文字セット) |
JPN |
韓国語 |
KOR |
スペイン語 |
ESP |
スイス・ドイツ語 |
DES |
- プログラムは、『ConverseLib.displayMsgNum』および『ConverseLib.validationFailed』で説明されている 2 つのメカニズムの内の 1 つによってメッセージを取り出し、それを表示します。
- rangeChkTable
- テキスト・フィールドの validatorDataTable プロパティーで指定され、ユーザーの入力が、少なくとも 1 つのデータ・テーブル行の第 1 列の値と第 2 列の値との間の値に一致する必要があることを示します。(範囲は包括的です。
ユーザーの入力が任意の行の最初の列または 2 番目の列の値と一致している場合は、有効です。)検証に失敗すると、EGL ランタイムは以下のように応答します。
- validatorDataTable プロパティーで参照されるテーブルにアクセスする。
- テキスト・フィールド固有の validatorDataTableMsgKey プロパティーで識別されるメッセージを取り出す。
- 書式固有の msgField プロパティーで識別されるフィールドにメッセージを表示する。
- "alias"
- 生成された出力の名前に取り込まれるストリング。別名を指定しなかった場合は、dataTable 名が代わりに使用されます。
- shared
- dataTable の同じインスタンスが、同じ実行単位の複数のプログラムによって使用されるかどうかを示します。有効な値は、yes および no (デフォルト) です。 shared の値が no の場合は、実行単位内の各プログラムは、dataTable の固有のコピーを持ちます。
このプロパティーは、dataTable の同じインスタンスが、同じ
実行単位の各プログラムによって使用されるかどうかを示します。shared の値が no の場合は、実行単位内の各プログラムは、dataTable の固有のコピーを持ちます。
実行時に行われた変更は、dataTable にアクセスできるすべてのプログラムに対して可視になっており、その dataTable がアンロードされるまで、その変更はそのまま維持されます。いつ dataTable がアンロードされるかは、ほとんどの場合、resident プロパティー (後述) の値によって決まります。詳しくは、このプロパティーの説明を参照してください。
- resident
- dataTable にアクセスしたすべてのプログラムが終了した後も、その dataTable をメモリー内に保持しておくかどうかを示します。
有効値は yes および no です。
デフォルトは no です。
resident プロパティーを yes に設定すると、shared の値に関係なく、dataTable は共用されます。
dataTable を常駐させておくことの利点は、以下のとおりです。
- dataTable は、以前に実行されたプログラムによって書き込まれた値をすべて保持する。
- 追加のロード処理を行わなくても、テーブルに即時にアクセスできる。
常駐 dataTable は、実行単位が終了するまでロードされたままです。ただし、非常駐 dataTable は、それを使用しているプログラムが終了するとアンロードされます。
注: dataTable は、EGL ランタイムが使用宣言を処理するときではなく、プログラムが最初にアクセスしたときに、(必要であれば) メモリーにロードされます。
- contents
- dataTable セルの値。各セルの種類は、以下のいずれかです。
- 数値リテラル
- 文字列リテラル、または文字列リテラルの連結
ある特定の行の内容の種類には、最上位の構造体フィールド (各フィールドは、列定義を表します) との互換性が必要です。
- structureField
- 構造体フィールド。詳細については、『EGL ソース形式の構造体フィールド』を参照してください。