オブジェクト・データ・タイプ
オブジェクト・データ・タイプによって Java™ オブジェクトを定義することができます。
自由形式定義では、最初のキーワードとして OBJECT キーワードを指定します。 DCL-S MyString OBJECT(*JAVA : 'java.lang.String');
DCL-PR bdcreate OBJECT EXTPROC(*JAVA : 'java.math.BigDecimal'
: *CONSTRUCTOR);
val UCS2(100) CONST;
END-PR;

固定形式定義では、次のようにオブジェクト・データ・タイプ
を指定します。40 桁目にはデータ・タイプ O を指定します。
キーワード・セクションには CLASS キーワードを指定して、オブジェクトのクラスであることを指定します。* 変数 MyString は Java String オブジェクトです。
D MyString S O CLASS(*JAVA
D :'java.lang.String')
D bdcreate PR O EXTPROC(*JAVA
D :'java.math.BigDecimal'
D :*CONSTRUCTOR)

OBJECT キーワードと CLASS キーワードの両方とも、
最初のパラメーターには *JAVA を指定し、2 番目のパラメーターにはクラス名を
指定します。
オブジェクトが Java コンストラクターの戻りタイプ
である場合は、戻されたオブジェクトのクラスがメソッドのクラスと同じであるため、
自由形式定義の OBJECT キーワードのパラメーターまたは固定形式定義の CLASS キーワード
を指定する必要はありません。代わりに、環境 *JAVA、クラス名、および
プロシージャー名 *CONSTRUCTOR を指定した EXTPROC キーワードを指定します。
オブジェクトは、基底付きにはできません。また、オブジェクトはデータ構造のサブフィールドにもなれません。
オブジェクトが配列またはテーブルの場合、実行時にロードされるのでなければなりません。タイプが「オブジェクト」の実行時前とコンパイル時の配列とテーブルは許されません。
すべてのオブジェクトは、このオブジェクトがそのクラスのインスタンスと関連づけられていないことを示す *NULL に初期化されます。
オブジェクトの内容を変更するには、メソッドの呼び出しを使用する必要があります。 オブジェクトを使用して記憶域に直接アクセスすることはできません。
クラスは実行時に解決されます。 コンパイラーは、クラスが存在しているか、あるいは他のオブジェクトと互換性があるかのチェックは行ないません。