Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

JCI_NewObject

&pagelevel(5)&pagelevel

Die Funktion erzeugt ein neues Java-Objekt.
Sie ist äquivalent zur JNI-Funktion NewObject. Sie bietet jedoch zusätzlich die Möglichkeit, Zeichenketten direkt zu übergeben.

Aufruf

CALL 'JCI_NewObject' USING cObj mID arg res

cObj
mID
arg
res

Klassenobjekt
Methoden-ID
Konstruktorargumente
Ergebnis

Argumente

cObj

Datenfeld des Typs JCI-object
Klassen-Objekt, für das ein Objekt erzeugt werden soll. Es darf nicht auf eine Array-Klasse verweisen.

mID

Datenfeld des Typs JCI-handle
ID der Konstruktor-Methode. Die Methoden-ID muss durch den Aufruf der Funktion JCI_GetMethodID mit Namen <init> und Signatur (...)V für die Klasse cObj beschafft werden.

arg

eine Struktur der Form MethodArg
Beschreibung der Argumente für den Konstruktor-Aufruf (siehe Abschnitt „Argumente und Ergebniswerte von Java-Methoden").

res

eine Struktur der Form MethodRes
Rückgabewert (neues Objekt) und Fehlerinformation (nur Ausgabe, Ergebnis in ResValObject). Im Fehlerfall wird JCI-NULL zurückgeliefert.

Returnwert (RETURN-CODE)

JCI-RET-OK

Der Aufruf war erfolgreich.

JCI-RET-ENULLOBJ

cObj ist JCI-NULL.

JCI-RET-ENULLID

mId ist JCI-NULL.

JCI-RET-EARGUMENT

cObj ist kein Klassen-Objekt oder verweist auf ein Array.

JCI-RET-ENOVM

Es ist keine Java-VM gestartet.

JCI-RET-EARGVERS

Die statisch generierte Versionsnummer in arg ist ungültig (eventuell überschrieben).

JCI-RET-ERESVERS

Die statisch generierte Versionsnummer in res ist ungültig (eventuell überschrieben).

JCI-RET-EARGNUM

Die Anzahl der übergebenen Argumente (CallArgNum) ist kleiner als 0 oder größer, als der Wert, der für <max-arguments> eingesetzt wurde (siehe Abschnitt „JCI-METHODARGS - Funktionsargumente").

JCI-RET-EARGTYPE

Der Wert des Feldes ArgType ist ungültig. Das Feld ResErrIndex enthält die Nummer des fehlerhaften Argumentes.

JCI-RET-EARGCONV

Bei der Konvertierung eines Argumentes ist ein Fehler aufgetreten.
Das Feld ResErrIndex enthält die Nummer des Argumentes, das Feld ResErrCode einen genaueren Fehlercode.

JCI-RET-ERR

Das Objekt konnte nicht erzeugt werden.

Exceptions

Alle Exceptions, die vom Konstruktor geworfen werden.

Die übrigen von der Funktion geworfenen Exceptions entsprechen denen der JNI-Funktion NewObject.

Beispiel

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
...