SEND [METHOD ]
operand1 TO [OBJECT ]
operand2
|
|||||||||||||
WITH
|
operand3 | (AD= |
) | ||||||||||
nX |
|||||||||||||
[RETURN
operand4]
|
|||||||||||||
[GIVING
operand5]
|
Dieses Dokument behandelt folgende Themen:
Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.
Verwandte Statements: CREATE OBJECT | DEFINE CLASS | INTERFACE | METHOD | PROPERTY
Gehört zur Funktionsgruppe: Komponentenbasierte Programmierung
Das SEND METHOD
-Statement dient dazu, eine bestimmte
Methode eines Objekts aufzurufen. Informationen zur komponentenbasierten
Programmierung, siehe NaturalX im
Leitfaden zur Programmierung.
Operanden-Definitionstabelle:
Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | A | ja | nein | |||||||||||||||
operand2 | S | O | nein | nein | ||||||||||||||||
operand3 | C | S | A | G | A | U | N | P | I | F | B | D | T | L | C | G | O | ja | nein | |
operand4 | S | A | A | U | N | P | I | F | B | D | T | L | C | G | O | ja | nein | |||
operand5 | S | N | I | ja | nein |
Format C und G kann nur an Methoden lokaler Klassen übergeben werden.
Syntax-Element-Beschreibung:
operand1 |
Method-Name:
operand1 ist der Name einer Methode, die vom in operand2 angegebenen Objekt unterstützt wird. Da die Methoden-Namen in unterschiedlichen Interfaces einer Klasse identisch sein können, kann der Methoden-Name in operand1 auch mit dem Interface-Namen versehen werden, um Mehrdeutigkeiten zu vermeiden. Im folgenden Beispiel hat das Objekt * Specifying only the method name. SEND 'Start' TO #O3 * Qualifying the method name with the interface name. SEND 'Iterate.Start' TO #O3 Wenn kein Interface-Name angegeben wird, sucht Natural den Methoden-Namen in allen Interfaces der Klasse. Wenn der Methoden-Name in mehr als einem Interface gefunden wurde, tritt ein Laufzeitfehler auf. |
|
---|---|---|
operand2 |
Object-Handle:
Die Handle des Objekts, an das der Aufruf der Methode gesendet werden soll. operand2 muss als Objekt-Handle
( Um eine Methode des aktuellen Objekts innerhalb einer Methode
aufzurufen, verwenden Sie die Systemvariable
|
|
operand3 |
Methodenspezifische Parameter:
Als operand3 können Sie Parameter angeben, die methodenspezifisch sind. Im folgenden Beispiel hat das Objekt SEND 'PositionTo' TO #O3 WITH Pos Methoden können optionale Parameter haben. Optionale Parameter
brauchen nicht angegeben zu werden, wenn die Methode aufgerufen wird. Um einen
optionalen Parameter wegzulassen, verwenden Sie den Platzhalter
Im folgenden Beispiel hat die Methode
* Specifying all parameters. SEND 'SetAddress' TO #O4 WITH FirstName MiddleInitial LastName Street City * Omitting one optional parameter. SEND 'SetAddress' TO #O4 WITH FirstName 1X LastName Street City * Omitting all optional parameters. SEND 'SetAddress' TO #O4 WITH FirstName 1X LastName 2X Wenn ein Pflichtparameter weggelassen wird, führt dies zu einem Laufzeitfehler. |
|
AD= |
Attribut-Definition: Wenn
operand3 eine Variable ist, können Sie sie wie folgt
kennzeichnen:
|
|
AD=O | Nicht modifizierbar, siehe Session-Parameter
AD=O .
|
|
AD=M | Modifizierbar, siehe Session-Parameter
AD=M .
Dies ist die Voreinstellung. |
|
AD=A | Nur für Eingabe, siehe Session-Parameter
AD=A .
|
|
Wenn
operand3 eine Konstante ist, kann
AD nicht explizit angegeben werden. Für Konstanten gilt
immer AD=O .
|
||
nX |
Zu überspringende Parameter:
Mit der Notation Bei einer in Natural implementierten Methode muss ein zu
überspringender Parameter mit dem Schlüsselwort |
|
RETURN operand4 |
RETURN-Klausel:
Wenn die Wenn die Anmerkung: |
|
GIVING operand5 |
GIVING-Klausel:
Wenn die Wenn die |
Das folgende Diagramm gibt eine Übersicht über die Programmierobjekte, die in diesem Beispiel benutzt werden. Der entsprechende Sourcecode und die Programm-Ausgabe sind im Folgenden veranschaulicht
** Example 'METH01': CREATE OBJECT and SEND METHOD ** using a class and several methods (see METH*) ************************************************************************ DEFINE DATA LOCAL USING METHA LOCAL 1 L-STUDENT HANDLE OF OBJECT 1 #NAME (A20) 1 #STREET (A20) 1 #CITY (A20) 1 #SUM (I4) 1 #MULTI (I4) END-DEFINE * CREATE OBJECT L-STUDENT OF CLASS 'STUDENTS' /* see METHCL for class * L-STUDENT.<> := 'John Smith' * SEND METHOD 'INIT' TO L-STUDENT /* see METHCL WITH #VAR1 #VAR2 #VAR3 #VAR4 * SEND METHOD 'SUMMATION' TO L-STUDENT /* see METHCL WITH #VAR1 #VAR2 #VAR3 #VAR4 * SEND METHOD 'MULTIPLICATION' TO L-STUDENT /* see METHCL WITH #VAR1 #VAR2 #VAR3 #VAR4 * #NAME := L-STUDENT.<> #SUM := L-STUDENT.<> #MULTI := L-STUDENT.<> * SEND METHOD 'ADDRESS' TO L-STUDENT /* see METHCL * #STREET := L-STUDENT.<> #CITY := L-STUDENT.<> * * WRITE 'Name :' #NAME WRITE 'Street:' #STREET WRITE 'City :' #CITY WRITE ' ' WRITE 'The summation of ' #VAR1 #VAR2 #VAR3 #VAR4 WRITE 'is' #SUM WRITE 'The multiplication of' #VAR1 #VAR2 #VAR3 #VAR4 WRITE 'is' #MULTI * END
** Example 'METHCL': DEFINE CLASS (used by METH01) ************************************************************************ * Defining class STUDENTS for METH01 * DEFINE CLASS STUDENTS OBJECT USING METHO /* Object data for class STUDENTS /* INTERFACE STUDENT-ARITHMETICS PROPERTY FULL-NAME IS NAME END-PROPERTY PROPERTY SUM END-PROPERTY PROPERTY MULTI END-PROPERTY * METHOD INIT IS METH02 PARAMETER USING METHA END-METHOD METHOD SUMMATION IS METH03 PARAMETER USING METHA END-METHOD METHOD MULTIPLICATION IS METH04 PARAMETER USING METHA END-METHOD END-INTERFACE * INTERFACE STUDENT-ADDRESS PROPERTY STUDENT-NAME IS NAME END-PROPERTY PROPERTY STREET END-PROPERTY PROPERTY CITY END-PROPERTY * METHOD ADDRESS IS METH05 END-METHOD END-INTERFACE END-CLASS END
Local METHO Library SYSEXSYN DBID 10 FNR 32 Command > + I T L Name F Length Miscellaneous All -- -------------------------------- - ---------- -------------------------> 1 NAME A 20 1 STREET A 30 1 CITY A 20 1 SUM I 4 1 MULTI I 4
Parameter METHA Library SYSEXSYN DBID 10 FNR 32 Command > + I T L Name F Length Miscellaneous All -- -------------------------------- - ---------- -------------------------> 1 #VAR1 I 4 1 #VAR2 I 4 1 #VAR3 I 4 1 #VAR4 I 4
** Example 'METH02': Method INIT (used by METH01) ************************************************************************ DEFINE DATA PARAMETER USING METHA OBJECT USING METHO END-DEFINE * * Method INIT of class STUDENTS * #VAR1 := 1 #VAR2 := 2 #VAR3 := 3 #VAR4 := 4 * END
** Example 'METH03': Method SUMMATION (used by METH01) ************************************************************************ DEFINE DATA PARAMETER USING METHA OBJECT USING METHO END-DEFINE * * Method SUMMATION of class STUDENTS * COMPUTE SUM = #VAR1 + #VAR2 + #VAR3 + #VAR4 END
** Example 'METH04': Method MULTIPLICATION (used by METH01) ************************************************************************ DEFINE DATA PARAMETER USING METHA OBJECT USING METHO END-DEFINE * * Method MULTIPLICATION of class STUDENTS * COMPUTE MULTI = #VAR1 * #VAR2 * #VAR3 * #VAR4 END
** Example 'METH05': Method ADDRESS (used by METH01) ************************************************************************ DEFINE DATA OBJECT USING METHO END-DEFINE * * Method ADDRESS of class STUDENTS * IF NAME = 'John Smith' STREET := 'Oxford street' CITY := 'London' END-IF END
Page 1 05-01-17 15:59:04 Name : John Smith Street: Oxford street City : London The summation of 1 2 3 4 is 10 The multiplication of 1 2 3 4 is 24