Freigeben über


GET_CP_CONVERT_TABLE

Das Verb GET_CP_CONVERT_TABLE erstellt eine 256-Byte-Konvertierungstabelle und gibt sie zurück, um Zeichenfolgen von einer Quellcodepage in eine Zielcodepage zu übersetzen.

In der folgenden Struktur wird der vom GET_CP_CONVERT_TABLE-Verb verwendete Verbkontrollblock (Verb Control Block, VCB) beschrieben.

Syntax

  
struct get_cp_convert_table {  
    unsigned short       opcode;  
    unsigned char        opext;  
    unsigned char        reserv2;  
    unsigned short       primary_rc;  
    unsigned long        secondary_rc;  
    unsigned char        reserv3[8];  
    unsigned short       source_cp;  
    unsigned short       target_cp;  
    unsigned char FAR *  conv_tbl_addr;  
    unsigned char        char_not_fnd;  
    unsigned char        substitute_char;  
};  

Member

opcode
Angegebener Parameter. Das Verb, das den Vorgangscode identifiziert: SV_GET_CP_CONVERT_TABLE.

opext
Ein reserviertes Feld.

reserv2
Ein reserviertes Feld.

primary_rc
Zurückgegebener Parameter. Gibt den primären Rückgabecode an, der von APPC nach Abschluss des Verbs festgelegt wird. Die gültigen Rückgabecodes variieren je nach ausgegebenem APPC-Verb. Gültige Fehlercodes für dieses Verb finden Sie unter „Rückgabecodes“.

secondary_rc
Zurückgegebener Parameter. Gibt den sekundären Rückgabecode an, der von APPC nach Abschluss des Verbs festgelegt wird. Die gültigen Rückgabecodes variieren je nach ausgegebenem APPC-Verb. Gültige Fehlercodes für dieses Verb finden Sie unter „Rückgabecodes“.

reserv3
Ein reserviertes Feld.

source_cp
Angegebener Parameter. Gibt die Quellcodepage an, aus der Zeichen konvertiert werden. Die zulässigen Codepages (Dezimalwerte) lauten wie folgt:

  • ASCII 437, 850, 860, 863, 865

  • EBCDIC 037, 273, 277, 278, 280, 284, 285, 297, 500

Benutzerdefinierte Codepages im Bereich von 65280 bis 65535 sind ebenfalls zulässig.

ASCII-Codepages werden manchmal als PC-Codepages bezeichnet, EBCDIC-Codepages werden manchmal als Hostcodepages bezeichnet.

target_cp
Angegebener Parameter. Gibt die Zielcodepage an, in die Zeichen konvertiert werden. Informationen zu zulässigen Codepages finden Sie in der obigen Definition für source_cp.

conv_tbl_addr
Angegebener Parameter. Gibt die Adresse des Puffers an, der die 256-Byte-Konvertierungstabelle enthalten soll. Der Puffer muss sich in einem beschreibbaren Segment und so lang sein, dass er die Tabelle enthalten kann.

char_not_fnd
Angegebener Parameter. Gibt die Aktion an, die ausgeführt werden soll, wenn ein Zeichen der Quellcodepage auf der Zielcodepage nicht vorhanden ist:

  • Verwenden Sie SV_ROUND_TRIP, um einen eindeutigen Wert in der Konvertierungstabelle für jedes Quellcodepagezeichen zu speichern.

  • Verwenden Sie SV_SUBSTITUTE, um ein Ersatzzeichen (angegeben durch substitute_char) in der Konvertierungstabelle zu speichern.

substitute_char
Angegebener Parameter. Gibt das Zeichen an, das in der Konvertierungstabelle gespeichert werden soll, wenn ein Zeichen von der Quellcodepage kein Äquivalent auf der Zielcodepage hat.

Rückgabecodes

SV_OK
Primärer Rückgabecode; das Verb wurde erfolgreich ausgeführt.

SV_PARAMETER_CHECK
Primärer Rückgabecode; das Verb wurde aufgrund eines Parameterfehlers nicht ausgeführt.

SV_INVALID_CHAR_NOT_FOUND
Sekundärer Rückgabecode; der char_not_fnd-Parameter enthielt einen ungültigen Wert.

SV_INVALID_DATA_SEGMENT
Sekundärer Rückgabecode; der 256-Byte-Bereich, der für die Konvertierungstabelle angegeben wurde, reichte über die Segmentgrenze hinaus, oder das Segment war nicht beschreibbar.

SV_INVALID_SOURCE_CODE_PAGE
Sekundärer Rückgabecode; die von source_cp angegebene Codepage wird nicht unterstützt.

SV_INVALID_TARGET_CODE_PAGE
Sekundärer Rückgabecode; die von target_cp angegebene Codepage wird nicht unterstützt.

SV_COMM_SUBSYSTEM_NOT_LOADED
Primärer Rückgabecode; eine erforderliche Komponente konnte während der Verarbeitung des Verbs nicht geladen oder beendet werden. Folglich konnte die Kommunikation nicht stattfinden. Wenden Sie sich an den Systemadministrator, um Korrekturmaßnahmen zu ergreifen.

SV_INVALID_VERB
Primärer Rückgabecode; der opcode-Parameter stimmte nicht mit dem Vorgangscode eines Verbs überein. Kein Verb ausgeführt.

SV_INVALID_VERB_SEGMENT
Primärer Rückgabecode; der VCB wurde über das Ende des Datensegments hinaus erweitert.

SV_UNEXPECTED_DOS_ERROR
Primärer Rückgabecode; eine der folgenden Bedingungen ist aufgetreten:

  • Das Microsoft® Windows®-System hat beim Verarbeiten des Verbs einen Fehler festgestellt. Der Rückgabecode des Betriebssystems wurde über den sekundären Rückgabecode zurückgegeben. Wenn das Problem weiterhin besteht, wenden Sie sich an den Systemadministrator, um Korrekturmaßnahmen zu ergreifen.

  • Eine CSV-Datei wurde von einer Nachrichtenschleife ausgegeben, die von einer anderen Anwendung aufgerufen wurde, welche einen Windows-SendMessage-Funktionsaufruf statt des häufigeren Windows-PostMessage-Funktionsaufrufs ausgegeben hat. Die Verbverarbeitung kann nicht durchgeführt werden.

  • Eine CSV-Datei wurde ausgegeben, als Ihre Anwendung von SendMessage aufgerufen wurde. Sie können ermitteln, ob der Aufruf Ihrer Anwendung mit SendMessage durch Verwendung des Windows-API-Funktionsaufrufs InSendMessage erfolgt ist.

Hinweise

Der Zeichensatz vom Typ A besteht aus Folgendem:

  • Großbuchstaben.
  • Zahlen von 0 bis 9.
  • Sonderzeichen $, #, @ und Leerzeichen.

Dieser Zeichensatz wird von einer vom System bereitgestellten Konvertierungstabelle für Typ A unterstützt.

Das erste Zeichen der Quellzeichenfolge muss ein Großbuchstabe oder das Sonderzeichen $, #oder @sein. Leerzeichen sind nur an nachgestellten Positionen zulässig. ASCII-Kleinbuchstaben werden in EBCDIC-Großbuchstaben übersetzt, wenn die Richtung ASCII zu EBCDIC ist.

Der Zeichensatz vom Typ AE besteht aus Folgendem:

  • Großbuchstaben.
  • Kleinbuchstaben.
  • Zahlen von 0 bis 9.
  • Sonderzeichen $, #, @, Punkt und Leerzeichen.

Dieser Zeichensatz wird von einer vom System bereitgestellten Konvertierungstabelle für Typ AE unterstützt.

Das erste Zeichen der Quellzeichenfolge kann ein beliebiges Zeichen im Zeichensatz sein, mit Ausnahme des Leerzeichens.

Während der Konvertierung werden eingebettete Leerzeichen (einschließlich Leerzeichen an der ersten Position) in 0x00 konvertiert. Auch wenn eine solche Konvertierung abgeschlossen wird, wird CONVERSION_ERROR als sekundärer Rückgabecode zurückgegeben, um anzugeben, dass die CSV-Bibliothek eine Konvertierung der bereitgestellten Daten durchgeführt hat, die nicht rückgängig gemacht werden kann.

Für Windows sollte eine Beschreibung von COMTBLG auf die Windows-Registrierung unter \SnaBase\Parameters\Client verweisen. Für OS/2 müssen das Verzeichnis und die Datei, die die Tabelle enthalten, von der Umgebungsvariablen COMTBLG angegeben werden. (Wenn die Datei nicht gefunden wird, gibt das System die Parameterüberprüfung als SV_TABLE_ERROR zurück.)

Der Wert SV_ROUND_TRIP für char_not_fnd ist nur dann sinnvoll, wenn Sie eine zweite Konvertierungstabelle erstellen, um zwischen denselben beiden Codepages in umgekehrter Richtung zu konvertieren. Wenn Sie den SV_ROUND_TRIP-Wert beim Erstellen beider Konvertierungstabellen angeben, bleibt jedes Zeichen, das von einer Codepage in die andere und dann zurück übersetzt wird, unverändert.

Wenn bei Verwendung des SV_SUBSTITUTE-Werts für char_not_fnd die übersetzte Zeichenfolge wieder in die ursprüngliche Codepage konvertiert wird, entsteht nicht unbedingt die ursprüngliche Zeichenfolge.

Verwenden Sie substitute_char nur, wenn char_not_fnd auf SV_SUBSTITUTE festgelegt ist.

Der in der Konvertierungstabelle gespeicherte Wert ist der ASCII-Wert, der dem Zeichen zugeordnet ist. Wenn die Tabelle für die Konvertierung von ASCII in EBCDIC verwendet wird, ist das Zeichen, das in der konvertierten Zeichenfolge angezeigt wird, das Zeichen, das dem numerischen EBCDIC-Wert zugeordnet ist, nicht dem ASCII-Wert.

Wenn Sie beispielsweise den Unterstrich () (ASCII-Wert F6) angeben, während Sie eine ASCII-in-EBCDIC-Konvertierungstabelle erstellen, ist das Zeichen, das in den konvertierten Zeichenfolgen angezeigt wird, 6, das Zeichen, das dem Wert F6 in EBCDIC zugeordnet ist. Um das Zeichen \ als Ersatzzeichen in einer ASCII-in-EBCDIC-Konvertierungstabelle zu verwenden, sollten Sie den Wert E1 (den Wert, der dem Zeichen _ in EBCDIC zugeordnet ist) anstelle des tatsächlichen Zeichens angeben.

Eine Codepage ist eine Tabelle, die bestimmte ASCII- oder EBCDIC-Werte bestimmten Zeichen zuordnet. Wenn ein Zeichen der Quellcodepage auf der Zielcodepage nicht vorhanden ist, unterscheidet sich die übersetzte Zeichenfolge (Zielzeichenfolge) von der ursprünglichen Zeichenfolge (Quellzeichenfolge).