Falls man nicht möchte, dass `\texmodes` durch den Aufruf von `\test` verändert wird, weil man danach für einen anderen Zweck den ursprünglichen Modus noch benötigt, geht das auch:
% texmodes
Anwendungsbereiche f\"ur Befehle definieren.\vskip\baselineskip
\newcount\texmodes
\def\texmode[#1]{\texmodes=#1}
\def\test{%
\def\testbefehl{Ausf\"uhren }
\def\fehler{Nicht ausf\"uhrbar }
\ifodd\ifcase \texmodes 0 \or 1 \or 1 \or 0 \or 0 \or 1 \fi
\testbefehl
\else
\fehler
\fi
\vskip\baselineskip
}
\texmode[0]
Mode=\the\texmodes
\test
\texmode[1]
Mode=\the\texmodes
\test
\texmode[2]
Mode=\the\texmodes
\test
\texmode[3]
Mode=\the\texmodes
\test
\texmode[4]
Mode=\the\texmodes
\test
%texmodes
\bye
Ich verwende in diesem Fall ein Leerzeichen an Stelle von `\relax`, um dem TeX-Parser das Ende der Zahl zu signalisieren. Das Leerzeichen wird von TeX dabei selbst aus dem Tokenstrom entfernt, da es gerade eine Zahl liest.
einen Zahltoken erstellt.