Rational Developer for System z
COBOL for Windows バージョン 7.5 言語解説書


複合条件

2 つ以上の条件を論理的に結合することによって、複合条件を形成することができます。

フォーマット
構文図を読む構文図をスキップする           .-----------------.  
           V                 |  
>>-条件-1----+-AND-+--条件-2-+---------------------------------><
             '-OR--'            
 

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

表 30. 複合条件 — 許されるエレメントのシーケンス
複合条件エレメント 左端 左端にないときは、次のものが直前にある 右端 右端にないときは、次のものが直後にある
単純条件 はい OR
NOT
AND
(
はい OR
AND
)
OR
AND
いいえ 単純条件
)
いいえ 単純条件
NOT
(
NOT はい OR
AND
(
いいえ 単純条件
(
( はい OR
NOT
AND
(
いいえ 単純条件
NOT
(
) いいえ 単純条件
)
はい OR
AND
)

1 つの複合条件の中で AND か OR のどちらか一方だけしか使用されていない場合は、 括弧を付ける必要はありません。 ただし、演算子とオペランドの正しい論理関係を保持するために、 暗黙の優先順位規則に変更を加える場合には括弧を付けることもできます。

左括弧と右括弧には 1 対 1 の対応関係がなければなりません。 また左括弧は対応した右括弧の左側になければなりません。

以下の表は、論理演算子と条件 C1 および条件 C2 の間の関係をわかりやすく示したものです。

表 31. 論理演算子と複合条件の評価結果
C1 の
C2 の
C1
AND
C2
C1 OR
C2
NOT
(C1
AND
C2)
NOT
C1
AND
C2
NOT
(C1
OR
C2)
NOT C1
OR C2

条件の評価順序

括弧は、明示による場合も暗黙による場合も、複合条件内の包含レベルを定義します。 同じ包含レベルで論理演算子 AND または OR だけで結合された 2 つ以上の条件は、 複合条件内の 1 つの階層レベルを確立します。したがって、複合条件全体が複数のレベルからなる階層のネスト構造であり、 複合条件全体は、最も包括的な階層レベルを表します。

ここでは、複合条件全体の中での条件の評価は、条件の左側から始まります。ある階層レベル内のコンポーネントである接続条件は左から右への順に評価され、 その階層レベルの評価は、その階層レベル内のコンポーネントであるすべての接続条件が評価されたかどうかに関係なく、その階層レベルに関する真の値が決定されると終了します。

算術式と算術関数に関する値は、それらを含む複合条件が評価される場合には、 その評価が行われたときに設定されます。同様に否定条件は、それらの条件が表現している複合条件を評価する必要がある場合には、それが実行されたときに評価されます。以下に例を示します。

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)) が 評価され、ある中間的な真の値として、t1 が得られます。t1 真であれば複合条件が真となり、それ以上の評価は行われません。t1 が偽であれば、評価はさらに次のように継続されます。
  2. (A + B) が評価され、ある中間的な結果として x が得られます。
  3. (x IS EQUAL TO C) が評価され、ある中間的な真の値として t2 が得られます。t2 が偽であれば、複合条件自体が偽となり、それ以上の評価は行われません。t2 が真ならば、評価はさらに次のように継続されます。
  4. (D IS POSITIVE) が評価され、 ある中間的な真の値として t3 が得られます。t3 が偽ならば、複合条件は偽となります。t3 が真ならば、複合条件が真となります。

ご利用条件 | フィードバック

Copyright IBM Corporation 1996, 2008.
このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)