Un puntero a
subprograma∞ nos permite llamar a un subprograma sin conocer su nombre ni dónde está declarado. Este tipo de punteros se suele utilizar en los conocidos
callbacks.
type∞ TPCallback
is∞ access∞ procedure∞ (Id : Integer; Mensaje : String);
type∞ TFCallback
is∞ access∞ function∞ (Mensaje : String)
return∞ Natural;
Para obtener el valor del puntero se usa el
atributo∞ 'Access aplicado a un subprograma con el prototipo adecuado, es decir, han de coincidir orden y tipo de los parámetros, y en el caso de las funciones, el tipo de retorno.
procedure∞ ProcesarEvento (Id : Integer; Mensaje : String);
MiCallback : TPCallback := ProcesarEvento'Access;
Los punteros a subprograma fueron una de las extensiones de Ada 95.