複数のオブジェクトの同時解放を Java に通知

RPG コードの、Java™ を使用するセクションの前で JNI 関数 PushLocalFrame を呼び出し、RPG コードの最後のセクションで PopLocalFrame を呼び出すと、 複数のローカル参照を同時に解放できます。PopLocalFrame を呼び出すと、PushLocalFrame の呼び出し以降に作成されたローカル参照すべてが解放されます。 これらの JNI 関数のパラメーターについて詳しくは、http://java.sun.com にある JNI の資料を参照してください。
 *----------------------------------------------------------------      
 * beginObjGroup - 後にまとめて削除できる新しいオブジェクトの
 *                 グループの開始
 *----------------------------------------------------------------
P beginObjGroup   b                   export     
D beginObjGroup   pi            10i 0     
D   env                           *   const     
D   capacityParm                10i 0 value options(*nopass)     
D rc              s             10i 0     
D capacity        s             10i 0 inz(100)      
 /free           
		JNIENV_p = env;                      
		if (%parms >= 2);              
			capacity = capacityParm;           
		endif;                      
		rc = PushLocalFrame (JNIENV_p : capacity);           
		if (rc <> 0);              
			return JNI_GROUP_NOT_ADDED;           
		endif;           
		return JNI_GROUP_ADDED;      
 /end-free
P beginObjGroup   e           
 *----------------------------------------------------------------      
 * endObjGroup - 最後に開始されたオブジェクトのグループの
 *               終了
 *----------------------------------------------------------------     
P endObjGroup     b                   export     
D endObjGroup     pi            10i 0     
D   env                           *   const     
D   refObjectP                    o   class(*java:'java.lang.Object')     
D                                     const     
D                                     options(*nopass)     
D   newObjectP                    o   class(*java:'java.lang.Object')     
D                                     options(*nopass)     
D retVal          s               o   class(*java:'java.lang.Object')     
D refObject       s                   like(refObjectP) inz(*null)     
D newObject       s                   like(newObjectP)     
 /free           
		JNIENV_p = env;                      
		if %parms() >= 2;              
			refObject = refObjectP;           
		endif;                      
		newObject = PopLocalFrame (JNIENV_p : refObject);                      
		if %parms() >= 3;              
	 		newObjectP = newObject;           
		endif;                      
		return JNI_GROUP_ENDED;      
 /end-free     
P endObjGroup     e
注: このラッパーを呼び出すには、JNI 環境ポインター (下記の JNI 環境ポインターの入手で説明) が必要です。