%THIS (ネイティブ・メソッド用のクラス・インスタンスの戻し)

%THIS

%THIS は、ネイティブ・メソッドが呼び出されるように、 クラス・インスタンスへの参照を含むオブジェクト値を戻します。%THIS は、非静的ネイティブ・メソッドでのみ有効です。 この組み込み関数は、非静的ネイティブ・メソッドからクラス・インスタンスへのアクセスを提供します。

非静的ネイティブ・メソッドは、自分のクラスの特定のインスタンスを処理します。 このオブジェクトは、Java によってパラメーターとしてネイティブ・メソッドに渡されますが、ネイティブ・メソッド用のプロトタイプやプロシージャー・インターフェースには現れません。Java メソッドにおいては、このオブジェクト・インスタンスは Java の予約語 this によって参照されます。RPG ネイティブ・メソッドにおいては、このオブジェクト・インスタンスは %THIS 組み込み関数によって参照されます。

図 233. %THIS の例
 * Method "vacationDays" is a method in the class 'Employee'
D vacationDays    PR            10I 0 EXTPROC(*JAVA
D                                           : 'Employee'
D                                           : 'vacationDays')

 * Method "getId" is another method in the class 'Employee'
D getId           PR            10I 0 EXTPROC(*JAVA
D                                           : 'Employee'
D                                           : 'getId')
...
 * "vacationDays" is an RPG native method.  Since the STATIC keyword
 * is not used, it is an instance method.
P vacationDays    B                   EXPORT
D vacationDays    PI            10I 0

D id_num          S             10I 0

 * Another Employee method must be called to get the Employee's
 * id-number.  This method requires an Object of class Employee.
 * We use %THIS as the Object parameter, to get the id-number for
 * the object that our native method "vacationDays" is working on.
C                   eval      id_num = getId(%THIS)
C     id_num        chain     EMPFILE
C                   if        %found
C                   return    VACDAYS
C                   else
C                   return    -1
          C                   endif

P vacationDays    E