Java の各クラスには、オブジェクトをインスタンス化するためのコンストラクター メソッドが 1 つ以上含まれています。Java では、コンストラクター メソッドはクラスと同じ名前を持ちます。これらのコンストラクター メソッドは、COBOL プロキシ オブジェクトで new というメソッド名にマップされ、COBOL 側から呼び出し可能になります。
同じ Java クラスでもコンストラクターが異なれば、インスタンスを初期化するために必要なパラメーターの数や組み合わせが異なります。たとえば、Java の Rectangle クラスは、次に示す 2 通りの方法を含む、いくつかの異なる方法でインスタンス化できます。
Rectangle r1 = new Rectangle ()
// rectangle (x,y) = 0,0, width=0, height=0
Rectangle r2 = new Rectangle(4, 5, 10, 20)
// rectangle (x,y) = (4,5), width=10, height=20
これに相当する COBOL のコードは次のようになります。
working-storage section.
01 r1 object reference.
01 r2 object reference.
...
procedure division.
...
invoke jRectangle "new" returning r1
*> rectangle (x,y) = 0,0, width=0, height=0
invoke jRectangle "new" using 4, 5, 10, 20
returning r2
*> rectangle (x,y) = (4,5), width=10, height=20
COBOL ランタイム システムは、パラメーターの数と型を基に、Java クラス内の適切なコンストラクターを呼び出します。Java は型チェックが厳密であるため、指定するパラメーターの型は、Java クラスの定義に必ず一致させてください。COBOL データ形式と Java データ型のマッピングの詳細は、「Java データ型」の章を参照してください。コピーブック javatypes.cpy には、Java のデータ型に直接的に対応する一連のデータ型が定義されており、Java と COBOL 間でデータをやり取りするときには、これらのデータ型を COBOL 側で使用することを推奨します。