メソッド名には、Javaのメソッド名をそのまま使います。しかし、Javaでは同名でかつパラメタの異なるメソッドを複数定義できるので、COBOLのメソッド名に番号をつけて区別します。
ただし、オブジェクト指向の特徴である多態性(多様性)を生かすために、同名かつ同じパラメタを持つメソッドには、常に同じ名前をつけます。この対応関係は、Jアダプタクラスジェネレータを使うCOBOLプログラムの実行単位内で、一貫していなければなりません。たとえば、java.io.ObjectInputStreamクラスは、java.io.ObjectInputインタフェースとjava.io.InputStreamクラスを継承しています(下図参照)。
図5.2 java.io.ObjectInputインタフェース、java.io.InputStreamクラスおよびjava.io.ObjectInputStreamクラスの関係
これらに対応するアダプタクラスは、同じパラメタを持つreadメソッドに対して、同じ名前のメソッドを生成する必要があります。
Jアダプタクラスジェネレータは、クラス/インタフェースをまたがってメソッド名の対応関係を管理するために、生成名管理ファイルを使用します。そして、同名のメソッドに対し、以下の規則で番号をつけます。
生成名管理ファイルに同名・同パラメタのメソッドが登録されていないか探します。
見つかった場合、対応するCOBOLメソッド名を使います。
見つからなかった場合、新しいCOBOLメソッド名を生成し、生成名管理ファイルに登録します。
COBOLメソッド名は、以下の規則で生成します。
最初に登録するCOBOL名は、Javaのメソッド名と同じ
2番目以降は、01から順に昇順に番号をつける
例
java.io.ObjectInputインタフェース、java.io.InputStreamクラスおよび
java.io.ObjectInputStreamクラスのreadメソッドに対応するオブジェクトメソッドは、以下の名前になります。
Javaのメソッド | COBOLのメソッド | ||
---|---|---|---|
java.io.ObjectInput | read() | java-io-ObjectInput | read |
read(byte[]) | read-01 | ||
read(byte[], int, int) | read-02 | ||
java.io.InputStream | read() | Java-io-InputStream | read |
read(byte[]) | read-01 | ||
read(byte[], int, int) | read-02 | ||
java.io.ObjectInputStream | read() | Java-io-ObjectInputStream | read |
read(byte[], int, int) | read-02 |
注意
アダプタクラスを生成する順番により、番号のつけ方が変わることがあります。同じ環境で使うアダプタクラスの生成には、同じ生成名管理ファイルを使用してください。
ポイント
これらの規則は、クラスメソッドにも適用します。(“5.5.5 クラスメソッド”参照)
Javaのフィールド(変数)(クラス/インスタンス)は、COBOLのプロパティメソッドに対応付けます。プロパティメソッドの場合も、メソッドと同じ規則を適用します。(“5.5.4 クラス変数”、“5.5.6 インスタンス変数”参照)
アダプタクラス生成時に使用するJDKのバージョンにより、番号のつけ方が変わることがあります。