GET_CP_CONVERT_TABLE動詞は、ソース コード ページからターゲット コード ページに文字列を変換する 256 バイトの変換テーブルを作成して返します。
次の構造体では、 GET_CP_CONVERT_TABLE 動詞で使用される動詞制御ブロック (VCB) について説明します。
構文
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;
};
メンバー
オペコード
指定されたパラメーター。 操作コードを識別する動詞SV_GET_CP_CONVERT_TABLE。
opext
予約済みフィールド。
reserv2
予約済みフィールド。
primary_rc
返されたパラメーター。 動詞の完了時に APPC によって設定される主なリターン コードを指定します。 有効なリターン コードは、発行された APPC 動詞によって異なります。 この動詞の有効なエラー コードについては、リターン コードを参照してください。
secondary_rc
返されたパラメーター。 動詞の完了時に APPC によって設定されるセカンダリ リターン コードを指定します。 有効なリターン コードは、発行された APPC 動詞によって異なります。 この動詞の有効なエラー コードについては、リターン コードを参照してください。
reserv3
予約済みフィールド。
source_cp
指定されたパラメーター。 文字の変換元のソース コード ページを指定します。 許可されるコード ページ (10 進値) は次のとおりです。
ASCII 437、850、860、863、865
EBCDIC 037、273、277、278、280、284、285、297、500
65280 ~ 65535 の範囲のユーザー定義コード ページも使用できます。
ASCII コード ページは、PC コード ページと呼ばれることもあります。EBCDIC コード ページは、ホスト コード ページと呼ばれることもあります。
target_cp
指定されたパラメーター。 文字の変換先となるターゲット コード ページを指定します。 許可されているコード ページについては、上記の source_cpの定義を参照してください。
conv_tbl_addr
指定されたパラメーター。 256 バイト変換テーブルを格納するバッファーのアドレスを指定します。 バッファーは書き込み可能なセグメント内にあり、テーブルを格納するのに十分な長さである必要があります。
char_not_fnd
指定されたパラメーター。 ソース コード ページ内の文字がターゲット コード ページに存在しない場合に実行するアクションを指定します。
SV_ROUND_TRIPを使用して、各ソース コード ページ文字の変換テーブルに一意の値を格納します。
変換テーブルに代替文字 (substitute_char で指定) を格納するには 、SV_SUBSTITUTEを使用します。
substitute_char
指定されたパラメーター。 ソース コード ページの文字がターゲット コード ページに相当するものがない場合に、変換テーブルに格納する文字を指定します。
リターン コード
SV_OK
プライマリ リターン コード。動詞が正常に実行されました。
SV_PARAMETER_CHECK
プライマリ リターン コード。パラメーター エラーのため、動詞が実行されませんでした。
SV_INVALID_CHAR_NOT_FOUND
セカンダリ リターン コード。 char_not_fnd パラメーターに無効な値が含まれていました。
SV_INVALID_DATA_SEGMENT
セカンダリ リターン コード。セグメント境界を超えて拡張された変換テーブルに指定された 256 バイト領域、またはセグメントが書き込み可能でなかった。
SV_INVALID_SOURCE_CODE_PAGE
セカンダリ リターン コード。 source_cp で指定されたコード ページはサポートされていません。
SV_INVALID_TARGET_CODE_PAGE
セカンダリ リターン コード。 target_cp で指定されたコード ページはサポートされていません。
SV_COMM_SUBSYSTEM_NOT_LOADED
プライマリ リターン コード。動詞の処理中に必要なコンポーネントを読み込んだり終了したりできませんでした。 したがって、通信は行われませんでした。 修正措置については、システム管理者に問い合わせてください。
SV_INVALID_VERB
プライマリ リターン コード。 opcode パラメーターが動詞の操作コードと一致しませんでした。 動詞は実行されません。
SV_INVALID_VERB_SEGMENT
プライマリ リターン コード。データ セグメントの末尾を超えて拡張された VCB。
SV_UNEXPECTED_DOS_ERROR
プライマリ リターン コード。次のいずれかの条件が発生しました。
動詞の処理中に、Microsoft® Windows® システムでエラーが発生しました。 オペレーティング システムのリターン コードは、セカンダリ リターン コードを通じて返されました。 問題が解決しない場合は、修正措置についてシステム管理者に問い合わせてください。
CSV は、より一般的な Windows PostMessage 関数呼び出しではなく、Windows SendMessage 関数呼び出しを発行する別のアプリケーションによって呼び出されたメッセージ ループから発行されました。 動詞の処理は実行できません。
SendMessage がアプリケーションを呼び出したときに CSV が発行されました。 アプリケーションが SendMessage で呼び出されたかどうかを確認するには、 InSendMessage Windows API 関数呼び出しを使用します。
注釈
型 A 文字セットは、次の要素で構成されます。
- 大文字。
- 数字 0 ~ 9。
- 特殊文字 $、#、@、およびスペース。
この文字セットは、システム指定型 A 変換テーブルでサポートされています。
ソース文字列の最初の文字は、大文字または特殊文字 $、#、または @である必要があります。 スペースは末尾の位置でのみ使用できます。 小文字の ASCII 文字は、方向が ASCII から EBCDIC の場合、大文字の EBCDIC 文字に変換されます。
AE 型の文字セットは、次の要素で構成されます。
- 大文字。
- 小文字。
- 数字 0 ~ 9。
- 特殊文字 $、#、@、ピリオド、およびスペース。
この文字セットは、システム提供の型 AE 変換テーブルでサポートされています。
ソース文字列の最初の文字には、スペースを除く文字セット内の任意の文字を指定できます。
変換時に、埋め込みブランク (最初の位置のブランクを含む) が0x00に変換されます。 このような変換は完了しますが、CONVERSION_ERRORはセカンダリ リターン コードとして返されます。これは、CSV ライブラリが指定されたデータに対して元に戻せない変換を完了したことを示します。
Windows の場合、COMTBLG の説明は 、\SnaBase\Parameters\Client の下の Windows レジストリを指している必要があります。 OS/2 オペレーティング・システムの場合、表を含むディレクトリーおよびファイルを環境変数 COMTBLG で指定する必要があります。 (ファイルが見つからない場合、システムは SV_TABLE_ERROR パラメーター チェックを返します)。
char_not_fndのSV_ROUND_TRIP値は、同じ 2 つのコード ページ間で逆方向に変換する 2 つ目の変換テーブルを作成する場合にのみ役立ちます。 両方の変換テーブルを作成する際にSV_ROUND_TRIP値を指定すると、コード ページ間で変換された文字は変更されません。
char_not_fndにSV_SUBSTITUTE値を使用する場合、翻訳された文字列を元のコード ページに変換しても、必ずしも元の文字列が再作成されるとは限りません。
char_not_fndが SV_SUBSTITUTE に設定されている場合にのみ、substitute_charを使用します。
変換テーブルに格納されている値は、文字に関連付けられている ASCII 値です。 テーブルが ASCII から EBCDIC への変換に使用される場合、変換された文字列に表示される文字は、ASCII ではなく数値 EBCDIC 値に関連付けられた文字になります。
たとえば、ASCII から EBCDIC への変換テーブルを作成するときにアンダースコア () 文字 (ASCII 値 F6) を指定すると、変換された文字列に表示される文字は 6 になり、EBCDIC の値 F6 に関連付けられた文字になります。 ASCII から EBCDIC への変換テーブルの代替文字として \ 文字を使用するには、実際の文字ではなく、値 E1 (EBCDIC の _ 文字に関連付けられた値) を指定する必要があります。
コード ページは、特定の ASCII または EBCDIC 値を特定の文字に関連付けるテーブルです。 ソース コード ページの文字がターゲット コード ページに存在しない場合、変換された (ターゲット) 文字列は元の (ソース) 文字列と異なります。