Section 6: Subprograms
1
{subprogram}
{procedure}
{function}
A subprogram is a program unit or intrinsic operation
whose execution is invoked by a subprogram call. There are two forms
of subprogram: procedures and functions. A procedure call is a
statement;
a function call is an expression and returns a value. The definition
of a subprogram can be given in two parts: a subprogram declaration defining
its interface, and a
subprogram_body defining
its execution. [Operators and enumeration literals are functions.]
1.a
To be honest: A function call is an expression,
but more specifically it is a name.
1.b/2
Glossary entry: {Subprogram}
A subprogram is a section of program that can be executed in various
contexts. It is invoked by a subprogram call that may qualify the effect
of the subprogram through the passing of parameters. There are two forms
of subprograms: functions, which return values, and procedures, which
do not.
1.c/2
Glossary entry: {Function}
A function is a form of subprogram that returns a result and can be called
as part of an expression.
1.d/2
Glossary entry: {Procedure}
A procedure is a form of subprogram that does not return a result and
can only be called by a statement.
2
{callable entity}
A
callable entity is a subprogram or entry
(see Section 9).
{call} A
callable entity is invoked by a
call; that is, a subprogram call
or entry call.
{callable construct}
A
callable construct is a construct that defines
the action of a call upon a callable entity: a
subprogram_body,
entry_body, or
accept_statement.
2.a
Ramification: Note that “callable
entity” includes predefined operators, enumeration literals, and
abstract subprograms. “Call” includes calls of these things.
They do not have callable constructs, since they don't have completions.