論理式 は、真または偽に解決され、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、PACF、SMALLFLOAT |
CHAR | CHAR、DATE、HEX、MBCHAR、NUM、TIME、TIMESTAMP |
DATE | CHAR、DATE、NUM、TIMESTAMP |
DBCHAR | DBCHAR |
DECIMAL | BIN、DECIMAL、FLOAT、MONEY、NUM、NUMC、PACF、SMALLFLOAT |
HEX | CHAR、HEX |
MBCHAR | CHAR、MBCHAR |
MONEY | BIN、DECIMAL、FLOAT、MONEY、NUM、NUMC、PACF、SMALLFLOAT |
NUM | BIN、CHAR、DATE、DECIMAL、FLOAT、MONEY、NUM、NUMC、PACF、SMALLFLOAT、TIME |
NUMC | BIN、DECIMAL、FLOAT、MONEY、NUM、NUMC、PACF、SMALLFLOAT |
PACF | BIN、DECIMAL、FLOAT、MONEY、NUM、NUMC、PACF、SMALLFLOAT |
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 ステートメントおよびコマンドの構文図