Difference between revisions of "Procedure"

From Free Pascal wiki
Jump to navigationJump to search
m (substitute legacy syntaxhighlight syntax; unify source code style; remove unrelated/too general see-also-link)
 
(One intermediate revision by one other user not shown)
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" enclose="none">procedure</syntaxhighlight> is a [[Reserved word|reserved word]].
+
<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" enclose="none">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" inline>exit</syntaxhighlight>}} can be called in order to (prematurely) leave the procedure.
<syntaxhighlight lang="pascal" enclose="none">exit</syntaxhighlight> may not be supplied with any parameters, since procedures do not return any value, but [[Function|functions]] do.
+
<syntaxhighlight lang="pascal" inline>exit</syntaxhighlight> may not be supplied with any parameters, since procedures do not return any value, but [[Function|functions]] do.
Supplying a parameter to <syntaxhighlight lang="pascal" enclose="none">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" inline>exit</syntaxhighlight> inside a procedure definition will yield the compile-time error “Error: Procedures cannot return a value”.
  
== 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.
 
The following example highlights all lines with procedure calls.
 
The following example highlights all lines with procedure calls.
 +
 
<syntaxhighlight lang="pascal" line highlight="8,9,14,15">
 
<syntaxhighlight lang="pascal" line highlight="8,9,14,15">
 
program procedureDemo(input, output, stderr);
 
program procedureDemo(input, output, stderr);
Line 31: Line 32:
 
end.
 
end.
 
</syntaxhighlight>
 
</syntaxhighlight>
Note, that <syntaxhighlight lang="pascal" enclose="none">foo</syntaxhighlight> contains unreachable code (<syntaxhighlight lang="pascal" enclose="none">inc(x)</syntaxhighlight> is never executed because of the [unconditional] <syntaxhighlight lang="pascal" enclose="none">exit</syntaxhighlight>).
 
  
== see also ==
+
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 ==
 
* [[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]

Latest 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).

See also