20.2.3 メソッドの呼び起こしメッセージパッシング

COBOL2002でのメソッドの呼び起こし(メッセージパッシング)には,「INVOKE文」を使用します。次に例を示します。

INVOKE CLASS-A 'HIKIDASHI' USING H-1 RETURNING H-2
         1         2             3             4

  1. 呼び起こすメソッドを参照するためのクラス名またはオブジェクト参照
  2. 呼び起こしたいメソッド名
  3. メソッドに渡すデータ項目
  4. メソッドから返される結果を受け取る項目の名称
<この項の構成>
(1) メソッドの呼び起こし
(2) メソッドの検索
(3) メソッドに渡す引数
(4) メソッドから返される結果を受け取る項目の名称

(1) メソッドの呼び起こし

COBOL2002は,クラス名またはオブジェクト参照で指定したオブジェクトが実装しているメソッドを探します。INVOKE文によって,オブジェクトに対しメソッドの実行を要求することを「メソッドを呼び起こす」といいます。メソッドを呼び起こす場合には,INVOKE文にクラス名,オブジェクト参照データ項目名,または既定義オブジェクト参照を指定します。

INVOKE文の文法規則については,マニュアル「COBOL2002 言語 標準仕様編 10.8.26 INVOKE文」を参照してください。

(a) ファクトリメソッドの呼び起こし

クラス名を指定すると,そのクラスに定義されているファクトリメソッドが呼び起こされます。記述例を,次に示します。

      INVOKE CLASS-A 'FACTORY-METHOD' USING ARG1
                 1                      RETURNING ARG2.

  1. クラス名
(b) インスタンスメソッドの呼び起こし

インスタンスメソッドを呼び起こす場合,そのメソッドを内包するインスタンスオブジェクトを指すオブジェクト参照を指定します。

オブジェクト参照とは,生成されたオブジェクトを参照するデータ項目です。オブジェクト参照は,USAGE IS OBJECT REFERENCE句を使用して宣言します。オブジェクト参照の詳細はマニュアル「COBOL2002 言語 標準仕様編 9.16.86 USAGE句」を参照してください。

記述例を,次に示します。

            :
      01 H-1 USAGE OBJECT-REFERENCE.
            :
          INVOKE CLASS1 'NEW' RETURNING H-1.
            :
          INVOKE H-1 'OBJECT-METHOD' USING ARG1
                  1                  RETURNING ARG2.

  1. オブジェクト参照
(c) 既定義オブジェクトを使用したメソッドの呼び起こし

現在実行中のメソッドの呼び起こし対象であるオブジェクトのメソッドを呼び起こす場合,既定義オブジェクト参照のSELFまたはSUPERを使用します。

記述例を,次に示します。

      INVOKE SELF 'OBJECT-METHOD' USING ARG1
               1                  RETURNING ARG2.

  1. 既定義オブジェクト参照

既定義オブジェクト参照には,ほかにNULLおよびEXCEPTION-OBJECTがあります。既定義オブジェクト参照については,マニュアル「COBOL2002 言語 標準仕様編 4.3.2 一意名のいろいろ」を参照してください。

(2) メソッドの検索

INVOKE文を実行すると,呼び起こすメソッドが検索されます。メソッドは,INVOKE文の記述によって次のように検索されます。

(3) メソッドに渡す引数

メソッドに渡す引数を指定します。ここで指定した引数は,メソッド側に渡されます。詳細は,「17. プログラム間の引数と返却項目」を参照してください。

(4) メソッドから返される結果を受け取る項目の名称

オブジェクトのメソッドを実行させた結果の値を受け取るための,データ項目を指定します。