|
|||||
|
|||||
|
Dieses Dokument behandelt folgende Themen:
Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.
Verwandtes Statement: DEFINE
FUNCTION
Das DEFINE PROTOTYPE
-Statement dient dazu, die
Eigenschaften für den Aufruf einer
Function
anzugeben:
die Parameter, die an den Function Call übergeben werden sollen,
der Ergebniswert, die vom Function Call zurückgegeben werden soll, und
wie die Function aufgerufen wird: entweder mit dem Function-Namen, der
im DEFINE
FUNCTION
-Statement definiert ist, oder mit einer
alphanumerischen Variablen, die den Function-Namen enthält.
Diese Informationen dienen dazu, einen Function Call innerhalb eines Natural-Objekts zur Kompilierungszeit aufzulösen.
Ein DEFINE PROTOTYPE
-Statement wird für einen Function Call
nur dann benötigt, wenn Folgendes zutrifft:
Der angegebene Function-Name ist eine alphanumerische Variable, die den Namen der zur Ausführungszeit aufzurufenden Function enthält.
In dem Function Call ist keine
(IR=)
-Option
angegeben, und ein katalogisiertes Objekt der aufgerufenen Funktion ist nicht
verfügbar,
Die im Function Call mitgegebenen Parameter sollen validiert werden, und das katalogisierte Objekt der aufgerufenen Funktion ist nicht verfügbar.
Wenn die Function von mehreren Objekten aufgerufen werden soll kann das
DEFINE PROTOTYPE
-Statement in ein Copycode-Objekt eingefügt
werden.
Weitere Information finden Sie in folgenden Abschnitte im Leitfaden zur Programmierung:
Natural-Objektyp Function
Syntax-Element | Beschreibung |
---|---|
[VARIABLE]
prototype-name
|
Prototyp-Name:
|
UNKNOWN
|
UNKNOWN-Option:
Das Schlüsselwort |
return-data-definition
|
Siehe Rückgabedatendefinition weiter unten. |
parameter-definition
|
Siehe Parameter-Definition weiter unten. |
same-as-clause
|
Siehe SAME AS-Klausel weiter unten. |
USING FUNCTION
[DEFINITION [OF]]
function-name |
Siehe USING FUNCTION-Klausel weiter unten. |
END-PROTOTYPE
|
Ende des DEFINE PROTOTYPE-Statement:
Das für Natural reservierte Wort |
(return-data-definition
)
RETURNS
[variable-name]
|
(format-length [/array-definition]) | |||||||
[(array-definition)]
HANDLE OF OBJECT |
||||||||
( | A |
[/array-definition]) |
DYNAMIC
|
|||||
U |
||||||||
B |
Mit dieser Klausel werden das Format und die Länge und, falls zutreffend, die Array-Struktur des Rückgabewerts festgelegt.
Wenn keine Festlegung der Rückgabedaten erfolgt, kann ein
Function
Call nur innerhalb eines Statements benutzt werden, wenn eine
explizite
(IR=)
-Klausel
verfügbar ist. Fehlt eine solche Klausel, kann die Function nur als ein
Statement aufgerufen werden, aber nicht anstelle eines Operanden in einem
Statement.
Syntax-Element-Beschreibung:
Syntax-Element | Beschreibung |
---|---|
variable-name |
Name des Rückgabewerts:
Die optionale Angabe bei
|
format-length |
Format-/Länge-Definition:
Format und Länge des Ergebnisfeldes. Weitere Informationen siehe Format und Länge von Benutzervariablen im Leitfaden zur Programmierung. |
array-definition |
Definition der Array-Dimensionen:
Falls das Ergebnisfeld der Function ein Array-Feld ist, legen Sie hier die untere und obere Grenze einer Dimension fest. Weitere Informationen siehe |
HANDLE OF
OBJECT |
Object-Handle:
Wird bei NaturalX verwendet. Weitere Informationen siehe NaturalX im Leitfaden zur Programmierung. |
A ,
U or B |
Datentyp:
Alphanumerisch (A), Unicode (U) oder binär (B) für ein numerisches Ergebnis. |
DYNAMIC |
Dynamische Variable:
Das Function-Ergebnis kann als Weitere Informationen siehe Dynamische Variablen im Leitfaden zur Programmierung. |
(parameter-definition
)
DEFINE
DATA
|
||||||||
PARAMETER UNKNOWN |
||||||||
PARAMETER |
USING parameter-data-area
|
|||||||
parameter-data-definition
... |
... |
|||||||
END-DEFINE
|
Mit dieser Klausel werden die Parameter festgelegt, die bei einem Function Call zur Verfügung gestellt werden. Das hier festgelegte Layout wird gegen die Parameter geprüft, welche in einem Function Call mitgegeben werden. Wird diese Klausel weggelassen, wird die Function als parameterfrei deklariert. In diesem Fall wird jeder Versuch, Parameter im Function Call mitzugeben, zurückgewiesen.
Die für die Namensgebung der Parameterfelder verwendeten Bezeichner
haben keine Bedeutung. Sie sind hier nur vorhanden, um eine ähnliche
Syntaxstruktur wie bei der DEFINE DATA PARAMETER
-Syntax zu haben.
Syntax-Element-Beschreibung:
Syntax-Element | Beschreibung |
---|---|
PARAMETER
UNKNOWN |
UNKNOWN-Option:
Wird diese Option benutzt, dann wird kein Parameter angegeben. Dadurch wird die Parameterprüfung im Function Call ausgeschaltet. Das hat zur Folge, dass eine beliebige Anzahl von Parametern in der Funktion akzeptiert wird. |
USING
parameter-data-area |
PDA-Name:
Name der Parameter Data Area, welche Datenelemente enthält, die als Parameter in einem Function Call verwendet werden. Siehe auch Definition
von Parameter Data in der |
parameter-data-definition |
Parameterdatendefinition:
Anstatt eine Parameter Data Area zu definieren, können Parameter auch direkt in einem Function Call definiert werden. Siehe auch Direkte
Definition von Parameterdaten in der |
END-DEFINE |
Ende der Klausel:
Das für Natural reservierte Wort |
(same-as-clause
)
SAME AS [PROTOTYPE ]
|
prototype-name |
Durch Angabe dieser Klausel können die Parameter- und Ergebnisfeld-Definitionen eines anderes Prototyps verwendet werden, welcher zuvor im selben Natural-Objekt definiert worden ist.
Beispiel 1 - DEFINE PROTOTYPE mit einem definierten Function-Namen
Beispiel 2 - DEFINE PROTOTYPE mit einem variablen Function-Namen
Dies ist eine Prototyp-Definition einer Funktion mit dem Namen
F#FACTOR
, wobei der
prototype-name
dem
function-name
entspricht, der im referenzierten DEFINE
FUNCTION
-Statement angegeben ist. Das von der Function
zurückgelieferte Ergebnis hat das Format (I2/1:3), und es ist nur ein einzelner
Parameter nötig, welcher das Format (I2) hat.
** Example 'DPTEX1': DEFINE PROTOTYPE and function call ************************************************************************ DEFINE DATA LOCAL 1 #NUM (I2) END-DEFINE * DEFINE PROTOTYPE F#FACTOR RETURNS (I2/1:3) DEFINE DATA PARAMETER 1 #VALUE (I2) END-DEFINE END-PROTOTYPE * #NUM := 3 * WRITE 'Function call:' F#FACTOR(<#NUM>)(*) * END
Die Function F#FACTOR
ist definiert in der
Beispiel-Function DFUEX2
in der Library SYSEXSYN
.
Siehe Beispiele in der
DEFINE FUNCTION
-Statement-Beschreibung.
DPTEX1
:
Function call: 3 6 9
Wegen des Schlüsselworts VARIABLE
gibt dieser Prototyp
einen Function
Call, bei dem der referenzierte Prototyp-Name eine alphanumerische
Variable ist, die den Namen der Function zum Zeitpunkt der Ausführung
enthält.
** Example 'DPTEX2': DEFINE PROTOTYPE and function call ************************************************************************ DEFINE DATA LOCAL 1 #NAME (A20) 1 #TEXT (A10) END-DEFINE * DEFINE PROTOTYPE VARIABLE #NAME RETURNS #RETURN (A1) DEFINE DATA PARAMETER 1 #IN (A10) END-DEFINE END-PROTOTYPE * #NAME := 'F#FIRST-CHAR' #TEXT := 'ABCDEFGHIJ' * WRITE 'First character:' #NAME(<#TEXT>) * END
Die Funktion F#FIRST-CHAR
ist definiert in der
Beispiel-Function DFUEX1
in der Library SYSEXSYN
.
Siehe Beispiele in der
DEFINE FUNCTION
-Statement-Beschreibung.
DPTEX2
:
First character: A