Rational Developer for System z
COBOL for Windows バージョン 7.5 プログラミング・ガイド


例: COBOL クライアントからの規格合致オブジェクト参照の引数の引き渡し

以下の例は、COBOL クライアントのオブジェクト参照引数を、呼び出されるメソッドにおける対応する仮パラメーターの予想クラスに合致させる方法を示しています。

クラス C は、1 つのパラメーター (クラス java.lang.Object のオブジェクトへの参照) を持つメソッド M を定義します。

 . . .
 Class-id. C inherits Base.
 . . .
 Repository.
     Class Base       is “java.lang.Object”
     Class JavaObject is “java.lang.Object”.
 Identification division.
 Factory.
 . . .
  Procedure Division.
   Identification Division.
   Method-id. “M”.
   Data division.
   Linkage section.
   01 obj object reference JavaObject.
   Procedure Division using by value obj.
   . . .

メソッド M を呼び出すには、COBOL クライアントは、クラス java.lang.Object のオブジェクトへの参照である引数を渡す必要があります。以下のクライアントは、データ項目 aString を定義していますが、これを M に引数として渡すことができません。aString は、クラス java.lang.String のオブジェクトへの参照だからです。クライアントはまず SET ステートメントを使用して、aString をデータ項目 anObj (クラス java.lang.Object のオブジェクトへの参照) に割り当てます。 (java.lang.String は java.lang.Object のサブクラスなので、この SET ステートメントは正しいものです。) その後クライアントは anObj を引数として M に渡します。

 . . .
 Repository.
     Class jstring    is “java.lang.String”
     Class JavaObject is “java.lang.Object”.
 Data division.
 Local-storage section.
 01  aString object reference jstring.
 01  anObj   object reference JavaObject.
*
 Procedure division.
     . . . (statements here assign a value to aString)
     Set anObj to aString
     Invoke C “M”
       using by value anObj

SET ステートメントを使用して、クラス java.lang.Object のオブジェクトへの参照として anObj を取得する代わりに、クライアントは、以下のように REDEFINES 文節で aString および anObj を定義することができます。

 . . .
 01  aString object reference jstring.
 01  anObj   redefines aString object reference JavaObject.

クライアントが値をデータ項目 aString (つまり、クラス java.lang.String のオブジェクトへの有効な参照) を割り当てた後、anObj を引数として M に渡すことができます。

関連タスク
COBOL および Java での相互運用可能なデータ型のコーディング
クラス・インスタンス・メソッド定義用の PROCEDURE DIVISION

関連参照
INVOKE ステートメント (「COBOL for Windows 言語解説書」)
SET ステートメント (「COBOL for Windows 言語解説書」)
REDEFINES 文節 (「COBOL for Windows 言語解説書」)


ご利用条件 | フィードバック

Copyright IBM Corporation 1996, 2008.
このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)