Параметри-процедури і параметри-функції Як формальні параметри в мові Паскаль, крім параметрів-значень і параметрів-змінних, використовують також імена процедур і функцій. Параметри-процедури в списку формальних параметрів в авторській версії Паскаль зазначають після службового слова procedure. Наприклад procedure PR(i, j: integer; var z: real; procedure P); Параметри-функції в списку формальних параметрів наводять після службового слова function з зазначенням типу функції: procedure PM(i, j: integer; var z: real; function F: real); Приклад використання параметрів-процедур (схематично): program R; var ar, br, cr: real; ……………. procedure P(x, y: real); ……………. Begin ……………. end; {P} procedure Q(k, g: real); begin …………… end; {Q} Тут результат від процедур Р і Q повинен передаватися через глобальні змінні: procedure T(procedure S(p, g: real); var a, b: real); var c,d: real …………. begin …………. S(c+1,d/2) …………. end {T} begin {R} T(P, ar, br); …………. T(Q, br, cr); …………. end.{R} У Турбо Паскалі використання параметрів-процедур і параметрів-функцій дещо інше, зокрема, потрібно попередньо визначити процедурний тип: type Proc=procedure(T: real); Func=function(x, y: real): real; Тоді, наводячи серед формальних параметрів ім'я процедури чи функції, потрібно після двокрапки зазначити відповідне ім'я типу, наприклад: {$F+} type Func=function(x, у: real): real; function f1(a, b: real): real; begin f1:=a+b; end; function f2(c, d: real): real; begin f2:=c*d; end; function fun(x, y: real; f: Func): real; begin fun:=f(x, y); end; begin writeln('+', fun(1,2, f1)); writeln('*', fun(2, 3, f2)) end. Отже, під час виклику процедури чи функції, що містить як формальні параметри-процедури чи параметри-функції, на їхнє місце підставляються відповідні імена фактичних процедур і функцій. Якщо в цьому випадку процедури і функції, що є формальними параметрами, мають інші параметри, то ці параметри можуть бути тільки параметрами-значеннями.