This function generates a new Java object.
It is equivalent to the JNI function NewObject. However, it also offers the option of transferring strings directly.
Call
CALL 'JCI_NewObject' USING cObj mID arg res
cObj | Class object |
mID | Method ID |
arg | Constructor arguments |
res | Result |
Arguments
cObj | Data field of the type Class object for which an object is to be generated. It may not refer to an array class. |
mID | Data field of the type |
arg | A structure of the form |
res | A structure of the form |
Return value (RETURN-CODE)
JCI-RET-OK
The call was successful.
JCI-RET-ENULLOBJ
cObj is JCI-NULL.
JCI-RET-ENULLID
mId is JCI-NULL.
JCI-RET-EARGUMENT
cObj is not a class object or refers to an array.
JCI-RET-ENOVM
No Java VM has been started.
JCI-RET-EARGVERS
The statically generated version number in arg is invalid (possibly overwritten).
JCI-RET-ERESVERS
The statically generated version number in res is invalid (possibly overwritten).
JCI-RET-EARGNUM
The number of arguments transferred (CallArgNum) is less than 0 or greater than the value used for <max-arguments> (see section "JCI-METHODARGS - Function arguments").
JCI-RET-EARGTYPE
The value of the ArgType field is invalid. The ResErrIndex field contains the number of the faulty argument.
JCI-RET-EARGCONV
An error occurred while an argument was being converted.
The ResErrIndex field contains the number of the argument, the ResErrCode field a more precise error code.
JCI-RET-ERR
The object could not be generated.
Exceptions
All exceptions generated by the constructor.
The other exceptions generated by the function correspond to those of the JNI function NewObject.
Example
DATA DIVISION. WORKING-STORAGE SECTION. COPY JCI-TYPEDEFS. 01 JCIConstants. COPY JCI-CONST. ... 01 className. 02 PIC S9(9) COMP-5 VALUE 30. 02 PIC X(30) VALUE 'myClass'. 01 methodName. 05 PIC S9(9) COMP-5 VALUE 9. 05 PIC X(10) VALUE '<init>'. 01 methodSig. 05 PIC S9(9) COMP-5 VALUE 80. 05 PIC X(80) VALUE '(Ljava/lang/String;Ljava/lang/String;)V'. 01 nText. 05 PIC S9(9) COMP-5 VALUE 8. 05 PIC N(20) VALUE N'COBOL'. 01 aText. 05 PIC S9(9) COMP-5 VALUE 8. 05 PIC X(20) VALUE 'Java'. 01 classObj TYPE JCI-object. 01 instanceObj TYPE JCI-object. 01 methodID TYPE JCI-handle. 01 MethodArgs. COPY JCI-METHODARGS REPLACING ==<max-arguments>== BY 2. 01 MethodRes. COPY JCI-METHODRES. ... PROCEDURE DIVISION. ... CALL 'JCI_FindClass' USING className classObject IF RETURN-CODE NOT = JCI-RET-OK ... END-IF CALL 'JCI_GetMethodID' USING classObj methodName methodSig methodID IF RETURN-CODE NOT = JCI-RET-OK ... END-IF MOVE 2 TO CallArgNum SET ARG-NAT-STRING(1) IGNORE-TRAILING-SPACES(1) TO TRUE SET ArgValAddr(1) TO ADDRESS OF nText SET ARG-ANUM-STRING(2) IGNORE-TRAILING-SPACES(2) TO TRUE SET ArgValAddr(2) TO ADDRESS OF aText CALL 'JCI_NewObject' USING classObj methodId MethodArgs MethodRes IF RETURN-CODE NOT = JCI-RET-OK ... END-IF MOVE ResValObject TO instanceObject ...