program essai;
var
i : integer;
procedure double (x : integer ; var res : integer);
begin
res := 2 * x;
end;
begin
i := 1; { i=1 }
double (5,i); {i=10}
end;
Dans cet exemple, x est un paramètre transmis par valeur, alors que res est un paramètre passé par adresse.
program TEST_BIS;
var
A, B : real;
procedure ECHANGE (var X, Y : real);
var
T : real;
begin
T := X;
X := Y;
Y := T;
writeln(X,Y);
end;
begin
readln (A, B);
ECHANGE (A, B);
writeln (A, B);
end.
Une simulation du déroulement du programme donnera :
A = 5 B = 7 (saisie)
X = 7 Y = 5
A = 7 B = 5 (A et B ont été modifiés !)
Le résultat de l'action de la procédure a été transmis au programme appelant.