SEND [METHOD ] operand1 TO [OBJECT ]operand2 |
|||||||||||||
WITH |
(AD= |
) | |||||||||||
operand3 | |||||||||||||
nX |
|||||||||||||
[RETURN operand4]
|
|||||||||||||
[GIVING operand5]
|
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連ステートメント: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