Roger Racine writes: > At 01:04 PM 11/10/2004 -0800, Prichard, Jayson (Space Technology) wrote: >>I am writing a subroutine that has one parameter, another subroutine that >>I want the second subroutine to execute. Does anyone have any ideas how >>to do this? > > Ada95 or Ada83? With Ada95 it is quite straightforward (see section 3.10 > of the Reference Manual). You simply create an access type and use the > access type as the parameter. > > ... > type procedure_access is access procedure (. . .); > procedure my_proc (proc_access : in procedure_access); > ... > procedure real_proc (...) -- same arguments as in the type declaration > ... > my_proc (real_proc'access); > > For Ada83, it could still be done for all the compilers I used, but was > implementation dependent. As I recall, one used the 'address of the > procedure, and then used a representation clause to call the procedure. > > Roger Racine Another way is to use a generic: procedure Test is generic with procedure To_Be_Called (The_Parameter : in Whatever); procedure Generic_Proc; procedure Generic_Proc is begin To_Be_Called (The_Parameter => ...); end Generic_Proc; procedure First (The_Parameter : in Whatever) is separate; procedure Second is new Generic_Proc (To_Be_Called => Second); begin -- Test Second; end Test; Generics are usually preferred to access-to-subprograms because they are safer since no null access value can ever exist. -- Ludovic Brenta.