... а Вы предлагаете делать всё вручную...
Возвращаясь к своему варанту решения хочу заметить, что про него правильнее будет сказать "явное", а не "ручное".
Во-первых, манипуляции внутри процедуры, приводящие к смене куска кода при следующем вызове, прописаны явно (без шаманства). Замечу также, что блоку, в котором содержится вызов процедуры Test, нет нужды вникать в эту "кухню".
Во-вторых, вариант исполнения процедуры при следущем вызове прописан явно, при помощи глобальной переменной s. Это придаёт определённую гибкость данному решению. Появляется возможность перед вызовом процедуры явно указать какой должен быть вариант её исполнения, возможно изменив при этом предопределённый порядок. Да, я помню - такого требования в исходной задаче не было, но в жизни требования часто меняются. Гибкую программу гораздо легче адаптировать к изменившимся требованиям, а автоматизация обычно ведёт к снижению гибкости.