E.4.1 Asynchronous Remote Calls
This subclause introduces the aspect Asynchronous 
which can be specified to allow a remote subprogram call to return prior 
to completion of the execution of the corresponding remote subprogram 
body. 
Paragraphs 2 through 
7 were deleted. 
Static Semantics
For a remote procedure, 
the following language-defined representation aspect may be specified: 
  Asynchronous
The type of aspect Asynchronous is Boolean. If directly specified, the 
aspect_definition 
shall be a static expression. If not specified, the aspect is False.
 
  For a remote access 
type, the following language-defined representation aspect may be specified: 
  Asynchronous
The type of aspect Asynchronous is Boolean. If directly specified, the 
aspect_definition 
shall be a static expression. If not specified (including by inheritance), 
the aspect is False. 
 
Legality Rules
  If aspect Asynchronous is specified for a remote 
procedure, the formal parameters of the procedure shall all be of mode 
in.
  If aspect Asynchronous is specified for a remote 
access type, the type shall be a remote access-to-class-wide type, or 
the type shall be a remote access-to-procedure type with the formal parameters 
of the designated profile of the type all of mode in. 
Dynamic Semantics
A remote 
call is 
asynchronous if it is a call to a procedure, or a call 
through a value of an access-to-procedure type, for which aspect Asynchronous 
is True. In addition, if aspect Asynchronous is True for a remote access-to-class-wide 
type, then a dispatching call on a procedure with a controlling operand 
designated by a value of the type is asynchronous if the formal parameters 
of the procedure are all of mode 
in. 
 
Implementation Requirements
Asynchronous remote procedure calls shall be implemented 
such that the corresponding body executes at most once as a result of 
the call. 
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe