ネストされた一連の IF ステートメントではなく、EVALUATE ステートメントを使用して、幾つかの条件をテストし、かつ それぞれについて異なるアクションを指定できます。 したがって、EVALUATE ステートメントを使用すると、ケース構造 またはデシジョン・テーブルをインプリメントすることができます。
また 以下の例に示されているように、 EVALUATE ステートメントを使用して、複数の条件で同じ処理が行われるようにすることもできます。
例: THRU 句を使用した EVALUATE
例: 複数の WHEN 句を使用する EVALUATE
EVALUATE ステートメントでは、WHEN 句の前のオペランドは選択サブジェクト と呼ばれ、WHEN 句の中のオペランドは 選択オブジェクト と呼ばれます。選択サブジェクトは、ID、リテラル、条件式、あるいはワード TRUE または FALSE にすることができます。選択オブジェクトは、ID、リテラル、条件式、算術式、あるいはワード TRUE、FALSE、または ANY にすることができます。
複数の選択サブジェクトを ALSO 句で分離することができます。複数の選択オブジェクトも ALSO 句で分離することができます。それぞれの選択オブジェクト・セット内の選択オブジェクトの数は、次の例に示されているように、選択サブジェクトの数と等しくする必要があります。
選択オブジェクト内に現れる ID、リテラル、または算術式は、選択サブジェクト・セット内の対応するオペランドと比較できるよう、有効なオペランドにする必要があります。選択オブジェクト内に現れる条件あるいはワード TRUE または FALSE は、選択サブジェクト・セット内の条件式あるいはワード TRUE または FALSE に対応していなければなりません。 (選択オブジェクトとしてワード ANY を使用すると、任意のタイプの選択サブジェクトに対応付けることができます。)
EVALUATE ステートメントの実行は、次のいずれかの状態が発生すると終了します。
WHEN 句は、ソース・プログラムに現れている順序どおりにテストされます。 ですから、最高のパフォーマンスが得られるようにこれらの句を順序付ける必要があります。最初に、適合する可能性が最も高い選択オブジェクトを含んでいる WHEN 句をコーディングし、その後、次に可能性の高いものという順にコーディングしてください。例外は WHEN OTHER 句です。これは最後に置かなければなりません。
関連タスク
アクションの選択項目のコーディング
関連参照
EVALUATE ステートメント
(「COBOL for Windows 言語解説書」)
一般比較条件
(「COBOL for Windows 言語解説書」)