В XDS нормально компилируется такая конструкция:
## Код:
```
PRec = POINTER TO Rec;   
   Proc = PROCEDURE (VAR rec:Rec);
   Rec = RECORD p:Proc END;
```


Забавно, что в ETH Oberon исходный вариант, т.е.
## Код:
```
TYPE
  Proc = PROCEDURE (VAR rec:Rec);
  Rec = RECORD p:Proc END;
```

компилируется без проблем.  Oberon V4 (там язык - Oberon-1) переваривает только такой вариант
## Код:
```
PRec = POINTER TO Rec;   
   Proc = PROCEDURE (VAR rec: PRec);
   Rec = RECORD p:Proc END;
```
