8.1.6.4 Subroutine Parameter List Declaration
| parameter; ...; parameter
|
Value parameters are declared this way:
| parameter identifier: parameter type
|
where parameters of the same type be listed, separated by
commata:
| parameter identifier, ..., parameter identifier: parameter type
|
If var
is specified before a parameter, which is an USCD extension,
the compiler is told to pass the argument by reference, i.e. the parameter
passed to is expected to be an L-value whose type is parameter type
if specified, else it is compatible with any type:
| var parameter identifier: parameter type
|
or without type specification:
This declaration is necessary if the parameter is to be modified within
a block and to hold its value still after return. Otherwise, the
parameter remains unchanged after block exit, since it is passed
by value, and therefore it is called value parameter.
A parameter of this kind is called variable parameter and corresponds to an
L-value pointer (to type identifier if specified).
As a Borland Pascal extension, there are also constant parameters which are
not allowed to be changed in the related statement part.
Like variable parameters, the type needs not to be declared; in this case
parameter identifier is treated as a typeless parameter.
| const parameter identifier: parameter type
|
or without any further type specification:
| const parameter identifier
|
As an Extended Pascal extension, there is a way to declare procedural
parameters directly:
| procedure parameter identifier
|
or without type specification:
| function parameter identifier: parameter identifier result type
|
Example for parameter lists:
| procedure Foo (var Bar; var Baz: Integer; const Fred: Integer);
procedure Glork1 (function Foo: Integer; procedure Bar (Baz: Integer));
begin
Bar (Foo)
end;
begin
baz := Integer (Bar) + Fred
end;
|
See also
section 8.2 Data Types
This document was generated
by Frank Heckenbach on May, 10 2002
using texi2html