В ТП процедуры и функции рассматриваются как объекты, которые можно присваивать переменным, передавать в качестве параметров и т.д. Для этого существуют процедурные типы.
Процедурный_тип ::=
("procedure" [список_формальных_параметров]) |
("function" [список_формальных_параметров] ":" тип).
После его определения можно объявлять переменные процедурного типа.
Пример:
type
Proc = procedure;
SwapProc = procedure(var X, Y: Integer);
StrProc = procedure(var S: String);
MathFunc = function(X: Real): Real:
DeviceFunc = function(var F: Text): Integer;
MaxFunc = function(A, B: Real; F: MathFunc): Real;
var A: SwapProc;
B: StrProc;
С: MaxFunc;
…
Этим переменным можно присваивать идентификаторы глобальных процедур и функций, скомпилированных по дальней модели вызова (см. параграф 1.8.5.1)
Более подробно процедурные типы мы рассмотрим в параграфе 1.8.4.