次の方法で共有


GET_CP_CONVERT_TABLE

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 値を特定の文字に関連付けるテーブルです。 ソース コード ページの文字がターゲット コード ページに存在しない場合、変換された (ターゲット) 文字列は元の (ソース) 文字列と異なります。