1/2
{00348AI95−00348−01} A null_procedure_declaration provides a shorthand to declare a procedure with an empty body.
2/2
{00348AI95−00348−01} null_procedure_declaration::=
[overriding_indicator]
procedure_specification is null;
3/2
{00348AI95−00348−01} A null_procedure_declaration declares a null procedure.{null procedure} {procedure (null)} A completion is not allowed for a null_procedure_declaration.
3.a/2
Reason: There are no null functions because the return value has to be constructed somehow; a function that always raises Program_Error doesn't seem very useful or worth the complication.
4/2
{00348AI95−00348−01} The execution of a null procedure is invoked by a subprogram call. For the execution of a subprogram call on a null procedure, the execution of the subprogram_body has no effect.
4.a/2
Ramification: Thus, a null procedure is equivalent to the body
4.b/2
begin null; end;
4.c/2
with the exception that a null procedure can be used in place of a procedure specification.
5/2
{00348AI95−00348−01} {elaboration (null_procedure_declaration) [partial]} The elaboration of a null_procedure_declaration has no effect.
6/2
{00433AI95−00433−01} procedure Simplify(Expr : in out Expression) is null; −− see 3.9 −− By default, Simplify does nothing, but it may be overridden in extensions of Expression
6.a/2
{00348AI95−00348−01} {extensions to Ada 95} Null procedures are new.