オブジェクト・フィールドを指定できる場所

オブジェクト・フィールドは、次の状態のときに使用できます。
自由形式の評価
EVAL 命令を使用して、ある Object 項目 (フィールドまたはプロトタイプされたプロシージャー) を、タイプ Object のフィールドに割り当てることができます。
自由形式の比較
あるオブジェクトを他のオブジェクトと比較することができます。 どんな比較でも指定することができますが、意味を持つのは次の比較のみです。
  • 他のオブジェクトと等しいか等しくないか。2 つのオブジェクトが等しいのは、それらが正確に同一のオブジェクトを表現している場合です。 同じ値を持つ 2 つの異なるオブジェクトは、等しくありません。
    2 つのオブジェクトの値が等しいかどうかをテストしたい場合は、次のように Java™ 'equals' メソッドを使用します。
     D objectEquals    PR              N   EXTPROC(*JAVA
     D                                           : 'java.lang.Object'
     D                                           : 'equals')
     C                   IF        objectEquals (obj1 : obj2)
     C                    ...
     C                   ENDIF
  • *NULL と等しいか等しくないか。 オブジェクトは、そのクラスの特定のインスタンスに関連付けられていない場合に、*NULL に等しくなります。
自由形式の呼び出しパラメーター
プロトタイプの中のパラメーターがオブジェクトである場合は、オブジェクトを CALL 命令のパラメーターとしてコーディングできます。
注:
  1. オブジェクトは、入力フィールドまたは出力フィールドとしては無効です。
  2. 妥当性検査の割り当てはチェックされません。たとえば RPG では、クラス「数」のオブジェクトをクラス「ストリング」で定義されているオブジェクト変数に割り当てることができます。これが正しくなかった場合は、Java エラーはユーザーが「ストリング」変数を使用しようとした時点で発生します。
図 1. オブジェクト・データ・タイプの例
D Obj             S               O   CLASS(*JAVA
D                                          :'java.lang.Object')
D Str             S               O   CLASS(*JAVA
D                                          :'java.lang.String')
D Num             S               O   CLASS(*JAVA
D                                          :'java.math.BigDecimal')

 * Since all Java classes are subclasses of class 'java.lang.Object',
 * any object can be assigned to a variable of this class.
 * The following two assignments are valid.
C                   EVAL      Obj = Str
C                   EVAL      Obj = Num
 * However, it would probably not be valid to assign Str to Num.