ユーザーは OpenUI 文を使用して、インターフェースが consoleUI を基にしているプログラムと対話することができます。 この文では、ユーザー・イベントおよびプログラム・イベントを定義し、互いに応答する方法を指定します。
OpenUI 文の構文は、次のようになります。
allowAppend = yes, allowDelete = no
一連の変数を一連の ConsoleField にバインドする方法、特に各変数名を ConsoleField 名と一致させるかどうかを示します。 変数名は BindClause にリスト表示され、ConsoleField 名は「ConsoleField 名 (ConsoleField name)」フィールドの値です。
consoleField が openUI 文で明示的にリストされるか、dictionary 宣言にリストされるかに応じて、それらの順序により、位置によるバインディングを行うための consoleField の順序が定義されます。 (『ConsoleUI パーツおよび関連する変数』に記されているように、それらの順序によって、ユーザー入力用のタブ順序も定義されます。)
バインディング・リスト内に一致する変数が存在しないときに、 consoleField がリストされていたり、dictionary 宣言にあったりすると、consoleField へのユーザー入力は無視されます。 同様に、どのフィールドとも一致しないバインディング変数は無視されます。
実行時には、少なくとも 1 つの consoleField および変数をバインドしなければなりません。 そうしないと、エラーが発生します。
このヘルプ・テキストは、openUI コマンド用のものです。 場合によっては、このキーに関連付けられたテキストがよりコンテキスト固有のものであることもあります。 例えば、メニューの各オプションがそれぞれ独自のヘルプ・メッセージを持つことがあります。
リソース・バンドルは、messageResource で説明されているように、システム変数 ConsoleLib.messageResource によって指定されます。
openUI 文の目的が、SELECT などの SQL 文で使用するための選択基準を作成することかどうかを指定します。
openUI 文は、文字型の単一変数にバインドされなければなりません。 その変数は、ConsoleField の初期値を提供しませんが、ユーザーの入力を受け取ります。 そのユーザー入力は SQL WHERE 文節での使用のためにフォーマットされています。
setInitial の値が no である場合、当初は、バインドされている変数の値が取り出されて表示されます。
バインディングの詳細については、『OnEventBlock』(後述) のセクション と『ConsoleUI パーツおよび関連する変数』を参照してください。
OnEvent(eventKind: eventQualifiers)
特定のイベントに応答する EGL 文は、後述の例に示すとおり、OnEvent ヘッダーとその次の OnEvent ヘッダーの間にあります (あれば)。 ただし、OnEvent ブロックに参照変数を組み込むことはできません。 ただし、その変数をプログラムのグローバル変数として宣言しておいた場合は、組み込むことができます。
ウィンドウに使用可能なイベント・ブロックはありません。
openUI {bindingByName=yes} activeForm bind firstName, lastName, ID OnEvent(AFTER_FIELD:"ID") if (employeeID == 700) firstName = "Angela"; lastName = "Smith"; end end
書式 exit openUI の exit 文を発行することによって、openUI 文を終了することができます。
ON_KEY:("a", "ESC")
このイベントは、ArrayDictionary、 ConsoleField、メニュー、またはプロンプトで使用可能です。
BEFORE_FIELD:("field01", "field02")
AFTER_FIELD:("field01", "field02")
ユーザーは、AFTER_INSERT ハンドラーで一般に行われるように、データベースへの変更をコミットする前に行を編集することができます。
MENU_ACTION:("item01", "item02")
consoleField プロパティー SQLColumnName を設定することで、consoleField を SQL テーブル列に関連付けます。 また、『ConsoleField プロパティーおよびフィールド』に記されているように、 consoleField プロパティー dataType を設定する必要があります。
> 25
= 'Sarasota'
AGE > 28 AND CITY = 'Sarasota'
表示されているように、EGL はユーザーが提供する各文節の間に演算子 AND を置きます。
次の表は、有効なユーザーの入力およびそれによる文節を示しています。この表中の「単純な SQL 型」という句は、 構造化されておらず、LOB 類似の型でもない、SQL 型を指しています。
シンボル | 定義 | サポートされるデータ型 | 例 | 結果としてできた文節 (C という名の文字列用) | 結果としてできた文節 (C という名の数列用) |
---|---|---|---|---|---|
= | 等しい | 単純な SQL 型 | =x、==x | C = 'x' | C = x |
> | より大きい | 単純な SQL 型 | >x | C > 'x' | C > x |
< | 未満 | 単純な SQL 型 | <x | C < 'x' | C < x |
>= | 以上 | 単純な SQL 型 | >=x | C >= 'x' | C >= x |
<= | 以下 | 単純な SQL 型 | <=x | C <= 'x' | C <= x |
<> または != | 等しくない | 単純な SQL 型 | <>x または !=x | C != 'x' | C != x |
.. | 範囲 | 単純な SQL 型 | x.y または x..y | C BETWEEN 'x' AND 'y' | C BETWEEN x AND y |
* | ストリングのワイルドカード (次の表に説明のとおり) | CHAR | *x または x* または *x* | C MATCHES '*x' | 適用不可 |
? | 単一文字のワイルドカード (次の表に記載のとおり) | CHAR | ?x、x?、?x?、 |
C MATCHES '?x' | 適用不可 |
| | 論理 OR | 単純な SQL 型 | x|y | C IN ('x', 'y') | C IN (x, y) |
等号 (=) により、IS NULL を意味することができ、また、不等号 (!= または <>) により、IS NOT NULL を意味することができます。
MATCHES 文節は、次の表に記載のワイルドカード文字の 1 つをユーザーが指定することによって作られます。
シンボル | 結果 |
* | ゼロまたはそれ以上の文字に一致します。 |
? | すべての単一文字に一致します。 |
[ ] | すべての囲まれた文字に一致します。 |
- (ハイフン) | 大括弧内の文字間で使用される場合、ハイフンは、2 つの文字の間の範囲で (2 つの文字を含む) すべての文字に一致します。 例えば、[a-z] は、すべての小文字または小文字の範囲の特殊文字に一致します。 |
^ | 大括弧で使用されると、最初のキャレットは、大括弧内に含まれないすべての文字と一致します。 例えば、[^abc] は a、b、または c を除くすべての文字と一致します。 |
¥ | デフォルトのエスケープ文字です。次の文字はリテラルです。 ストリングに含まれるすべてのワイルドカード文字からワイルドカードの効果を除くことができます。 |
大括弧の外のその他すべての文字 | 正確に一致する必要があります。 |
関連概念
コンソール・ユーザー・インターフェース
関連リファレンス
EGL ライブラリー ConsoleLib
ConsoleUI パーツおよび関連する変数
UNIX 用の ConsoleUI 画面オプション
EGL ソース形式のテキスト UI プログラム
関連タスク
ConsoleUI を持つインターフェースの作成