Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Zeichen und Zeichenfolgen

&pagelevel(3)&pagelevel

Alphanumerische und nationale Zeichenfolgen werden an JCI-Funktionen in Strukturen übergeben, die zusätzlich zum Datenbereich ein Längenfeld enthalten.


Beispiel:

01 ANUM.
05 ANUM-LEN  PIC S9(9) COMP-5 VALUE 10.
05 ANUM-TEXT PIC X(10) VALUE "ANUM-TEXT".
01 NAT.
05 NAT-LEN  PIC S9(9) COMP-5 VALUE 10.
05 NAT-TEXT PIC N(10) VALUE N"NAT-TEXT".

In diesem Kapitel werden solche Strukturen in den Formaten als Cobvar bzw. CobNvar bezeichnet.

Ob Leerzeichen am Ende des Textbereiches ignoriert oder beibehalten werden, hängt von der aufgerufenen Funktion ab. In einigen Funktionen kann dieses Verhalten über einen zusätzlichen Parameter gesteuert werden.

Alphanumerische Zeichen und COBOL-Zeichenfolgen besitzen eine EBCDIC-Darstellung, während die Java-VM eine UTF-Darstellung (je nach Schnittstelle UTF8 oder UTF16) erwartet bzw. liefert. Notwendige Konvertierungen werden in den JCI-Funktionen automatisch durchgeführt. Dazu müssen alle Zeichen in EDF03IRV darstellbar sein. Für Zeichen(folgen), für die keine solche Darstellung existiert, müssen nationale Zeichen(folgen) (UTF16-Darstellung) verwendet werden, ansonsten ist das Ergebnis undefiniert. Für Zeichenfolgen, die binäre Nullen enthalten, müssen ebenfalls nationale Zeichenfolgen verwendet werden. Für Schnittstellen, für die keine nationalen Zeichenfolgen definiert sind (z.B. Klassen- und Methodennamen), dürfen nur konvertierbare Zeichen verwendet werden.

Java-Strings liegen als Objekte vor. Die Konvertierung zwischen Java-Strings und COBOL-Zeichenfolgen geschieht automatisch in den JCI-Funktionen.

Die Konvertierung besteht aus 2 Teilschritten:

  • Konvertierung zwischen EBCDIC-Strings und UTF8-Strings (nur für alphanumerische Zeichenfolgen).

  • Konvertierung zwischen UTF8- bzw. UTF16-Strings und Objekten.

Kommt es bei einer dieser Konvertierungen zu einem Fehler (z.B. Speichermangel), so wird die Bedingungsvariable ResErrCode (COPY-Element JCI-METHODRES) auf den Wert RES-ERR-NOMEM (Fehler im ersten Schritt) bzw. RES-ERR-OBJECT (Fehler im zweiten Schritt) gesetzt.

Ist das Längenfeld der COBOL-Struktur vor der Konvertierung gleich 0, so bleibt bei der Konvertierung eines Java-Strings in einen COBOL-String der Textbereich unverändert, bei Konvertierung in die andere Richtung wird ein Objekt für einen Null-String erzeugt. Ist das Längenfeld vor der Konvertierung kleiner als 0, so wird die Bedingungsvariable ResErrCode auf RES-ERR-LENGTH gesetzt.