Ada Reference Manual (Ada 2022) — Legal Information

# E.4.1 Asynchronous Remote Calls

1/3
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

8/3
For a remote procedure, the following language-defined representation aspect may be specified:
8.1/3
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.
8.2/3
For a remote access type, the following language-defined representation aspect may be specified:
8.3/3
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

8.4/3
If aspect Asynchronous is specified for a remote procedure, the formal parameters of the procedure shall all be of mode in.
8.5/3
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

9/3
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

10
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