メソッドの追加と削除

制約事項: 次の説明はネイティブ コードのみに該当します。

Java ラッパークラスでは、COBOL クラスに追加した各メソッドに対応する関数を定義する必要があります。

Java 関数には、次の処理が必要です。

  1. COBOL メソッドの呼び出しで発生する可能性がある例外を宣言します。

    デフォルトでは、COBOL で例外が発生したときにスローされる Exception と、COBOL ランタイム システムによってスローされる COBOLException を宣言します。Java クラスを Enterprise Java Bean としてディプロイするか、Java リモートメソッド起動 (RMI) を使用する場合は、RemoteException も宣言する必要があります。

  2. Java から COBOL メソッドに渡すパラメーターを格納する、Java 配列を作成します。

    パラメーターは、Java 配列で COBOL ランタイム システムに渡されます。

  3. RuntimeSystem.java クラスの cobinvoke_ メソッドまたは cobinvokestatic_ メソッドを呼び出します。

    Java 関数の戻り値の型に応じて、対応する種類の cobinvoke_ または cobinvokestatic_ を使用します (たとえば、戻り値が int 型であれば cobinvoke_int を使用します)。オブジェクト指向 COBOL のインスタンスを呼び出すには cobinvoke_ メソッドを使用します。オブジェクト指向 COBOL のクラスを呼び出すには cobinvokestatic_ メソッドを使用します。

    cobinvoke_ 関数の完全なリストは、COBOL 開発システム インストールの help\mfcobol.docs.zip (Windows) または docs/mfcobol.docs.zip (UNIX) にある『Java Run-time Class Library Reference』を参照してください。

    COBOL メソッドの戻り値の型にマップする Java データ型を決定し、適切な cobinvoke_ 関数を使用する必要があります。詳細は、『Java データ型』の章を参照してください。

オブジェクト指向 COBOL ファクトリのメソッドは、Java ラッパーの静的関数にマップされます。

COBOL インスタンスのメソッドと、それに対応する Java ラッパーの関数のサンプルコードを次に示します。まず、COBOL のメソッドのサンプルコードを示します。

 method-id. "myMethod".
 local-storage section.
*>---USER-CODE. Add any local storage items needed below.
 linkage Section.
 01 myParameter            pic x(4) comp-5.
 01 myReturnValue          pic x(4) comp-5.
 procedure division using by reference myParameter
                    returning myReturnValue.
*>---USER-CODE. Add method implementation below.
     exit method. 
end method "myMethod".

次に Java ラッパーのメソッドのサンプルコードを示します。

public int myMethod (Integer myParameter) throws Exception, 
                          CobolException, RemoteException 
{
    // Parameters are passed to COBOL in an array
    Object[] params = {myParameter};
    return ((int) cobinvoke_int ("myMethod", params)); }

通常、Java ラッパークラスのメソッドには、COBOL クラスの対応するメソッドと同じ名前を付けますが、これは必須ではありません。ただし、同じ名前を使用すると、Java ラッパー内でのメソッドのオーバーロードが可能になります。

メソッドのオーバーロードでは、パラメーターの型や数が異なるメソッドを複数、同じ名前で定義できます。メソッドのオーバーロードは Java でサポートされている機能であり、COBOL ではサポートされていません。しかし、複数のオーバーロード関数を Java ラッパーに追加して、それぞれの関数で COBOL クラス内の異なる名前のメソッドを呼び出すことができます。

たとえば、Java ラッパークラスでは次のようなオーバーロード関数を定義できます。

public int add (int a, int b) 
{...}
public int add (int a, int b, int c)
{...}

これらの関数は、COBOL クラス内の add2 や add3 などのメソッドにマップすることが可能です。