если уж на то пошло, то надо делать так:
## Код:
```
MODULE M1;

TYPE

IntArr* = POINTER TO ARRAY OF INTEGER;

END M1.
```


## Код:
```
MODULE M2;

PROCEDURE AddItem*(VAR arr: M1.IntArr; x: INTEGER);
VAR i, len: INTEGER; new: M1.IntArr;
BEGIN
i:=0; 
len:=LEN(arr); NEW(new, len+1);
WHILE i<len DO
new[i]:=arr[i];
INC(i);
END;
new[i]:=x;
arr:=new;
END AddItem;

END M2.
```


хотя это не корректно. корректнее было бы сделать процедуры по работе с массивом в модуле M1