Параметри – змінні вказуються заданням службового слова var перед їхніми ідентифікаторами в списку параметрів.Цей спосіб передання параметрів використовується у тому випадку, коли потрібно передати деяке значення в точку виклику підпрограми.
Пояснемо це на прикладі. Нехай необхідно обчислити суму і різницю квадратів двох чисел, реалізувати цей процес у вигляді процедури.
Procedure sr(x,y:real);
Var
S,r:real;
Begin
S:=sqr(x)+sqr(y);
R:= sqr(x)-sqr(y);
End;
Локальні змінні s i r відомі лише в межах текучого блоку, тобто існують лише в процесі роботи підпрограми і при закінченні її роботи зникають. Значить, необхідно в списку формальних параметрів передбачити ще два параметри для суми і різниці.
Procedure sr1(x,y:real; S,r:real);
Begin
S:=sqr(x)+sqr(y);
R:= sqr(x)-sqr(y);
End;
Проаналізуємо, що станеться при звертанні до даної процедури.
. . .
Var
A,b:real;
S1,r1:real;
. . .
begin
a:=1.7;
b:=8.09;
sr1(a,b,s1,r1);
. . .
Параметри s і r в процедурі sr1 , що передаються по значенню, є локальними в межах цієї процедури , тому при присвоюванні їм будь- яких значень, змінні s1 і r1 не отримають цих значень.
Для того, щоб зміна формального параметра в тілі процедури приводила до аналогічної зміни фактичного параметра, необхідно використовувати параметри – змінні.
Procedure sr2(x,y:real;var S,r:real);
Begin
S:=sqr(x)+sqr(y);
R:= sqr(x)-sqr(y);
End;
В цьому випадку формальні параметри s і r вважаються синонімами відповідних фактичних параметрів. Якщо виклик процедури sr2 буде мати вигляд :
Var
A,b:real;
S1,r1:real;
Begin
A:=1.7;
B:=8.09;
sr2(a,b,S1,r1);
. . .
то надання значень параметрам s і r всередині тіла процедури буде означати відповідне надання значень змінним s1 r1, які передаються процедурі як параметри – змінні.