Данный оператор представляет собой естественное расширение условного оператора. Оператор варианта состоит из выражения порядкового типа и нескольких операторов, каждому из которых предшествует список констант того же типа, что и выражение. Оператор всегда начинается словом case и заканчивается словом end:
case <выражение порядкового типа> of
константа1: оператор1;
константа2,константа3, …,константа10:
оператор2;
константа11..константа15: оператор3;
else оператор4
end
Приведенная схема не есть точное описание оператора, а лишь демонстрация нескольких случаев комбинации констант (полная синтаксическая диаграмма данного оператора слишком громоздка). Порядок употребления констант произвольный, но они не должны повторяться. Выполняется оператор так. Сначала вычисляется значение выражения, затем среди констант ищется равная значению выражения, и выполняется соответствующий оператор. Если соответствующая константа не найдена, то выполнится оператор, стоящий после слова else, а если это слово также отсутствует, то не будет делаться ничего, и программа перейдет к выполнению следующего оператора.
Приведем примеры нескольких различных операторов варианта:
1) case n mod 7 of
1: writeln('Понедельник');
2: writeln('Вторник');
3: writeln('Среда');
4: writeln('Четверг');
5: writeln('Пятница');
6: writeln('Суббота');
0: writeln('Воскресенье');
end;
2) case c of
'+': x := x + y;
'-': x := x - y;
'*': x := x * y;
else writeln('error')
end;
3) case c of
'a'..'z','A'..'Z': writeln('letter');
'0'..'9': writeln('digit')
end;
Синтаксис данного оператора опровергает ряд утверждений, справедливых для конструкций языка, рассматривавшихся ранее, а именно: “перед else точка с запятой не ставится”; и “каждому слову end соответствует слово begin”.

