JNI.cpy copybook

This listing shows the JNI.cpy copybook, which you can use to access the Java™ Native Interface (JNI) services from your COBOL programs.

JNI.cpy contains sample COBOL data definitions that correspond to the Java JNI types, and contains JNINativeInterface, the JNI environment structure that contains function pointers for accessing the JNI callable services.

JNI.cpy is in the z/OS® UNIX file system in the include subdirectory of the COBOL install directory (typically /usr/lpp/cobol/include). JNI.cpy is analogous to the header file jni.h that C programmers use to access the JNI.


*****************************************************************
* COBOL declarations for Java native method interoperation      *
*                                                               *
* To use the Java Native Interface callable services from a     *
* COBOL program:                                                *
* 1) Use a COPY statement to include this file into the         *
*    the Linkage Section of the program, e.g.                   *
*      Linkage Section.                                         *
*      Copy JNI                                                 *
* 2) Code the following statements at the beginning of the      *
*    Procedure Division:                                        *
*      Set address of JNIEnv to JNIEnvPtr                       *
*      Set address of JNINativeInterface to JNIEnv              *
*****************************************************************
*
* Sample JNI type definitions in COBOL
*
*01 jboolean1 pic X.
*  88 jboolean1-true  value X'01' through X'FF'.
*  88 jboolean1-false value X'00'.
*
*01 jbyte1 pic X.
*
*01 jchar1 pic N usage national.
*
*01 jshort1 pic s9(4)  comp-5.
*01 jint1   pic s9(9)  comp-5.
*01 jlong1  pic s9(18) comp-5.
*
*01 jfloat1  comp-1.
*01 jdouble1 comp-2.
*
*01 jobject1 object reference.
*01 jclass1  object reference.
*01 jstring1 object reference jstring.
*01 jarray1  object reference jarray.
*
*01 jbooleanArray1 object reference jbooleanArray.
*01 jbyteArray1    object reference jbyteArray.
*01 jcharArray1    object reference jcharArray.
*01 jshortArray1   object reference jshortArray.
*01 jintArray1     object reference jintArray.
*01 jlongArray1    object reference jlongArray.
*01 floatArray1    object reference floatArray.
*01 jdoubleArray1  object reference jdoubleArray.
*01 jobjectArray1  object reference jobjectArray.

 01 JNIenv pointer.

* JNI Native Method Interface - environment structure.
 01 JNINativeInterface.
   02 pointer.
   02 pointer.
   02 pointer.
   02 pointer.
   02 GetVersion                       function-pointer.
   02 DefineClass                      function-pointer.
   02 FindClass                        function-pointer.
   02 FromReflectedMethod              function-pointer.
   02 FromReflectedField               function-pointer.
   02 ToReflectedMethod                function-pointer.
   02 GetSuperclass                    function-pointer.
   02 IsAssignableFrom                 function-pointer.
   02 ToReflectedField                 function-pointer.
   02 Throw                            function-pointer.
   02 ThrowNew                         function-pointer.
   02 ExceptionOccurred                function-pointer.
   02 ExceptionDescribe                function-pointer.
   02 ExceptionClear                   function-pointer.
   02 FatalError                       function-pointer.
   02 PushLocalFrame                   function-pointer.
   02 PopLocalFrame                    function-pointer.
   02 NewGlobalRef                     function-pointer.
   02 DeleteGlobalRef                  function-pointer.
   02 DeleteLocalRef                   function-pointer.
   02 IsSameObject                     function-pointer.
   02 NewLocalRef                      function-pointer.
   02 EnsureLocalCapacity              function-pointer.
   02 AllocObject                      function-pointer.
   02 NewObject                        function-pointer.
   02 NewObjectV                       function-pointer.
   02 NewObjectA                       function-pointer.
   02 GetObjectClass                   function-pointer.
   02 IsInstanceOf                     function-pointer.
   02 GetMethodID                      function-pointer.
   02 CallObjectMethod                 function-pointer.
   02 CallObjectMethodV                function-pointer.
   02 CallObjectMethodA                function-pointer.
   02 CallBooleanMethod                function-pointer.
   02 CallBooleanMethodV               function-pointer.
   02 CallBooleanMethodA               function-pointer.
   02 CallByteMethod                   function-pointer.
   02 CallByteMethodV                  function-pointer.
   02 CallByteMethodA                  function-pointer.
   02 CallCharMethod                   function-pointer.
   02 CallCharMethodV                  function-pointer.
   02 CallCharMethodA                  function-pointer.
   02 CallShortMethod                  function-pointer.
   02 CallShortMethodV                 function-pointer.
   02 CallShortMethodA                 function-pointer.
   02 CallIntMethod                    function-pointer.
   02 CallIntMethodV                   function-pointer.
   02 CallIntMethodA                   function-pointer.
   02 CallLongMethod                   function-pointer.
   02 CallLongMethodV                  function-pointer.
   02 CallLongMethodA                  function-pointer.
   02 CallFloatMethod                  function-pointer.
   02 CallFloatMethodV                 function-pointer.
   02 CallFloatMethodA                 function-pointer.
   02 CallDoubleMethod                 function-pointer.
   02 CallDoubleMethodV                function-pointer.
   02 CallDoubleMethodA                function-pointer.
   02 CallVoidMethod                   function-pointer.
   02 CallVoidMethodV                  function-pointer.
   02 CallVoidMethodA                  function-pointer.
   02 CallNonvirtualObjectMethod       function-pointer.
   02 CallNonvirtualObjectMethodV      function-pointer.
   02 CallNonvirtualObjectMethodA      function-pointer.
   02 CallNonvirtualBooleanMethod      function-pointer.
   02 CallNonvirtualBooleanMethodV     function-pointer.
   02 CallNonvirtualBooleanMethodA     function-pointer.
   02 CallNonvirtualByteMethod         function-pointer.
   02 CallNonvirtualByteMethodV        function-pointer.
   02 CallNonvirtualByteMethodA        function-pointer.
   02 CallNonvirtualCharMethod         function-pointer.
   02 CallNonvirtualCharMethodV        function-pointer.
   02 CallNonvirtualCharMethodA        function-pointer.
   02 CallNonvirtualShortMethod        function-pointer.
   02 CallNonvirtualShortMethodV       function-pointer.
   02 CallNonvirtualShortMethodA       function-pointer.
   02 CallNonvirtualIntMethod          function-pointer.
   02 CallNonvirtualIntMethodV         function-pointer.
   02 CallNonvirtualIntMethodA         function-pointer.
   02 CallNonvirtualLongMethod         function-pointer.
   02 CallNonvirtualLongMethodV        function-pointer.
   02 CallNonvirtualLongMethodA        function-pointer.
   02 CallNonvirtualFloatMethod        function-pointer.
   02 CallNonvirtualFloatMethodV       function-pointer.
   02 CallNonvirtualFloatMethodA       function-pointer.
   02 CallNonvirtualDoubleMethod       function-pointer.
   02 CallNonvirtualDoubleMethodV      function-pointer.
   02 CallNonvirtualDoubleMethodA      function-pointer.
   02 CallNonvirtualVoidMethod         function-pointer.
   02 CallNonvirtualVoidMethodV        function-pointer.
   02 CallNonvirtualVoidMethodA        function-pointer.
   02 GetFieldID                       function-pointer.
   02 GetObjectField                   function-pointer.
   02 GetBooleanField                  function-pointer.
   02 GetByteField                     function-pointer.
   02 GetCharField                     function-pointer.
   02 GetShortField                    function-pointer.
   02 GetIntField                      function-pointer.
   02 GetLongField                     function-pointer.
   02 GetFloatField                    function-pointer.
   02 GetDoubleField                   function-pointer.
   02 SetObjectField                   function-pointer.
   02 SetBooleanField                  function-pointer.
   02 SetByteField                     function-pointer.
   02 SetCharField                     function-pointer.
   02 SetShortField                    function-pointer.
   02 SetIntField                      function-pointer.
   02 SetLongField                     function-pointer.
   02 SetFloatField                    function-pointer.
   02 SetDoubleField                   function-pointer.
   02 GetStaticMethodID                function-pointer.
   02 CallStaticObjectMethod           function-pointer.
   02 CallStaticObjectMethodV          function-pointer.
   02 CallStaticObjectMethodA          function-pointer.
   02 CallStaticBooleanMethod          function-pointer.
   02 CallStaticBooleanMethodV         function-pointer.
   02 CallStaticBooleanMethodA         function-pointer.
   02 CallStaticByteMethod             function-pointer.
   02 CallStaticByteMethodV            function-pointer.
   02 CallStaticByteMethodA            function-pointer.
   02 CallStaticCharMethod             function-pointer.
   02 CallStaticCharMethodV            function-pointer.
   02 CallStaticCharMethodA            function-pointer.
   02 CallStaticShortMethod            function-pointer.
   02 CallStaticShortMethodV           function-pointer.
   02 CallStaticShortMethodA           function-pointer.
   02 CallStaticIntMethod              function-pointer.
   02 CallStaticIntMethodV             function-pointer.
   02 CallStaticIntMethodA             function-pointer.
   02 CallStaticLongMethod             function-pointer.
   02 CallStaticLongMethodV            function-pointer.
   02 CallStaticLongMethodA            function-pointer.
   02 CallStaticFloatMethod            function-pointer.
   02 CallStaticFloatMethodV           function-pointer.
   02 CallStaticFloatMethodA           function-pointer.
   02 CallStaticDoubleMethod           function-pointer.
   02 CallStaticDoubleMethodV          function-pointer.
   02 CallStaticDoubleMethodA          function-pointer.
   02 CallStaticVoidMethod             function-pointer.
   02 CallStaticVoidMethodV            function-pointer.
   02 CallStaticVoidMethodA            function-pointer.
   02 GetStaticFieldID                 function-pointer.
   02 GetStaticObjectField             function-pointer.
   02 GetStaticBooleanField            function-pointer.
   02 GetStaticByteField               function-pointer.
   02 GetStaticCharField               function-pointer.
   02 GetStaticShortField              function-pointer.
   02 GetStaticIntField                function-pointer.
   02 GetStaticLongField               function-pointer.
   02 GetStaticFloatField              function-pointer.
   02 GetStaticDoubleField             function-pointer.
   02 SetStaticObjectField             function-pointer.
   02 SetStaticBooleanField            function-pointer.
   02 SetStaticByteField               function-pointer.
   02 SetStaticCharField               function-pointer.
   02 SetStaticShortField              function-pointer.
   02 SetStaticIntField                function-pointer.
   02 SetStaticLongField               function-pointer.
   02 SetStaticFloatField              function-pointer.
   02 SetStaticDoubleField             function-pointer.
   02 NewString                        function-pointer.
   02 GetStringLength                  function-pointer.
   02 GetStringChars                   function-pointer.
   02 ReleaseStringChars               function-pointer.
   02 NewStringUTF                     function-pointer.
   02 GetStringUTFLength               function-pointer.
   02 GetStringUTFChars                function-pointer.
   02 ReleaseStringUTFChars            function-pointer.
   02 GetArrayLength                   function-pointer.
   02 NewObjectArray                   function-pointer.
   02 GetObjectArrayElement            function-pointer.
   02 SetObjectArrayElement            function-pointer.
   02 NewBooleanArray                  function-pointer.
   02 NewByteArray                     function-pointer.
   02 NewCharArray                     function-pointer.
   02 NewShortArray                    function-pointer.
   02 NewIntArray                      function-pointer.
   02 NewLongArray                     function-pointer.
   02 NewFloatArray                    function-pointer.
   02 NewDoubleArray                   function-pointer.
   02 GetBooleanArrayElements          function-pointer.
   02 GetByteArrayElements             function-pointer.
   02 GetCharArrayElements             function-pointer.
   02 GetShortArrayElements            function-pointer.
   02 GetIntArrayElements              function-pointer.
   02 GetLongArrayElements             function-pointer.
   02 GetFloatArrayElements            function-pointer.
   02 GetDoubleArrayElements           function-pointer.
   02 ReleaseBooleanArrayElements      function-pointer.
   02 ReleaseByteArrayElements         function-pointer.
   02 ReleaseCharArrayElements         function-pointer.
   02 ReleaseShortArrayElements        function-pointer.
   02 ReleaseIntArrayElements          function-pointer.
   02 ReleaseLongArrayElements         function-pointer.
   02 ReleaseFloatArrayElements        function-pointer.
   02 ReleaseDoubleArrayElements       function-pointer.
   02 GetBooleanArrayRegion            function-pointer.
   02 GetByteArrayRegion               function-pointer.
   02 GetCharArrayRegion               function-pointer.
   02 GetShortArrayRegion              function-pointer.
   02 GetIntArrayRegion                function-pointer.
   02 GetLongArrayRegion               function-pointer.
   02 GetFloatArrayRegion              function-pointer.
   02 GetDoubleArrayRegion             function-pointer.
   02 SetBooleanArrayRegion            function-pointer.
   02 SetByteArrayRegion               function-pointer.
   02 SetCharArrayRegion               function-pointer.
   02 SetShortArrayRegion              function-pointer.
   02 SetIntArrayRegion                function-pointer.
   02 SetLongArrayRegion               function-pointer.
   02 SetFloatArrayRegion              function-pointer.
   02 SetDoubleArrayRegion             function-pointer.
   02 RegisterNatives                  function-pointer.
   02 UnregisterNatives                function-pointer.
   02 MonitorEnter                     function-pointer.
   02 MonitorExit                      function-pointer.
   02 GetJavaVM                        function-pointer.
   02 GetStringRegion                  function-pointer.
   02 GetStringUTFRegion               function-pointer.
   02 GetPrimitiveArrayCritical        function-pointer.
   02 ReleasePrimitiveArrayCritical    function-pointer.
   02 GetStringCritical                function-pointer.
   02 ReleaseStringCritical            function-pointer.
   02 NewWeakGlobalRef                 function-pointer.
   02 DeleteWeakGlobalRef              function-pointer.
   02 ExceptionCheck                   function-pointer.