Параметры-значения передаются основной программой в подпрограмму через стек в виде их копий. Сам параметр программы подпрограммой измениться не может.
Параметр-значение указывается в заголовке подпрограммы своим именем и - через двоеточие – типом. Значение его может быть любым, кроме файлового типа. Если значений одного типа несколько, то их можно объединить в одну группу, перечислив их имена через запятую, а затем указать их общий тип. Отдельные группы отделяются друг от друга точкой с запятой.
Пример
procedure inp(max, min :real; n :word);
function mult(x,y :integer)real;
В качестве фактического параметра на месте параметра-значения при вызове подпрограммы может выступать любое выражение совместимого для присваивания типа, не содержащее файловую компоненту.
Пример
inp(abs(7),-abs(t), 2*k);
m:=mult(x+y, x-y);
Пример Функция вычисления максимального элемента массива.
В основной программе определен тип-массив, переменная этого типа и переменная целого типа.
type
tArr = array[1..100] of integer;
var
massiv : tArr;
maxim :integer;
function max(mas:tArr; n: byte): integer; {Описание функции}
var ma:integer;
i:byte;
begin
ma:=mas[1];
for i:=2 to N do
if ma<mas[i] then ma:=mas[i];
max:=ma
end;
Тогда возможно
maxim:=max(massiv, 5);
Будет определено максимальное число из пяти первых чисел массива massiv и записано в переменную maxim.
Подпрограмма может работать только с массивами типа tArr. Для массива другого типа требуется создать аналогичную подпрограмму. При работе подпрограммы в стеке будет создана копия исходного массива, что ведёт к уменьшению быстродействия.