Java-Zeichenfolgen bearbeiten

COBOL stellt Java™ -Zeichenfolgedaten in Unicode dar. Um eine Java-Zeichenfolge in einem COBOL-Programm darzustellen, deklarieren Sie die Zeichenfolge als Objektreferenz der jstring-Klasse. Verwenden Sie dann JNI-Services, um COBOL- alphanumerische oder nationale (Unicode) Daten aus dem Objekt festzulegen oder zu extrahieren.

Informationen zu diesem Vorgang

Services für Unicode: Verwenden Sie die folgenden Standardservices für die Konvertierung zwischen JSTRING-Objektreferenzen und COBOL- USAGE NATIONAL -Datenelementen. Verwenden Sie diese Services für Anwendungen, die zwischen der Workstation und dem Mainframe portierbar sein sollen. Greifen Sie über Funktionszeiger in der JNINativeInterface -Umgebungsstruktur auf diese Services zu.

Tabelle 1. Services, die zwischen jstring-Referenzen und nationalen Daten konvertieren
Service- Eingabeargumente Rückgabewert
Neue Zeichenfolge1
  • JNI-Umgebungszeiger
  • Ein Zeiger auf eine Unicode-Zeichenfolge, wie z. B. ein nationales COBOL-Datenelement
  • Die Anzahl der Zeichen in der Zeichenfolge; binäres Vollwort
jstring-Objektreferenz
GetStringLength
  • JNI-Umgebungszeiger
  • Eine jstring-Objektreferenz
Die Anzahl der Unicode-Zeichen im jstring-Objektreferenz; binäres Vollwort
Zeichenfolgezeichen abrufen1
  • JNI-Umgebungszeiger
  • Eine jstring-Objektreferenz
  • Ein Zeiger auf ein boolesches Datenelement oder NULL
  • Ein Zeiger auf das Array von Unicode-Zeichen, die aus dem jstring-Objekt extrahiert wurden, oder NULL , wenn die Operation fehlschlägt. Der Zeiger ist gültig, bis er mit ReleaseStringChars freigegeben wird.
  • Wenn der Zeiger auf das boolesche Datenelement nicht null ist, wird der boolesche Wert auf 'true' gesetzt, wenn eine Kopie der Zeichenfolge erstellt wird, und auf 'false', wenn keine Kopie erstellt wird.
ReleaseStringChars
  • JNI-Umgebungszeiger
  • Eine jstring-Objektreferenz
  • Ein Zeiger auf das Array von Unicode-Zeichen, das von GetStringChars zurückgegeben wurde
Keine; der Speicher für das Array wird freigegeben.
  1. Dieser Service löst eine Ausnahmebedingung aus, wenn auf dem System kein Speicher mehr verfügbar ist.

Services für EBCDIC: Verwenden Sie die folgenden z/OS® -Services, eine Erweiterung des JNI, um zwischen jstring-Objektreferenzen und alphanumerischen COBOL-Daten (PIC X(n)) zu konvertieren.

Tabelle 2. Services, die zwischen jstring-Referenzen und alphanumerischen Daten konvertieren
Service- Eingabeargumente Rückgabewert
NewStringPlatform
  • JNI-Umgebungszeiger
  • Zeiger auf die auf null endende EBCDIC-Zeichenfolge, die Sie in ein jstring-Objekt konvertieren möchten
  • Zeiger auf die jstring-Objektreferenz, in der Sie das Ergebnis wünschen
  • Zeiger auf den Java-Codierungsnamen für die Zeichenfolge, dargestellt als auf null endende EBCDIC-Zeichenfolge1
Rückgabecode als binäre Vollwort-Ganzzahl:
0
Erfolgreich.
-1
Fehlerhafte Eingabe oder unzulässiges Eingabezeichen
-2
Nicht unterstützte Codierung. Der Verweis auf das jstring-Objekt ist auf NULLgesetzt.
GetStringPlatformLength
  • JNI-Umgebungszeiger
  • jstring-Objektreferenz, für die die Länge verwendet werden soll
  • Zeiger auf eine binäre Vollwort-Ganzzahl für das Ergebnis
  • Zeiger auf den Java-Codierungsnamen für die Zeichenfolge, dargestellt als auf null endende EBCDIC-Zeichenfolge1
Rückgabecode als binäre Vollwort-Ganzzahl:
0
Erfolgreich.
-1
Fehlerhafte Eingabe oder unzulässiges Eingabezeichen
-2
Nicht unterstützte Codierung. Der Verweis auf das jstring-Objekt ist auf NULLgesetzt.

Gibt im dritten Argument die erforderliche Länge des Ausgabepuffers in Byte zurück, um die konvertierte Java-Zeichenfolge aufzunehmen, einschließlich des abschließenden Nullbyte, auf das durch das zweite Argument verwiesen wird.

GetStringPlatform
  • JNI-Umgebungszeiger
  • JString-Objektreferenz, die Sie in eine auf null endende Zeichenfolge konvertieren möchten
  • Zeiger auf den Ausgabepuffer, in dem Sie die konvertierte Zeichenfolge wünschen
  • Länge des Ausgabepuffers als binäre Vollwort-Ganzzahl
  • Zeiger auf den Java-Codierungsnamen für die Zeichenfolge, dargestellt als auf null endende EBCDIC-Zeichenfolge1
Rückgabecode als binäre Vollwort-Ganzzahl:
0
Erfolgreich.
-1
Fehlerhafte Eingabe oder unzulässiges Eingabezeichen
-2
Nicht unterstützte Codierung. Die Ausgabezeichenfolge ist auf eine Nullzeichenfolge gesetzt.
-3
Konvertierungspuffer ist voll.
  1. Wenn der Zeiger NULLlautet, wird die Codierung aus der Java-Eigenschaft file.encoding verwendet.

Diese EBCDIC-Services sind als DLL gepackt, die Teil Ihres IBM® Java Software Development Kitist. Details zu den Services finden Sie unter jni_convert.h im IBM Java Software Development Kit.

Verwenden Sie CALL literal -Anweisungen, um die Services aufzurufen. Die Aufrufe werden über die DLL-Nebendatei libjvm.x aufgelöst, die Sie in den Linkschritt jedes COBOL-Programms einschließen müssen, das objektorientierte Sprache verwendet.

Der folgende Code erzeugt beispielsweise ein Java-String-Objekt aus der EBCDIC-Zeichenkette 'MyConverter'. (Dieses Codefragment stammt aus dem Client-Programm " J2EE, das in " Beispiel: ' J2EE Client geschrieben in COBOL vollständig dargestellt ist)


Move z"MyConverter" to stringBuf
Call "NewStringPlatform" 
  using by value JNIEnvPtr 
                 address of stringBuf
                 address of jstring1
                 0
  returning rc 

Wenn die EBCDIC-Services die einzigen JNI-Services sind, die Sie von einem COBOL-Programm aufrufen, müssen Sie das Copybook JNI.cpy nicht kopieren. Außerdem müssen Sie mit dem JNI-Umgebungszeiger keine Adressierbarkeit einrichten.

Services für UTF-8: Die native Java-Schnittstelle stellt auch Services für die Konvertierung zwischen jstring-Objektreferenzen und UTF-8 -Zeichenfolgen bereit. Die Verwendung dieser Services in COBOL-Programmen wird aufgrund der Schwierigkeiten bei der Verarbeitung von UTF-8 -Zeichenfolgen auf der z/OS -Plattform nicht empfohlen.