Für die Übergabe von Argumenten und Ergebniswerten zwischen dem COBOL-Programm und JCI-Funktionen, die Java-Methoden aufrufen oder Java-Datenfelder bearbeiten, werden Strukturen verwendet. Diese müssen alle notwendigen Informationen enthalten. Die Strukturen sind in den COPY-Elementen JCI-METHODARGS und JCI-METHODRES definiert (siehe Abschnitte „JCI-METHODARGS - Funktionsargumente" und „JCI-METHODRES - Funktionsergebnis"). Sie werden in diesem Kapitel als MethodArg
bzw. MethodRes
bezeichnet.
Sofern bei den Funktionsbeschreibungen nichts anderes definiert wird, gelten für Aufrufe von Funktionen, die ein Argument des Typs MethodArg
bzw. MethodRes
referenzieren, folgende Voraussetzungen:
Argumente
Das Feld
CallArgNum
muss vor dem Aufruf der Funktion die Anzahl der zu übergebenen Argumente enthalten.Für jedes Argument muss in der Struktur ein Element der Tabelle
CallArg
mit Werten versorgt sein.Im Feld
ArgType
muss der dem COBOL-Datentyp entsprechende BedingungsnameARG-...
gesetzt werden.Für Zeichenfolgen muss die Adresse einer
Cobvar
bzw.CobNvar
Struktur angegeben werden. Falls nachfolgende Leerzeichen ignoriert werden sollen, muss zusätzlichIGNORE-TRAILING-SPACES
gesetzt werden. Andere Argumente müssen direkt in die Struktur übertragen werden.Ergebniswerte
Für Ergebniswerte muss der dem COBOL-Datentyp entsprechende Bedingungsname
RES-...
im FeldResType
gesetzt werden oderRES-VOID
, falls kein Rückgabewert erwartet wird. Wird als Rückgabewert eine Zeichenfolge erwartet, so muss die Adresse einerCobvar
bzw.CobNvar
Struktur mit maximaler Länge für den Datenbereich im FeldResValAddr
angegeben werden. Ist die Länge <=0, so findet keine Übertragung des Ergebniswertes statt.Nach Rückkehr aus der Funktion enthält eine als Rückgabewert referenzierte
Cobvar
bzw.CobNvar
Struktur im Längenfeld die Anzahl der übertragenen Zeichen (maximal Eingabewert) und im Datenbereich die übertragenen Zeichen. Für andere Datentypen wird der Rückgabewert direkt in der Struktur übergeben.
Falls bei der Konvertierung eines Gleitpunkt-Datenfeldes oder String-Objektes eine Ausnahmesituation auftrat, enthält das Feld ResErrCode
nach der Rückkehr aus der Funktion den entsprechenden Fehlercode. Dieser kann durch die Bedingungsvariable RES-ERR-<bedingung>
abgefragt werden (siehe Abschnitte „Zeichen und Zeichenfolgen" und „Gleitkommazahlen"). War ein Argument fehlerhaft (RETURN-CODE RET-ERR-EARGUMENT), so enthält das Feld ResErrIndex
die Nummer des Ar gumentes.
Die folgende Tabelle gibt eine Übersicht über die Definitionen und die entsprechenden COBOL- und Java-Typen. Für COBOL-Typen, deren Name mit 'JCI-
' beginnt, existiert eine Typ-Definition im COPY-Element JCI-TYPEDEF.
Ein '*' in der letzten Spalte gibt an, dass in den JCI-Funktionen eine automatische Konvertierung des Argumentes bzw. Ergebniswertes vorgenommen wird.
Java-Typ | COBOL-Typ bzw. TYPEDEF | Variable | Bedingungsname | |
String | Struktur | Addr | ANUM-STRING | * |
byte | JCI-byte | Byte | BYTE | |
char | PIC X | Achar | ANUM-CHAR | * |
char | PIC N | Nchar | NAT-CHAR | |
boolean | JCI-boolean | Boolean | BOOLEAN | |
short | JCI-short | Short | SHORT | |
int | JCI-int | Int | INT | |
long | JCI-long | Long | LONG | |
float | USAGE COMP-1 | Float | FLOAT | * |
double | USAGE COMP-2 | Double | DOUBLE | * |
Java-Objekt (auch String-Objekt) | JCI-object | Object | OBJECT |