Всі формальні структуровані параметри повинні бути описані як параметри-змінні.
 Передачу в підпрограму структурованих типів даних можна здійснити декількома способами:
  
  1. Опис свого типу даних.
 В основній програмі в розділі опису типів описується структурований тип. Змінні в основній програмі і відповідний формальний параметр в заголовку підпрограми повинні бути змінними цього типу.
 Type
 тm = array [1....10] оf real;
 var
 mas: тм;
 prоcedure prоc (var mass: тm); {заголовок п/п}
 :
 :
 end;
 begin
 :
 Prоc (mas); {Виклик п/п}
 :
 end.
  
  2. Використання безтипових змінних.
 В заголовку підпрограми не вказується тип параметру-змінної. В підпрограмі в розділі опису типів описується відповідний тип до якого буде приведено безтиповий параметр. Цей тип повинен бути сумісним з типом відповідного переданого параметру.
 Var
 b1: array [1. .100] оf byte;
 b2: array [‘a’. .’z’] оf byte;
 prоcedure pr (var b);
 type
 Tb = array [1....32500] оf byte;
 :
 :
 {Звернення до масиву b в п/п: ТВ(b)[I]}
 Tb(b)[i]:=34;
 End;
 Begin
 :
 pr(b1);
 :
 end.
  
  3. Масиви і рядки невизначеної довжини. 
 В заголовку підпрограми при описі параметру вказується його тип але не вказується його розмір. При використанні масивів значення розміру масиву можна отримати за допомогою функції High(<Ім’я масиву>). Нумерація елементів в масиві буде починатись з 0 (нуля) і закінчуватись значенням функції High(<Ім’я масиву>)-1
  
 Function Sum(var X: array of Real): Real;
 Var
 I: Word;
 S: Real;
 Begin
 S := 0;
 For I := 0 to High(X)-1 do
 S := S + X[I];
 Sum := S;
 End;