А Вы попробуйте поставить в исходном тексте телегу (Rec) впереди лошади (PROCEDURE) - и всё получится. Просто процедурное поле - это указатель, а Оберон разрешает использование в описаниях указательных типов до их объявления. А вообще, в стиле Оберона, если память мне не изменяет, даже не объявлялся отдельный процедурный тип, а описывалось всё прямо по месту: RECORD proc: PROCEDURE (VAR rec:.. )...