Eine "CASE-Anweisung" hat folgende Gestalt:
CASE <E> OF <Fälle> ELSE <Rest> ENDDie Liste der <Fälle> ist wie folgt aufgebaut:
<Fälle> <Fälle> | <Fall>Der <Rest> ist eine Anweisungsfolge; der Teil "ELSE <Rest>" kann fehlen.
<Fälle> <Fall>
Die einzelnen Fälle sind also durch den senkrechten Strich " | " getrennt (das war die entscheidende gute Idee, denn alle früheren Ansätze waren schwer lesbar). Der einzelne <Fall> besteht aus einer Markenliste und einer Anweisungsfolge:
<Fall> <Markenliste> : <Anweisungsfolge>und die Markenliste ist eine ggf. durch Kommas getrennte Liste von Konstanten oder Konstantenbereichen. Alle hier vorkommenden Konstanten, und auch der Ausdruck <E>, müssen aus demselben skalaren Typ sein. Der leere Fall ist nur dazu da, einen senkrechten Strich hinter der letzten Alternative zu erlauben.
<Fall> <leer>
Bei der Ausführung wird der Ausdruck <E> ausgewertet. Wird ein Fall gefunden, zu dem das Ergebnis paßt, so wird die zugehörige Anweisungsfolge ausgeführt, andernfalls der <Rest>. Fehlt der <Rest> und paßt kein Fall, so wird in Modula 2 ein Laufzeitfehler ausgelöst.
TYPE Farbe = (rot, gelb, gruen): VAR ampel: Farbe; CASE ampel OF rot: Halten | gelb: KreuzungFrei | ELSE Fahren END;