{ Copyright (c) 1988 by Borland International, Inc. } {$F+} program ProcVar; { For an extensive discussion of procedural types, variables and parameters, refer to Chapter 8 in the Turbo Pascal 5.0 Reference Guide (or Chapter 7 in the Turbo Pascal 5.0 Update manual). } type IntFuncType = function (x, y : integer) : integer; { No func. identifier } var IntFuncVar : IntFuncType; procedure DoSomething(Func : IntFuncType; x, y : integer); begin Writeln(Func(x, y):5); { call the function parameter } end; function AddEm(x, y : integer) : integer; begin AddEm := x + y; end; function SubEm(x, y : integer) : integer; begin SubEm := x - y; end; begin { Directly: } DoSomething(AddEm, 1, 2); DoSomething(SubEm, 1, 2); { Indirectly: } IntFuncVar := AddEm; { an assignment, not a call } DoSomething(IntFuncVar, 3, 4); { a call } IntFuncVar := SubEm; { an assignment, not a call } DoSomething(IntFuncVar, 3, 4); { a call } end.