論理式

論理式は、条件文およびループ文 (ifwhileforcase など) を通してプログラム・ロジックがたどるパスを決定します。

次の表は、基本論理式の演算子とオペランドを要約したものです。 基本論理式は、オペランド、比較演算子、および第 2 オペランドから構成されます。

表 1. 基本論理式
第 1 オペランド 比較演算子 第 2 オペランド
日付/時刻式 ==, != , <, >, <=, >= 日付/時刻式

最初および 2 番目の式は、互換タイプのものでなければなりません。 EGL における代入の互換性 を参照してください。

日付/時刻を比較する場合、より大符号 (>) はより遅い時刻を意味し、より小符号 (<) はより早い時刻を意味します。

数式 ==, != , <, >, <=, >= 数式
ストリング式 ==, != , <, >, <=, >= ストリング式

EGL における代入の互換性 を参照してください。

ストリング式 like 正規表現

ストリング式 の比較対象となる文字フィールドまたはリテラル。 比較は、左から右へと文字位置単位で実行されます。 正規表現 には、ワイルドカードとエスケープ文字を含めることができます。

ストリング式 matches 正規表現

ストリング式 の比較対象となる文字フィールドまたはリテラル。 比較は、左から右へと文字位置単位で実行されます。 正規表現 には、ワイルドカードとエスケープ文字を含めることができます。like 演算子と matches 演算子とでは、正規表現の規則が異なります。

NUM または CHAR 値 ==, != , <, >, <=, >= NUM または CHAR 値
searchValue in arrayName

詳しくは、in 演算子を参照してください。

基本レコード内の変数
  • is
  • not
次のどちらかを実行する。
  • blanks。 文字変数の値がブランクのみであるかどうかをテストするためのキーワード。
  • numeric。 文字変数 (DBCHAR 型を除く) の値が数値であるかどうかをテストするためのキーワード。
sysVar.systemType
  • is
  • not
詳しくは、systemTypeを参照してください。
record name
  • is
  • not
レコード編成に適合した入出力エラー値。入出力エラー値 を参照してください。

複合論理式

「and」(&&) あるいは「or」演算子 (||) を使用して基本式のペアを組み合わせ、複合式を作成することができます。 また、「not」演算子 (!) を使用して、式の値を反対にする (TRUE を FALSE に、FALSE を TRUE に変更) ことができます。

論理式に、1 つ以上の「or」演算子のオペランドである基本論理式が含まれている場合、EGL は、優先順位規則に従って式を評価します。 基本論理式の 1 つが TRUE に解決されると、評価が停止されます。 以下の例を考えてください。
  var01 == var02 || 3 in array03 || x == y

var01var02 が等しくない場合、評価が続行されます。 値 3 が array03 内にある場合、式全体が TRUE となり、EGL は最後の基本論理式 (x == y) を評価する必要がありません。

同様に、基本論理式を「and」演算子で結合した場合、基本論理式の 1 つが FALSE に解決されると、EGL は評価を停止します。 次の例では、 var01 が var02 と同じでないことが判明した時点で、評価が停止されます。

  var01 == var02 && 3 in array03 && x == y
論理式で括弧をペアで使用すると、次のことが可能になります。
  • 評価の順序を変更する。
  • 式の意味を明確にする。
  • 「not」演算子 (!) を使用可能にする。 この演算子を使用すると、解決結果が、括弧で囲まれた論理式 (演算子の直後に置く) の値とは反対の論理型値 (TRUE または FALSE) になります。

互換性

表 2. 論理式の互換性に関する考慮事項
プラットフォーム 問題
COBOL 生成 COBOL では、MBCHAR や DBCHAR を UNICODE や STRING と比較する方法が提供されていません。
JavaScript 生成 is 演算子および not 演算子のバリエーションのうち、サポートされるのは、sysVar.systemType の使用と、blanksnumeric のレコード固有テストのみです。

サポートされないデータ型は、ArrayDictionary、BIN (小数点以下の桁数を含むもの)、BLOB、CHAR、CLOB、DBCHAR、HEX、INTERVAL、MBCHAR、NUMC、STRING (サイズ制限を含むもの)、PACF、UNICODE、および構造化されたレコード・パーツです。

VisualAge® Generator 互換モード is または not を使用して、 vgLib.getVAGSysType() から戻された値をテストすることはできません。

フィードバック