В TP можно использовать переменные процедурного типа. Переменные процедурного типа позволяют передавать в подпрограмму имена процедур и функций. Вот примеры описаний процедурных типов:
Type Proc1 = Procedure (a,b,c:real; var d:real);
Proc2 = Procedure (var a,b:real);
Func1 = Function: string;
Proc3 = Function (var s:string):real;
PROC = procedure; { процедура без параметров }
PROC4 = procedure (var x : real; y : integer);
FUN2 = function (x, y : real) : real;
var f : FUN2;
Переменную f можно использовать, например, так:
{$F+}{Использование дальней адресации}
function deg(a,b:real):real;
begin {вычисляем степень: a**b}
deg:=exp(ln(a)*b);
end;{deg}
{$F-}
begin {программа}
f := deg; writeln('2**15=',f(2,15));
end.