SEND [METHOD] operand1 TO [OBJECT]operand2 |
|||||||||||||
|
|
WITH |
|
|
(AD= |
|
|
) |
|
|
||||
| operand3 | |||||||||||||
nX |
|||||||||||||
[RETURNoperand4]
|
|||||||||||||
[GIVINGoperand5]
|
|||||||||||||
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連ステートメント:CREATE
OBJECT | DEFINE
CLASS | INTERFACE | METHOD | PROPERTY
関連機能グループ:コンポーネントベースプログラミング
SEND METHOD ステートメントは、オブジェクトの特定メソッドを呼び出すために使用します。
コンポーネントベースプログラミングの詳細については、『プログラミングガイド』の「NaturalX」セクションを参照してください。
オペランド定義テーブル:
| オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 |
C | S | A | ○ | × | |||||||||||||||
operand2 |
S | O | × | × | ||||||||||||||||
operand3 |
C | S | A | G | A | U | N | P | I | F | B | D | T | L | C | G | O | ○ | × | |
operand4 |
S | A | A | U | N | P | I | F | B | D | T | L | C | G | O | ○ | × | |||
operand5 |
S | N | I | ○ | × | |||||||||||||||
ローカルクラスのメソッドに渡すことができるのは、フォーマット C および G のみです。
構文要素の説明:
| 構文要素 | 説明 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 |
メソッド名:
メソッド名はクラスの異なるインターフェイスで同一にできるため、混同を避けるために、 次の例では、オブジェクト * Specifying only the method name. SEND 'Start' TO #O3 * Qualifying the method name with the interface name. SEND 'Iterate.Start' TO #O3 インターフェイス名が指定されていない場合、Natural はクラスのすべてのインターフェイスのメソッド名を検索します。メソッド名が複数のインターフェイスで見つかった場合、ランタイムエラーが発生します。 |
||||||||||
operand2 |
オブジェクトハンドル:
メソッドコールが送信されるオブジェクトのハンドル。
メソッド内で現在のオブジェクトのメソッドを呼び出すには、システム変数 |
||||||||||
operand3 |
メソッドに固有のパラメータ:
次の例では、オブジェクト SEND 'PositionTo' TO #O3 WITH Pos メソッドはオプションのパラメータを持つことができます。メソッドが呼び出される場合は、オプションのパラメータを指定する必要はありません。オプションパラメータを省略するには、プレースホルダ 1X を使用します。 次の例では、オブジェクト * 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 オプションでない(必須)パラメータを省略すると、ランタイムエラーが発生します。 |
||||||||||
AD= |
|
||||||||||
nX |
省略されるパラメータ:
表記 Natural で実装されたメソッドについて、省略されるパラメータは、ダイアログの |
||||||||||
RETURN
operand4 |
RETURN 節:
注意: |
||||||||||
GIVING
operand5 |
GIVING 節:
|
||||||||||
次の図は、この例で使用されている Natural オブジェクトの概要を示しています。対応するソースコードとプログラム出力を下記に示します。図には、オブジェクトのソースコードへのリンクが用意されています。

** 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