procedure_name [actual_parameter_part];
function_name [actual_parameter_part]
(parameter_association {, parameter_association})
[formal_parameter =>] actual_parameter
expression | variable_name | type_mark(variable_name)
in out
or out
parameters are copied back into the corresponding actual parameters (when this is done).
TRAVERSE_TREE; -- see 6.1
TABLE_MANAGER.INSERT(E); -- see 7.5
PRINT_HEADER(128, TITLE, TRUE); -- see 6.1
SWITCH(FROM => X, TO => NEXT); -- see 6.1
PRINT_HEADER(128, HEADER => TITLE, CENTER => TRUE -- see 6.1
PRINT_HEADER(HEADER => TITLE, CENTER =>
TRUE, PAGES => 128); -- see 6.1
DOT_PRODUCT(U, V) -- see 6.1 and 6.5
CLOCK -- see 9.6
in out
or out
must be either the name of a variable, or of the form of a type conversion whose argument is the name of a variable. In either case, for the mode in out
, the variable must not be a formal parameter of mode out
or a subcomponent thereof. For an actual parameter that has the form of a type conversion, the type mark must conform (see 6.3.1) to the type mark of he formal parameter; the allowed operand and target types are the same as for type conversions (see 4.6).
in out
or out
is evaluated before the call. If the actual parameter has the form of a type conversion, then before the call, for a parameter of mode in out
, the variable is converted to the specified type; after (normal) completion of the subprogram body, for a parameter of mode in out
or out
, the formal parameter is converted back to the type of the variable. (The type specified in the conversion must be that of the formal parameter.)
in
or in out
, it is checked that the value of the actual parameter belongs to the subtype of the formal parameter.
in out
or out
, it is checked that the value of the formal parameter belongs to the subtype of the actual variable. In the case of a type conversion, the value of the formal parameter is converted back and the check applies to the result of the conversion.
in
, then corresponding subprogram calls need not include a parameter association for the parameter. If a parameter association is thus omitted from a call, then the rest of the call, following any initial positional associations, must use only named associations.
procedure
ACTIVATE(PROCESS : in
PROCESS_NAME;
AFTER : in
PROCESS_NAME := NO_PROCESS;
WAIT : in
DURATION := 0.0;
PRIOR : in
BOOLEAN := FALSE);
procedure
PAIR(LEFT, RIGHT : PERSON_NAME := new
PERSON);
ACTIVATE(X);
ACTIVATE(X, AFTER => Y);
ACTIVATE(X, WAIT => 60.0, PRIOR => TRUE);
ACTIVATE(X, Y, 10.0, FALSE);
new
PERSON, RIGHT => new
PERSON);