Difference between revisions of "Procedure"
m (Added see also; fixed typos) |
m (substitute legacy syntaxhighlight syntax; unify source code style; remove unrelated/too general see-also-link) |
||
Line 2: | Line 2: | ||
A '''procedure''' is a [[Routine|routine]] that does not return a value. | A '''procedure''' is a [[Routine|routine]] that does not return a value. | ||
− | <syntaxhighlight lang="pascal" | + | <syntaxhighlight lang="pascal" inline>procedure</syntaxhighlight> is a [[Reserved word|reserved word]]. |
== Prematurely leaving a procedure == | == Prematurely leaving a procedure == | ||
− | + | In a procedure the routine {{Doc|package=RTL|unit=system|identifier=exit|text=<syntaxhighlight lang="pascal" inline>exit</syntaxhighlight>}} can be called in order to (prematurely) leave the procedure. | |
− | In a procedure the routine {{Doc|package=RTL|unit=system|identifier=exit|text=<syntaxhighlight lang="pascal" | + | <syntaxhighlight lang="pascal" inline>exit</syntaxhighlight> may not be supplied with any parameters, since procedures do not return any value, but [[Function|functions]] do. |
− | <syntaxhighlight lang="pascal" | + | Supplying a parameter to <syntaxhighlight lang="pascal" inline>exit</syntaxhighlight> inside a procedure definition will yield the compile-time error “Error: Procedures cannot return a value”. |
− | Supplying a parameter to <syntaxhighlight lang="pascal" | ||
== Invocation == | == Invocation == | ||
− | |||
Procedure calls are statements. | Procedure calls are statements. | ||
They may not appear in expressions, since they do not produce a value of any kind. | They may not appear in expressions, since they do not produce a value of any kind. | ||
Line 35: | Line 33: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | Note, that <syntaxhighlight lang="pascal" | + | Note, that <syntaxhighlight lang="pascal" inline>foo</syntaxhighlight> contains unreachable code (<syntaxhighlight lang="pascal" inline>inc(x)</syntaxhighlight> is never executed because of the [unconditional] <syntaxhighlight lang="pascal" inline>exit</syntaxhighlight>). |
== See also == | == See also == | ||
− | |||
* [[Procedures|Tutorial: procedures]] | * [[Procedures|Tutorial: procedures]] | ||
* [https://www.freepascal.org/docs-html/ref/refsu53.html § “Procedure statements” in the Reference Guide] | * [https://www.freepascal.org/docs-html/ref/refsu53.html § “Procedure statements” in the Reference Guide] | ||
* [https://www.freepascal.org/docs-html/ref/refse17.html § “Procedural types” in the Reference Guide] | * [https://www.freepascal.org/docs-html/ref/refse17.html § “Procedural types” in the Reference Guide] |
Revision as of 11:00, 24 May 2020
│
Deutsch (de) │
English (en) │
suomi (fi) │
français (fr) │
italiano (it) │
русский (ru) │
A procedure is a routine that does not return a value.
procedure
is a reserved word.
Prematurely leaving a procedure
In a procedure the routine exit
can be called in order to (prematurely) leave the procedure.
exit
may not be supplied with any parameters, since procedures do not return any value, but functions do.
Supplying a parameter to exit
inside a procedure definition will yield the compile-time error “Error: Procedures cannot return a value”.
Invocation
Procedure calls are statements. They may not appear in expressions, since they do not produce a value of any kind. The following example highlights all lines with procedure calls.
1program procedureDemo(input, output, stderr);
2
3var
4 x: longint;
5
6procedure foo;
7begin
8 exit;
9 inc(x);
10end;
11
12begin
13 x := 42;
14 foo;
15 writeLn(x);
16end.
Note, that foo
contains unreachable code (inc(x)
is never executed because of the [unconditional] exit
).