論理式 は、真または偽に解決され、if 文か while 文、あるいは (状況によっては) case 文の中で基準として使用されます。
基本論理式は、オペランド、比較演算子、および 2 番目の演算子から構成されます。詳細については、次の構文図と表を参照してください。

| 第 1 オペランド | 比較演算子 | 第 2 オペランド |
|---|---|---|
| 日時式 | 次のいずれか ==, != , <, >, <=, >= | 日時式 最初および 2 番目の式は、互換タイプのものでなければなりません。 日付/時刻を比較する場合、より大符号 (>) は遅い時刻を意味し、より小符号 (<) は早い時刻を意味します。 |
| 数式 | 次のいずれか ==, != , <, >, <=, >= | 数式 |
| ストリング式 | 次のいずれか ==, != , <, >, <=, >= | ストリング式 |
| ストリング式 | like | likeCriterion。これは、ストリング式 を左から右へ文字位置ごとに比較する対象となる文字フィールドまたはリテラルです。
この機能の用途は、SQL 照会におけるキーワード like の用途によく似ています。
escChar は 1 文字からなるフィールドまたはリテラルで、1 つのエスケープ文字へ解決されます。 詳細については、『like 演算子』を参照してください。 |
| ストリング式 | matches | matchCriterion。これは、ストリング式 を左から右へ文字位置ごとに比較する対象となる文字フィールドまたはリテラルです。
この機能の用途は、UNIX® または Perl における正規表現 の用途によく似ています。
escChar は 1 文字からなるフィールドまたはリテラルで、1 つのエスケープ文字へ解決されます。 詳細については、『matches 演算子』を参照してください。 |
| NUM 型または CHAR 型の値 (第 2 オペランドの説明を参照) | 次のいずれか ==, != , <, >, <=, >= | NUM 型または CHAR 型の値。次のものを指定できます。
|
| searchValue | in | arrayName。詳細については、『in』を参照してください。 |
| SQL レコードに入っていないフィールド | 次のいずれか
|
次のいずれか
|
| SQL レコード内のフィールド | 次のいずれか
|
次のいずれか
trunc テストが真に解決されるのは、データベースの列がフィールドよりも長い場合に限られます。値がフィールドに移動した後、またはフィールドが NULL に設定された後、テストの値は偽になります。 |
| textField (テキスト書式内のフィールドの名前) | 次のいずれか
|
次のいずれか
|
| ConverseVar.eventKey | 次のいずれか
|
詳細については、『ConverseVar.eventKey』を参照してください。 |
| sysVar.systemType | 次のいずれか
|
詳細については、『sysVar.systemType』を参照してください。 is または not を使用して、VGLib.getVAGSysType により戻された値をテストすることはできません。 |
| record name | 次のいずれか
|
レコード編成に適合した入出力エラー値。『入出力エラー値』を参照してください。 |
次の表は、比較演算子をまとめたものです。比較演算子は、それぞれ真または偽に解決される式の中で使用されます。
| 演算子 | 用途 |
|---|---|
| == | = 演算子は、2 つのオペランドの値が同じであるかどうかを示します。 |
| != | != 演算子は、2 つのオペランドの値が異なっているかどうかを示します。 |
| < | less than 演算子は、1 番目のオペランドの値が 2 番目のオペランドの値より小さいかどうかを示します。 |
| > | greater than 演算子は、1 番目のオペランドの値が 2 番目のオペランドの値より大きいかどうかを示します。 |
| <= | less than or equal to 演算子は、1 番目のオペランドの値が 2 番目のオペランドの値以下であるかどうかを示します。 |
| >= | greater than or equal to 演算子は、1 番目のオペランドの値が 2 番目のオペランドの値以上であるかどうかを示します。 |
| in | in 演算子は、1 番目のオペランドが、配列を参照する 2 番目のオペランドの値であるかどうかを示します。 詳細については、『in』を参照してください。 |
| is | is 演算子は、1 番目のオペランドが 2 番目のオペランドのカテゴリーに含まれるかどうかを示します。詳細については、前の表を参照してください。 |
| like | like 演算子は、『like 演算子』で説明されているように、2 つあるオペランドの最初のオペランドに含まれている文字が、第 2 オペランドと一致するかどうかを示します。 |
| matches | matches 演算子は、『matches 演算子』で説明されているように、2 つあるオペランドの最初のオペランドに含まれている文字が、第 2 オペランドと一致するかどうかを示します。 |
| not | not 演算子は、1 番目のオペランドが 2 番目のオペランドのカテゴリーに含まれないかどうかを示します。詳細については、前の表を参照してください。 |
次の表とそれに続く説明は、オペランドの型に関する互換性の規則を示しています。
| 第 1 オペランドのプリミティブ型 | 第 2 オペランドのプリミティブ型 |
|---|---|
| BIN | BIN、DECIMAL、FLOAT、MONEY、NUM、NUMC、 |
| CHAR | CHAR、DATE、HEX、MBCHAR、NUM、TIME、 |
| DATE | CHAR、DATE、NUM、TIMESTAMP |
| DBCHAR | DBCHAR |
| DECIMAL | BIN、DECIMAL、FLOAT、MONEY、NUM、NUMC、 |
| HEX | CHAR、HEX |
| MBCHAR | CHAR、MBCHAR |
| MONEY | BIN、DECIMAL、FLOAT、MONEY、NUM、NUMC、 |
| NUM | BIN、CHAR、DATE、DECIMAL、FLOAT、MONEY、 |
| NUMC | BIN、DECIMAL、FLOAT、MONEY、NUM、NUMC、 |
| PACF | BIN、DECIMAL、FLOAT、MONEY、NUM、NUMC、 |
| TIME | CHAR、NUM、TIME、TIMESTAMP |
| TIMESTAMP | CHAR、DATE、TIME、TIMESTAMP |
| UNICODE | UNICODE |
より複雑な式を作成するには、and (&&) 演算子または or 演算子 (||) のいずれかを使用して、比較的単純な一組の式を結合します。 その他に、not 演算子 (!) を使用することもできますが、これについては後で説明します。
field01 == field02 || 3 in array03 || x == y
field01 と field02 が等しくない場合は、評価が続行されます。 しかし、値 3 が array03 内にある場合は、式全体が真であることが証明されるため、最後の基本論理式 (x == y) は評価されません。
同様に、基本論理式を and 演算子で結合した場合、その 1 つが偽に解決されると、EGL は評価を停止します。次の例では、field01 が field02 と同じでないことが判明した時点で、評価が停止されます。
field01 == field02 && 3 in array03 && x == y
次の例では、value1 には「1」、value2 には「2」のように指定されているとします。
/* == 真となる式 */
value5 < value2 + value4
/* == 偽となる式 */
!(value1 is numeric)
/* == 生成された出力が真となる
Windows 2000、Windows NT、または
z/OS UNIX システム・サービス */
sysVar.systemType is WIN || sysVar.systemType is USS
/* == 真となる式 */
(value6 < 5 || value2 + 3 >= value5) && value2 == 2
関連概念
変更データ・タグおよびプロパティー
関連タスク
EGL 文およびコマンドの構文図