Java インスタンスをネイティブ手続き型 COBOL に渡す JVM COBOL

com.microfocus.cobol.lang.JObject インターフェイスを使用して、Java インスタンスをネイティブ手続き型 COBOL アプリケーションに渡すことができます。このインターフェイスは、ポインターとしてオブジェクトを取得します。そのためには、Java JNI メソッドを使用する必要があります。

以下の例では、myclass インスタンスがネイティブ COBOL に渡されます。

 class-id. myclass implements type com.microfocus.cobol.lang.JObject.
 method-id. invokeMe.
   display "Hello from invokeMe method".
   goback.
 end method.

 method-id. main static public.
 local-storage section.
 01 myclass-instance type myclass.
 procedure division.
   set myclass-instance to type myclass::new()
   call "natsub" using by value myclass-instance
   stop run
 end method.

そして、ネイティブ COBOL は invokeMe メソッドを呼び出します。

$set ooctrl(+p) ooctrl(-f) dialect(iso2002) mf warning(1)
 identification division.
 program-id. natsub as "natsub".
 repository.
            class javasup as "javasup"
            class cls-myclass as "$java$myclass".

 working-storage section.
 01 myclass                   object reference cls-myclass.
 linkage section.
 01 myclass-jptr               pointer.
 procedure division using by value myclass-jptr.
    invoke javasup "getCOBOLObject" using myclass-jptr
                      returning myclass

    invoke myclass "invokeMe"

    invoke myclass "finalize" returning myclass
    goback.