Wegen Unterschieden in der Art und Weise der Interpretation von Daten in unterschiedlichen Laufzeitumgebungen muss Ihr Programm möglicherweise die Daten konvertieren, die von einer Umgebung an eine andere Umgebung übergeben werden. Daten, die von Java™-Umgebungen in COBOL-Umgebungen und von COBOL in Java verschoben werden, müssen immer eine Datenkonvertierung durchlaufen. Die Datenkonvertierung erfolgt während der COBOL-Vorbereitungszeit und zur COBOL- oder Java-Laufzeit.
Programme, die bidirektionale Sprachen wie Arabisch oder Hebräisch unterstützen, können die BIDI-Konvertierungstabellen verwenden, um zusätzlich zur Codepagekonvertierung die Änderung der Richtung von Textdaten anzugeben. Informationen zur Erstellung von BIDI-Konvertierungstabellen finden Sie im Abschnitt "Bidireltionaler Sprachtext".
Der COBOL-Vorbereitungsprozess konvertiert Dateiinhalt, Dateipfadinformationen und Werte der Umgebungsvariablen bei der Übertragung workstationbasierter Dateien auf einen Build-Server. Für diese Situation werden die Schritte, die für den Aufbau einer Datenkonvertierungstabelle erforderlich sind, weiter unten in diesem Abschnitt beschrieben.
In diesem Fall können Sie die Konvertierungstabelle in einem Element callLink angeben, das sich auf das aufgerufene Programm bezieht. Alternativ können Sie angeben (in diesem Element callLink), dass die Systemvariable sysVar.callConversionTable die Konvertierungstabelle zur Ausführungszeit angibt.
In diesem Fall können Sie die Konvertierungstabelle in einer EGL-Bindung in der EGL-Deploymentdeskriptordatei (.egldd) angeben. Sie geben Sie Konvertierungstabelle an, indem Sie die Eigenschaft conversionTable für jedes Protokoll festlegen, das nicht lokal ist.
In diesem Fall können Sie die Konvertierungstabelle in einem Element callLink angeben, das sich auf das aufgerufene Programm bezieht. Alternativ können Sie angeben (in diesem Element callLink), dass die Systemvariable sysVar.callConversionTable die Konvertierungstabelle zur Ausführungszeit angibt.
In diesem Fall, können Sie die Konvertierungstabelle in einem Element asynchLink angeben, das sich auf den Datensatz bezieht, der in der Systemfunktion vgLib.startTransaction verwendet wird. Alternativ können Sie angeben (in diesem Element asynchLink), dass die Systemvariable sysVar.callConversionTable die Konvertierungstabelle zur Ausführungszeit angibt.
Dies ist für Java-Programme nicht möglich, weil die Funktion vgLib.startTransaction für Java nur Programme starten kann, die sich auf dem lokalen System befinden. Da alle Programme lokal sind, ist keine Konvertierung erforderlich.
In diesem Fall, können Sie die Konvertierungstabelle in einem Element fileLink angeben, das sich auf die Datei oder die Datenquelle bezieht. Alternativ können Sie (in diesem Element fileLink) angeben, dass die Systemvariable sysVar.callConversionTable die Umrechnungstabelle zur Ausführungszeit angibt.
Informationen zur Anpassung der Konvertierungstabelle in der z/OS-COBOL-Umgebung finden Sie unter IBM Rational COBOL Runtime Guide für zSeries.
Wenn COBOL auf einer Workstation auf einem z/OS- oder einem iSeries-Build-Server vorbereitet wird, erfolgt die Konvertierung in Übereinstimmung mit Ihren Angaben in den Builddeskriptoroptionen clientCodeSet und serverCodeSet auf einem Build-Server. Jede dieser Builddeskriptoroptionen muss einen codierter Zeichensatz angeben, der für den ICONV-Konvertierungsservice auf z/OS und iSeries definiert ist. Fehlt die Angabe, werden die Standardeinstellungen verwendet.
Programme, die bidirektionale Sprachen wie Arabisch oder Hebräisch unterstützen, können zusätzlich zur Codepagekonvertierung auch eine Umordnung der Textliterale erfordern. Weitere Informationen finden Sie im Abschnitt "Bidirektionaler Sprachtext".
Wenn ein generiertes COBOL-Programm auf ein Programm oder eine Datei in einer fernen CICS-Region zugreift, die den ASCII-Zeichensatz unterstützt, wird in Übereinstimmung mit der Konvertierungstabelle eine Konvertierung im aufrufenden Programm vorgenommen. Die Konvertierungstabelle ist in diesem Fall ein Lademodul, das Informationen zur Codepageumsetzung enthält.
Die Texttabelle listet die Konvertierungstabellen auf, die mit EGL ausgeliefert wurden und auf die zur Laufzeit von einem generierten COBOL-Programm zugegriffen werden kann. Diese Konvertierungstabelle konvertiert Daten zwischen dem EBCDIC-Format und den Windows 2000/NT/XP ASCII-Zeichensatztabellen.
| Sprache | Tabellenname |
|---|---|
| Brasilianisches Portugiesisch | ELACNPTB |
| Vereinfachtes Chinesisch | ELACNCHS |
| Traditionelles Chinesisch | ELACNCHT |
| Englisch in Großschreibung | ELACNENP |
| Amerikanisches Englisch | ELACNENU |
| Französisch | ELACNFRA |
| Deutsch | ELACNDEU |
| Italienisch | ELACNITA |
| Japanisch, Katakana (Einzelbytezeichensatz) | ELACNJPN |
| Koreanisch | ELACNKOR |
| Spanisch | ELACNESP |
| Deutsch (Schweiz) | ELACNDES |
Der Tabellenname ist in diesem Fall ein Symbol, das die Art der Konvertierung angibt, die zur Ausführungszeit erforderlich ist.
| Ferne Plattformen | |||||
|---|---|---|---|---|---|
| Sprache | Linux | UNIX | Windows 2000/NT/XP | z/OS UNIX System Services oder iSeries Java | z/OS oder iSeries COBOL |
| Arabisch | CSOJ1046 | CSOJ1046 | CSOJ1256 | CSOJ420 | CSOE420 |
| Vereinfachtes Chinesisch | CSOJ1381 | CSOJ1381 | CSOJ1386 | CSOJ1388 | CSOE1388 |
| Traditionelles Chinesisch | CSOJ950 | CSOJ950 | CSOJ950 | CSOJ1371 | CSOE1371 |
| Kyrillisch | CSOJ866 | CSOJ866 | CSOJ1251 | CSOJ1025 | CSOE1025 |
| Dänisch | CSOJ850 | CSOJ850 | CSOJ850 | CSOJ277 | CSOE277 |
| Osteuropa | CSOJ852 | CSOJ852 | CSOJ1250 | CSOJ870 | CSOE870 |
| Britisches Englisch | CSOJ850 | CSOJ850 | CSOJ1252 | CSOJ285 | CSOE285 |
| Amerikanisches Englisch | CSOJ850 | CSOJ850 | CSOJ1252 | CSOJ037 | CSOE037 |
| Französisch | CSOJ850 | CSOJ850 | CSOJ1252 | CSOJ297 | CSOE297 |
| Deutsch | CSOJ850 | CSOJ850 | CSOJ1252 | CSOJ273 | CSOE273 |
| Hebräisch | CSOJ856 | CSOJ856 | CSOJ1255 | CSOJ424 | CSOE424 |
| Japanisch | CSOJ943 | CSOJ943 | CSOJ943 | CSOJ1390 (Katakana SBCS), CSOJ1399 (Latin SBCS) | CSOE1390 (Katakana SBCS), CSOE1399 (Latin SBCS) |
| Koreanisch | CSOJ1363 | CSOJ1363 | CSOJ1363 | CSOJ1364 | CSOE1364 |
| Portugiesisch | CSOJ850 | CSOJ850 | CSOJ1252 | CSOJ037 | CSOE037 |
| Spanisch | CSOJ850 | CSOJ850 | CSOJ1252 | CSOJ284 | CSOE284 |
| Schwedish | CSOJ850 | CSOJ850 | CSOJ1252 | CSOJ278 | CSOE278 |
| Deutsch (Schweiz) | CSOJ850 | CSOJ850 | CSOJ1252 | CSOJ500 | CSOE500 |
| Türkisch | CSOJ920 | CSOJ920 | CSOJ1254 | CSOJ1026 | CSOE1026 |
Wenn Sie ein Programm von Java aufrufen und im Verbindungsoptionsabschnitt keinen Wert für die Konvertierungstabelle angeben, sind die Standardkonvertierungstabellen die Tabellen für Amerikanisches Englisch.
Die Datenkonvertierung von Datensätzen und Strukturen basiert auf den Deklarationen von Strukturfeldern, die keine Unterstruktur haben.
Für Variablen ohne Namen (diese Variablen sind in einem strukturierten Datensatz durch ein Sternchen gekennzeichnet) oder für Variablen vom Typ BIN, BIGINT, BOOLEAN, INT, SMALLINT, DECIMAL, MONEY, PACF, HEX, STRING oder UNICODE wird keine Konvertierung ausgeführt. Wenn Sie jedoch eine bidirektionale Umsetzung verwenden, werden UNICODE- und STRING-Variablen wie in der Tabelle definiert umgekehrt. Weitere Information finden Sie in Mit bidirektionalen Daten arbeiten.
Daten vom Typ CHAR, DBCHAR oder MBCHAR werden entsprechend der COBOL- oder Java-Konvertierungstabellen konvertiert.
Für Variablen vom Typ FLOAT und SMALLFLOAT konvertiert die Konvertierungsroutine von Java in zSeries COBOL und zurück mithilfe des IEEE 754-Formats für Java und mithilfe des IBM® 370-Formats für zSeries COBOL. Für die Variablen FLOAT und SMALLFLOAT ist zwischen Java und iSeries COBOL keine Konvertierung erforderlich.
Bei der EBCDIC-in-ASCII-Konvertierung für MBCHAR-Daten löscht die Konvertierungsroutine DBCS-Startzeichen und DBCS-Endezeichen und fügt eine entsprechende Anzahl an Leerzeichen am Ende der Variablen ein. Bei der ASCII-in-EBCDIC-Konvertierung fügt die Konvertierungsroutine DBCS-Startzeichen und DBCS-Endezeichen vor und nach den Doppelbytezeichenfolgen ein und schneidet den Wert beim letzten gültigen Zeichen ab, das in das Feld hineinpasst. Wenn das MBCHAR-Feld in einem Datensatz mit variabler Länge enthalten ist und das Ende des aktuellen Datensatzes sich im MBCHAR-Feld befindet, wird die Datensatzlänge angepasst, um das Einfügen oder Löschen von DBCS-Startzeichen und DBCS-Endezeichen widerzuspiegeln. Die Datensatzlänge gibt an, wo der aktuelle Datensatz endet.
| EBCDIC für Typ NUM | EBCDIC für Typ NUMC | ASCII |
|---|---|---|
| F (positives Vorzeichen) | C | 3 |
| D (negatives Vorzeichen) | D | 7 |
Für Variablen vom Typ DATE, INTERVAL, TIME oder TIMESTAMP konvertiert EGL die Werte mithilfe des CHAR-Algorithmus und des Zeichenfolgeformats der Variablen
Weitere Informationen zur Systemfunktion sysLib.convert() und zur Systemvariablen sysVar.callConversionTable finden Sie in den Abschnitten zu "convert()" und "callConversionTable" in der EGL-Sprachreferenz.