SEND [METHOD ] operand1 TO [OBJECT ] operand2
|
|||||||||||||
WITH
|
operand3 | (AD= |
) | ||||||||||
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 |
メソッド名:
operand1 は、operand2 で指定されるオブジェクトによってサポートされるメソッドの名前です。 メソッド名はクラスの異なるインターフェイスで同一にできるため、混同を避けるために、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 |
オブジェクトハンドル:
メソッドコールが送信されるオブジェクトのハンドル。 operand2 は、オブジェクトハンドル(HANDLE OF OBJECT)として定義する必要があります。 オブジェクトがすでに存在している必要があります。 メソッド内で現在のオブジェクトのメソッドを呼び出すには、システム変数 |
|
operand3 |
メソッドに固有のパラメータ:
operand3 として、メソッドに固有のパラメータを指定できます。 次の例では、オブジェクト SEND 'PositionTo' TO #O3 WITH Pos メソッドはオプションのパラメータを持つことができます。 メソッドが呼び出される場合は、オプションのパラメータを指定する必要はありません。 オプションパラメータを省略するには、プレースホルダ 1X を使用します。 n オプションパラメータを省略するには、プレースホルダ nX を使用します。 次の例では、オブジェクト * 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= |
属性定義: operand3 が変数の場合は、次のいずれかの方法でマークすることができます。
|
|
AD=O | 変更不可。セッションパラメータ AD=O を参照してください。
|
|
AD=M | 変更可。セッションパラメータ AD=M を参照してください。
これはデフォルト設定です。 |
|
AD=A | 入力のみ。セッションパラメータ AD=A を参照してください。
|
|
operand3 が定数の場合は、AD を明示的に指定することはできません。 定数には常に AD=O が適用されます。
|
||
nX |
省略されるパラメータ:
表記 Natural で実装されたメソッドについて、省略されるパラメータは、ダイアログの |
|
RETURN operand4 |
RETURN 節:
注意: |
|
GIVING operand5 |
GIVING 節:
|
次の図は、この例で使用されているプログラミングオブジェクトの概要を示しています。 対応するソースコードとプログラム出力を下記に示します。 図には、オブジェクトのソースコードへのリンクが用意されています。
** 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