EGL case 文は、複数のネストされた if 文の代わりに使用します。1 回以上の評価に基づいて、EGL は 1 つの文セットを選択し、さまざまな代替手段から実行します。 case 文は、C の切り替えまたは COBOL EVALUATE 文と同様です。
この文には、主な書式が 2 つあります。 最初のバージョンでは、EGL は単一の基準を評価し、when 文節中の一致する値を探します。 2 番目のバージョンでは、ユーザーが最上位の基準を提供するのではなく、EGL が、 「true」と評価される最初の式のコードを実行して、各 when 文の 論理式を順番に評価します。 最初のバージョンでは、EGL が評価する唯一の条件は、基準に対して単純に等しいことです。2 番目の条件は、比較演算子や、値の範囲などの指定に基づいて、より大きな柔軟性と比較を提供します。
他に有効な基準はありません。 例えば、1 つのレコードを別のレコードと比較したり、入出力オブジェクト (SerialRecord のような) を endOfFile と比較することはできません。
COBOL (C ではなく) の場合と同じく、コントロールは 1 つの when 文節を介して次の文節に渡されるのではありません。 when または otherwise 文節中で文が実行された後は、 case 文の直後の EGL 文にコントロールが渡されます。 EGL が when 文節と一致しない、または otherwise 文節を検出できない場合、コントロールは case 文が終わった直後の文に渡され、エラーは発生しません。
単一の文節に複数の突き合わせ式 (このトピックの『例』を参照) が含まれている場合、 EGL は、それらの式を左から右へと評価し、一致を見つけたときに停止します。

criterion (最初の構文図) を指定する場合、 それに続く各 when 文節には、1 つ以上の matchExpression インスタンスが必要です。 criterion (2 番目の構文図) を指定しない場合、 それに続く各 when 文節には、logical expression が必要です。
文節を EGL 文を使用せずにコーディングする場合、制御は、otherwise 文節を呼び出すことなく case のループから渡されます。
case 文には、when 文節がいくつあっても構いません。
case (myRecord.requestID)
when (1)
myFirstFunction();
when (2, 3, 4)
try
call myProgram;
onException(iex InvocationException)
myCallFunction(fileEx);
end
otherwise
myDefaultFunction();
end
Program calc3
x INT = 3;
y INT = 5;
z INT = 7;
function main()
case
when (x == 3)
writeStdOut("x passes");
when (y == 5)
writeStdOut("y passes");
when (z == 7)
writeStdOut("z passes");
otherwise
writeStdErr("You should not see this msg");
end
end
コンソールには、「x passes」という語が表示されます。 case 文は TRUE 式が検出されたときに終了します。