説明
パブリックなコンストラクタは、COBOLのファクトリメソッドにマッピングします。
展開形式
METHOD-ID. 内部メソッド名 AS "外部メソッド名". … DATA DIVISION. LINKAGE SECTION. 01 生成オブジェクト OBJECT REFERENCE SELF. [パラメタ … ] PROCEDURE DIVISION [USING パラメタ …] RETURNING 生成オブジェクト RAISING FJ-JAVA-ERROR [例外クラス名]. END METHOD 内部メソッド名.
生成規則
内部メソッド名は、Jアダプタクラスジェネレータが内部的に使う名前で、クラス利用者からは見えません。
外部メソッド名は、このメソッドを一意に識別するための名前です。クラス利用者は、外部メソッド名によりメソッドを識別します。
外部メソッド名は、以下の規則により生成します。
Create-Javaクラス名-nn
“Create-”の後に、Javaクラス名と、ハイフン(-)に続く2けたの番号(nn)を付加
Javaクラス名は、パッケージ名を含まない
nnは、同一のJavaクラス名を持つメソッドに対し、01から順に振った番号(01~99)
スーパークラスに同じJavaクラス名を持つクラスがある場合、名前の重なりを避けるために、スーパークラスから順に連続した番号を振る(“5.8 名前の番号付け”参照)
160文字を超えた場合は、161文字目以降を切り捨てる
コンストラクタにパラメタが宣言されている場合、対応するパラメタを生成します。パラメタのデータ型の対応については、“データ型”を参照してください。
生成オブジェクトは、生成したアダプタオブジェクトへのオブジェクト参照を格納するオブジェクト参照一意名です。
コンストラクタで宣言された例外およびFJ-JAVA-ERRORを指定したRAISING指定を生成します。
生成例
java.util.DateクラスのコンストラクタDate()に対応するファクトリメソッドは、以下のように生成します。
METHOD-ID. CREATE-01 AS "Create-Date-01". [1] … LINKAGE SECTION. 01 CREATED-OBJECT OBJECT REFERENCE SELF. PROCEDURE DIVISION RETURNING CREATED-OBJECT RAISING FJ-JAVA-ERROR. … END METHOD CREATE-01.
java-util-Dateのファクトリメソッド名は、“Create-Date”に番号を振って生成します。
java.sql.Dateクラス(java.util.Dateのサブクラス)のコンストラクタDate(long)に対応するファクトリメソッドは、以下のように生成します。
METHOD-ID. CREATE-08 AS "Create-Date-08". [1] … LINKAGE SECTION. 01 CREATED-OBJECT OBJECT REFERENCE SELF. 01 PARA-1 PIC S9(18) COMP-5. PROCEDURE DIVISION USING PARA-1 RETURNING CREATED-OBJECT RAISING FJ-JAVA-ERROR. … END METHOD CREATE-08.
java-sql-Dateのファクトリメソッド名も、“Create-Date”に番号を振って生成します。だたし、名前の重なりを避けるために、java-util-Dateクラスと通しで番号を振ります。
ポイント
コンストラクタからファクトリメソッド名を生成する際に、名前の一意性を保つために番号を付加します。どのコンストラクタがどのファクトリメソッドに対応するかは、メソッド名対応表ファイルに出力されるコンストラクタの引数の型から識別できます。