%THIS
%THIS は、ネイティブ・メソッドが呼び出されるように、 クラス・インスタンスへの参照を含むオブジェクト値を戻します。%THIS は、非静的ネイティブ・メソッドでのみ有効です。 この組み込み関数は、非静的ネイティブ・メソッドからクラス・インスタンスへのアクセスを提供します。
非静的ネイティブ・メソッドは、自分のクラスの特定のインスタンスを処理します。このオブジェクトは、Java™ によってパラメーターとしてネイティブ・メソッドに渡されますが、ネイティブ・メソッド用のプロトタイプやプロシージャー・インターフェースには現れません。Java メソッドにおいては、このオブジェクト・インスタンスは Java の予約語 this によって参照されます。 RPG ネイティブ・メソッドにおいては、このオブジェクト・インスタンスは %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