メソッドの追加および削除

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

COBOL クラスに追加するすべてのメソッドには、Java ラッパー クラスに対応する関数が必要です。

Java 関数は、以下の処理を行う必要があります。

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

    デフォルトでは、COBOL で例外が発生したときにスローされる Exception、および COBOL ランタイム システムによってスローされる COBOLException を宣言します。Java クラスを Enterprise JavaBeans としてディプロイする場合、または 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 にある『Java Run-time Class Library Reference』を参照してください。

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

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

COBOL インスタンスのメソッド、およびそれに対応する Java ラッパーの関数の 2 つのサンプル コードを以下に示します。まず、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」などのメソッドにマップできます。