declare
declare
Forward-Deklaration von sub-Funktionen
Details
- Siehe: Verwandte Befehle ,
sub
Mit Hilfe von declare lassen sich sub-Funktionen deklarieren und verwenden, ohne dass von diesen bereits Code existiert.
declare [<procedure>:]<function>
(
<varname>:<vartype>
[[; <varname>:<vartype> ]]
) [:<vartype>]
Die Angaben entsprechen somit exakt dem Kopf der jeweiligen Subfunktion. Bei der Verwendung von declare müssen bei der zugehörigen Funktion genau die gleichen Argumente bezüglich Namen, Typ und Optionen verwendet werden.
declare kann hauptsächlich für folgende Zwecke verwendet werden:
- Deklaration einer lokalen Subfunktion Dies ermöglicht die Verwendung einer Funktion im Prozedurtext vor ihrer Definition. Beispiel:
declare fnc2 ( aID : int; ) : int;
sub fnc1 : int;
{
return(fnc2(215)); // dies ist ohne declare nicht möglich
}
sub fnc2 ( aID : int; ) : int;
{
...
}
Die deklarierte Funktion muss dabei im Prozedurtext an späterer Stelle definiert sein, da die Prozedur sonst nicht übersetzt werden kann.
- Deklaration einer externen Subfunktion Dies ermöglicht die Verwendung einer Funktion aus einer anderen Prozedur, ohne dass diese zum Zeitpunkt der Übersetzung vorhanden sein muss. Die Deklaration kann sich dabei auch in einem anderen Prozedurtext befinden, der mittels Include-Anweisung ( @I:
<Prozedurname>) eingebunden wird. Beispiel:
declare Lib:CheckDate ( aLimit : date; ) : logic;
main
{
if (Lib:CheckDate(tStart))
...
}
Bei der Ausführung der Prozedur muss allerdings die deklarierte Funktion in compilierter Form vorhanden sein, sonst erfolgt ein Laufzeitfehler.