ILE COBOL 解説書

複合条件

複合条件は、単純条件、結合条件、複合条件のうち、任意のものを論理演算子により結合するか、または論理否定することによって作られます。

それぞれの論理演算子の前後には、スペースが 1 つずつなければなりません。 次の表は、論理演算子とその意味を示しています。


表 24. 論理演算子とその意味

論理演算子  名前  意味
  AND 論理積 両方の条件が真であるときは、真理値はである。
  OR 包含 OR (包含論理和) いずれか一方または両方の条件が真であるときに、である。
  NOT 論理否定 真理値の逆 (条件が偽であれば、真理値はである)。

括弧で囲まれていない限り、次の規則が (番号の順で) 優先します。

  1. 算術演算
  2. 単純条件
  3. NOT
  4. AND
  5. OR

複合条件 (括弧で囲まれているかどうかに関係なく) の真理値は、次の値のいずれかに関して、記述されたすべての論理演算子が相互に作用した結果の真理値です。

複合条件は、次のいずれかとすることができます。

否定単純条件

単純条件を否定するには、論理演算子 NOT を使用します。否定単純条件は、単純条件の反対の真理値を与えます。

否定単純条件 - 形式
 
>>-NOT--単純条件-----------------------------------------------><
 
 

結合条件

複数の条件を論理的に結合して、1 つの結合条件を作成できます。

結合条件 - 形式
 
           .-----------------.
           V                 |
>>-条件-1----+-AND-+--条件-2-+---------------------------------><
             '-OR--'
 
 

次のどの条件でも結合できます。


表 25. 結合条件 -- 許されるエレメントの順序

結合条件の エレメント 左端 左端ではない場合、 以下のものがその 直前に指定可能。 右端 右端ではない場合、 以下のものがその 直後に指定可能。
単純条件 あり OR
NOT
AND
(
あり OR
AND
)
OR
AND
なし 単純条件
)
なし 単純条件
NOT
(
NOT あり OR
AND
(
なし 単純条件
(
( あり OR
NOT
AND
(
なし 単純条件
NOT
(
) なし 単純条件
)
あり OR
AND
)

1 つの結合条件の中で AND または OR のいずれか一方 (両方ではなく) を排他的に使用するときは、括弧は不要です。

ただし、演算子およびオペランドの正しい論理関係を維持するために暗黙の優先規則を変更する場合には、括弧が必要になることがあります。

左括弧と右括弧は対になっていなければならず、それぞれの左括弧はそれに対応する右括弧より左側になければなりません。

以下の表は、論理演算子と条件 C1 と C2 の関係を示したものです。

表 26. 結合条件の論理演算子と演算結果

C1 の値 C2 の値 C1 AND C2 C1 OR C2 NOT (C1 AND C2) NOT C1 AND C2 NOT (C1 OR C2) NOT C1 OR C2

関連情報

条件式の評価

括弧を使用した場合には、結合条件の論理演算は次の順序で行われます。

  1. 括弧内の条件が最初に評価されます。
  2. 複数の括弧でネストされている場合には、最も内側の条件から最も外側の条件の順で評価が行われます。

括弧を使用しない場合 (あるいは、括弧のレベルが同順位でない場合) には、結合条件は次の順序で評価されます。

  1. 算術式
  2. 単純条件 (次の順序で)
    1. 比較条件
    2. クラス
    3. 条件名
    4. スイッチ状況
    5. 符号条件
  3. 否定単純条件 (項目 2 と同じ順序)
  4. 結合条件 (次の順序で)
    1. AND
    2. OR
  5. 否定結合条件 (次の順序で)
    1. AND
    2. OR
  6. 同じ評価順序レベルの連続オペランドは、左から右へ評価されます。 ただし、結合条件の真理値は、コンポーネントのすべての条件の真理値を評価せずに決定されることがあります。

結合条件のコンポーネントである条件は、左から右へ評価されます。 ある条件の真理値が、結合条件の前のエレメントの評価によって影響を受けない場合には、これらのエレメントの評価は行われません。 ただし、その条件の真理値は、この段落の始めに述べたように、常に同じになります (あたかもその条件全体が演算されているかのように)。

値は、それらを含む条件が評価されるとき、算術式および関数に設定されます。 同様に否定条件は、それらが示す複合条件を評価する必要が生じたとき、評価されます。

たとえば、次のとおりです。
NOT A IS GREATER THAN B OR A + B IS EQUAL
TO C AND D IS POSITIVE

この例は、次のように括弧で囲まれているかのように評価されます。
(NOT (A IS GREATER THAN B)) OR (((A+B) IS EQUAL
TO C) AND (D IS POSITIVE))

この例での評価順序は次のとおりです。

  1. (NOT (A IS GREATER THAN B)) が評価されます。 これが真の場合には、式が真なので、条件の残りの部分は評価されません。
  2. (A+B) が評価され、中間結果 x が求められます。
  3. (x IS EQUAL TO C) が評価されます。 これが偽の場合には、式が偽なので、条件の残りの部分は評価されません。
  4. (D IS POSITIVE) が評価され、式の最終的な真理値が求められます。

省略された結合比較条件

比較条件が括弧を間に入れずに連続して記述されている場合、最初の比較条件の後の任意の比較条件を、以下の 2 つの方法のいずれかで省略することが可能です。

省略された結合比較条件 - 形式
 
>>-比較条件----------------------------------------------------->
 
   .---------------------------------------------------------------.
   V                                                               |
>----+-AND-+-+----+-+----------+-+------------------+-オブジェクト-+-><
     '-OR--' '-IS-' |     (1)  | +-GREATER-+------+-+
                    '-NOT------' |         '-THAN-' |
                                 +->----------------+
                                 +-LESS--+------+---+
                                 |       '-THAN-'   |
                                 +-<----------------+
                                 +-EQUAL--+----+----+
                                 |        '-TO-'    |
                                 +-=----------------+
                                 +-| 「以上」条件 |-+
                                 +->=---------------+
                                 +-| 「以下」条件 |-+
                                 '-<=---------------'
 
「以上」条件:
 
|--GREATER--+------+--OR EQUAL--+----+--------------------------|
            '-THAN-'            '-TO-'
 
「以下」条件:
 
|--LESS--+------+--OR EQUAL--+----+-----------------------------|
         '-THAN-'            '-TO-'
 
 

注:

  1. NOT GREATER THAN OR EQUAL TO、NOT >=、 NOT LESS THAN OR EQUAL TO、および NOT <= は IBM 拡張です。

オブジェクトとは、その前にある比較条件のサブジェクトと比較できる、任意のデータ項目または式のことです。

連続する一連の比較条件では、両方の省略形を指定できます。省略形の条件は次のように評価されます。

  1. 最後に記述されたサブジェクトが省略されたサブジェクトであるものとして。
  2. 最後に記述された関係演算子が、省略された関係演算子であるものとして。

その結果の結合条件は 表 27 に示したような、結合条件でのエレメントの順序の規則に従っていなければなりません。

NOT という語は、NOT GREATER THAN、NOT >、NOT LESS THAN、NOT <、 NOT EQUAL TO、および NOT = の形式の関係演算子の一部であると見なされます。

他の位置にある NOT は、論理演算子であると見なされます (したがって、否定比較条件となります)。

以下の例では、省略された結合比較条件に括弧が付いたものと付いていないもの、およびそれらと同じものを省略していない形が示されています。

表 27. 省略された結合比較条件

省略された結合比較条件 同等の内容
A = B AND NOT < C OR D
((A = B) AND (A NOT < C))  OR (A NOT < D)
A NOT > B OR C (A NOT > B)  OR (A NOT > C)
NOT A = B OR C (NOT (A = B)) OR (A = C)
NOT (A = B OR < C) NOT ((A = B) OR (A < C))
NOT (A NOT = B AND C AND NOT D) NOT ((((A NOT = B) AND (A NOT = C))  AND (NOT (A NOT = D))))


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]