Доброго времени суток, господа!
Есть вопрос.  Имеется тип Диапазон. Имеется функция, которая возвращает указатель на массив из  Диапазон'ов.
Так вот, при компиляции возникает ошибка, поскольку в RETURN происходит недопустимое присваивание.
## Код:
```
TYPE
   Diapason* = ARRAY 2 OF REAL;   

PROCEDURE Need* (age: INTEGER): POINTER TO ARRAY 2 OF Diapason;
VAR
  ret: POINTER TO ARRAY 2 OF Diapason;
BEGIN
  NEW(ret);
  ret[0][0] := 1;
   ..............
   ..............
   ..............
   RETURN ret;
END Need;
```


В документации прописано:
> -- Цитата:
> Совместимость по присваиванию [Assignment compatible]Выражение e типа Te является совместимым по присваиванию с переменной v типа Tv, если выполняется одно из следующих условий:1.  Te и Tv эквивалентны и не являются ни типами открытых массивов, ни типами записей, описанными с атрибутами ABSTRACT, EXTENSIBLE или LIMITED;2.  Te и Tv — числовые или литерные типы, и Tv включает Te;3.  Te и Tv — указательные типы, и Te — потомок типа Tv;4.  Tv — указательный или процедурный тип, и e есть NIL;5.  Tv — числовой тип, а e — константное выражение, чье значение содержится в Tv;6.  Tv — массив CHAR, Te — String или Shortstring, и LEN(e) < LEN(v);7.  Tv — массив SHORTCHAR, Te — Shortstring, и LEN(e) < LEN(v);8.??Tv — процедурный тип, а e — имя процедуры, чьи формальные параметры соответствуют параметрам Tv.

Получается, что ret должен быть потомком Diapason? Тогда надо создавать запись и наследовать от нее?[/i]