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


EVALUATE ステートメント

EVALUATE ステートメントは、一連のネストされた IF ステートメントの省略表現を提供します。 このステートメントは、複数の条件を評価することができます。以降の処置は、これらの評価の結果次第です。

フォーマット
構文図を読む構文図をスキップする>>-EVALUATE--+-ID-1-------+--+---------------------------+------>
             +-リテラル-1-+  | .-----------------------. |  
             +-式-1-------+  | V                       | |  
             +-TRUE-------+  '--- ALSO--+-ID-2-------+-+-'  
             '-FALSE------'             +-リテラル-2-+      
                                        +-式-2-------+      
                                        +-TRUE-------+      
                                        '-FALSE------'      
 
   .------------------------------------------------------------------.  
   | .----------------------------------------.                       |  
   V V                                        |                       |  
>------WHEN--| 句 1 |--+--------------------+-+--命令ステートメント-1-+-->
                       | .----------------. |                            
                       | V                | |                            
                       '---ALSO--| 句 2 |-+-'                            
 
>--+----------------------------------+--+--------------+------><
   '-WHEN OTHER--命令ステートメント-2-'  '-END-EVALUATE-'  
 
句 1:
 
|--+-ANY------------------------------------------------------+--|
   +-条件-1---------------------------------------------------+  
   +-TRUE-----------------------------------------------------+  
   +-FALSE----------------------------------------------------+  
   '-+-----+--+-ID-3-------+--+-----------------------------+-'  
     '-NOT-'  +-リテラル-3-+  '-+-THROUGH-+--+-ID-4-------+-'    
              '-算術式-1---'    '-THRU----'  +-リテラル-4-+      
                                             '-算術式-2---'      
 
句 2:
 
|--+-ANY------------------------------------------------------+--|
   +-条件-2---------------------------------------------------+  
   +-TRUE-----------------------------------------------------+  
   +-FALSE----------------------------------------------------+  
   '-+-----+--+-ID-5-------+--+-----------------------------+-'  
     '-NOT-'  +-リテラル-5-+  '-+-THROUGH-+--+-ID-6-------+-'    
              '-算術式-3---'    '-THRU----'  +-リテラル-6-+      
                                             '-算術式-4---'      
 
WHEN 句の前にあるオペランド
これらのオペランドは、2 つの方法のいずれかにより解釈されます。その解釈は、それらが指定される方法に応じて異なります。
WHEN 句の中のオペランド
これらのオペランドは、2 つの方法のいずれかにより解釈されます。その解釈は、それらが指定される方法に応じて異なります。
ALSO
一連の選択サブジェクト内の選択サブジェクトを分離し、一連の選択オブジェクト内の選択オブジェクトを分離します。
THROUGH と THRU
これらのキーワードは同じ意味です。

THRU 句によって結合されている 2 つのオペランドは、同じクラスに属していなければなりません。 このようにして結合された 2 つのオペランドは、1 つの選択オブジェクトを構成します。

選択オブジェクトの集合内にある選択オブジェクトの個数は、選択サブジェクトの個数と一致しなければなりません。

選択オブジェクトの集合内にあるそれぞれの選択オブジェクトは、次に示す規則に従って、 選択サブジェクトの集合内にある同じ順序位置を持つ選択サブジェクトに対応していなければなりません。

 

END-EVALUATE 句

この明示的範囲終了符号は、EVALUATE ステートメントの範囲を区切るために使用されます。 END-EVALUATE 句を使うことによって、 条件的な EVALUATE ステートメントを別の条件ステートメントの中にネストすることができます。

詳しくは、範囲区切りステートメントを参照してください。

値の決定

EVALUATE ステートメントを実行すると、それぞれの選択サブジェクトと選択オブジェクトが評価され、数字、英数字、DBCS、または国別文字の値、数字、英数字、DBCS、または国別文字の値の範囲、または真の値が割り当てられるように演算が実行されます。 これらの値は、次のようにして決定されます。

選択サブジェクトと選択オブジェクトの比較

EVALUATE ステートメントの実行は、選択サブジェクトに割り当てられた値と選択オブジェクトに割り当てられた値を比較し、 いずれかの WHEN 句が選択サブジェクトの集合を満たすかどうかを判別するように処理されます。 この比較は、次のようにして行われます。

  1. 選択オブジェクトの集合内にある各選択オブジェクトは、それぞれにとって最初の WHEN 句に出会うと、 選択サブジェクトの集合内にある同じ順序位置を持つ選択サブジェクトと比較されます。比較が条件を満たすためには、以下の条件のうち 1 つを満たす必要があります。
    1. 比較される項目に、数字、英数字、DBCS、または国別文字の値、または数字、英数字、DBCS、または国別文字の値の範囲が割り当てられている場合、選択オブジェクトに割り当てられた値、または値の範囲内の 1 つの値が、比較の規則に従って、選択サブジェクトに割り当てられた値と等しい場合に、比較条件を満足したことになります。
    2. 比較される項目が、真の値を割り当てられている場合には、 両方の項目が同じ真の値を割り当てられていれば、 比較は条件を満たしたことになります。
    3. 比較される選択オブジェクトが、キーワード ANY を付けて指定されている場合には、 選択サブジェクトの持つ値に関係なく、比較は常に条件を満たします。
  2. 比較される選択オブジェクトの集合内のすべての選択オブジェクトについて、 上記の比較が条件を満たした場合には、その選択オブジェクトの集合を含む WHEN 句が、選択サブジェクトの集合を満たすものとして選ばれます。
  3. 比較される選択オブジェクトの集合内のすべての選択オブジェクトについて、 上記の比較が条件を満たさなかった場合には、その選択オブジェクトの集合は、 選択サブジェクトの集合を満足しなかったことになります。
  4. このプロシージャーは、以降の選択オブジェクトの集合について、ソース・テキスト中にそれらが現れる順番に繰り返され、選択サブジェクトの集合を満たすいずれかの WHEN 句が選ばれるか、または、選択オブジェクトの全集合がなくなるまで行われます。

EVALUATE ステートメントの実行

比較演算が完了すると、EVALUATE ステートメントの実行は、以下の順序で進められます。


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

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