ANS85 

EVALUATE 文

EVALUATE 文では、複数分岐や複数接合を含む構造を記述する。この文では、複数の条件が評価される場合もある。実行時要素の後続のアクションは、これらの評価結果に応じて異なる。

一般形式


EVALUATE Statement

構文規則

  1. EVALUATE 文の最初の WHEN 指定の前にある作用対象または語 TRUE および FALSEを、個別には選択主体といい、指定項目を総称して選択主体セットという。
  2. EVALUATE 文の WHEN 指定内の作用対象または語 TRUE、FALSE、および ANY を、個別には選択対象といい、指定項目を総称して選択対象セットという。
  3. 語 THROUGH および THRU は同等である。
  4. THROUGH 指定で連結した 2 つの作用対象は、同じ字類とする。このように連結した 2 つの作用対象は、単一の選択対象を構成する。
  5. 各選択対象セット内の選択対象の数は、選択主体の数と等しくする。
  6. 選択対象セットの各選択対象は、以下の規則に準拠して、選択主体セットの同じ順位の選択主体と対応させる。
    1. 選択対象内の一意名、定数、または算術式は、選択主体セットの対応する作用対象と比較するための有効な作用対象とする。「手続き部」の章の「比較条件」トピックを参照。
    2. 選択対象である condition-1、condition-2、あるいは語 TRUE または FALSE は、選択主体セット内の条件式あるいは語 TRUE または FLASE と対応させる。
    3. 語 ANY は、任意の種類の選択主体と対応付けられる。
    4. VSC2MF 一意名を使用できる箇所では、浮動小数点数データ項目を参照できる。
    5. VSC2MF 数値定数を使用できる箇所では、浮動小数点数定数を使用できる。
    6. VSC2MF 一意名を使用できる箇所では、ポインター データ項目を参照できる。
  7. 選択対象の左端部分が、関係演算子、一意名のないクラス条件、一意名のない符号条件、または算術式のない符号条件の場合、選択対象は部分式である。
  8. ISO2002MF 選択対象として partial-expression-1 または partial-expression-2 を指定する場合、これらは一意名、定数、または算術式である選択主体と対応させる。partial-expression-1 および partial-expression-2 は一連の COBOL の語とし、対応する選択主体の後ろに続けた際に、結果テキストが有効な条件式となるものとする。

一般規則

  1. EVALUATE 文を実行すると、選択主体および選択対象をそれぞれ評価し、単一の数値、単一の文字値、数値の範囲、文字値の範囲、または真理値を割り当てた場合と同様に処理される。これらの値は次のように決定される。
    1. identifier-1 および identifier-2 が指定する選択主体と、identifier-3 および identifier-5 が指定する選択対象のうち NOT または THROUGH 指定を伴わないものには、その一意名が参照するデータ項目の値および字類が割り当てられる。
    2. literal-1 および literal-2 が指定する選択主体と、literal-3 および literal-5 が指定する選択対象のうち NOT と THROUGH 指定のどちらも伴わないものには、その指定した定数の値および字類が割り当てられる。literal-3 および literal-5 が表意定数の ZERO である場合、それらには対応する選択主体の字類が割り当てられる。
    3. 算術式として expression-1 または expression-2 が指定された選択主体と、NOT および THROUGH 指定のどちらも伴わない選択対象のうち arithmetic-expression-1 または arithmetic-expression-3 が指定されたものには、算術式の評価規則に従って数値が割り当てられる。「手続き部」の章の「算術式」トピックを参照。
    4. 条件式として expression-1 または expression-2 が指定された選択主体と、condition-1 または condition-2 が指定された選択対象には、条件式の評価規則に従って真理値が割り当てられる。「手続き部」の章の「条件式」トピックを参照。
    5. 語 TRUE または FALSE で指定した選択主体または選択対象には、真理値が割り当てられる。語 TRUE で指定した項目には真理値「true」が割り当てられ、語 FALSE で指定した項目には真理値「false」が割り当てられる。
    6. 語 ANY で指定した選択対象は、それ以上評価されない。
    7. 選択対象に NOT ではなく THROUGH を指定すると、選択主体と比較した場合の値の範囲は、比較の規則に基づいて、最初の作用対象以上かつ 2 番目の作用対象以下となるすべての値である。「手続き部」の章の「比較条件」トピックを参照。
    8. 選択対象に NOT を指定すると、その項目に割り当てられる値は、NOT を指定しない場合にその項目に割り当てられる値 (または値の範囲) と等しくないすべての値である。
  2. 次に EVALUATE 文の実行は、選択主体および選択対象に割り当てられた値が比較されて、WHEN 指定が選択主体セットを満たすかどうかを判別する場合と同様に進む。この比較は次のとおり処理される。
    1. 最初の WHEN 指定で、選択対象セット内の各選択対象が、選択主体セット内の同じ順位の選択主体と比較される。
      1. 比較対象の項目に割り当てられている値が、数値、文字値、数値の範囲、または文字値の範囲である場合、選択対象に割り当てられている値または値の範囲内のいずれかの値が、比較規則に従って選択主体に割り当てられている値と等しければ、その比較条件は満たされる。「手続き部」の章の「比較条件」トピックを参照。
      2. 比較対象の項目に割り当てられている値が真理値である場合は、それらの項目に同じ真理値が割り当てられていると、その比較条件は満たされる。
      3. 比較対象の選択対象が語 ANY で指定されている場合は、その比較条件は常に満たされる。この場合は、選択主体の値は任意の値でよい。
    2. 比較対象の選択対象セット内の各選択対象に対して上記の比較条件が満たされると、その選択対象セットを含む WHEN 指定が、選択主体セットを満たすものとして選択される。
    3. 比較対象の選択対象セット内の選択対象内のうち、上記の比較条件を満たさないものが 1 つ以上あると、その選択対象セットは選択主体セットを満たさない。
    4. この手順は、後続の選択対象セットに対して、ソース要素で記述された順序で繰り返し実行され、選択主体セットを満たす WHEN 指定が選択された時点、またはすべての選択対象セットの比較が完了した時点で、この処理は終了する。
  3. 比較処理が終了すると、EVALUATE 文の実行は次のとおり進む。
    1. WHEN 指定が選択されている場合、その WHEN 指定の後に続く最初の imperative-statement-1 に処理が進む。
    2. WHEN 指定が選択されておらず、WHEN OTHER が指定されている場合、imperative-statement-2 に処理が進む。
    3. EVALUATE 文の実行は、選択した WHEN 指定または WHEN OTHER 指定の範囲の最後に達した時点、あるいは WHEN 指定が選択されておらず WHEN OTHER が指定されていない場合に終了する。
  4. ISO2002MF 選択対象が partial-expression-1 または partial-expression-2 で指定されている場合、対応する選択主体は語 TRUE であると見なされる。選択対象はそれぞれ condition-1 または condition-2 と見なされる。ここで、condition-1 または condition-2 はそれぞれ、元の対応する selection-subject-1 または selection-subject-2 に続く partial-expression-1 または partial-expression-2 から導出される条件式である。