CONVERT
CONVERT 動詞は、ASCII 文字列を EBCDIC に変換するか、EBCDIC 文字列を ASCII に変換します。 変換される文字列は、ソース文字列と呼ばれます。 変換された文字列は、ターゲット文字列と呼ばれます。
次の構造体では、 CONVERT 動詞で使用される動詞制御ブロック (VCB) について説明します。
構文
struct convert {
unsigned short opcode;
unsigned char opext;
unsigned char reserv2;
unsigned short primary_rc;
unsigned long secondary_rc;
unsigned char direction;
unsigned char char_set;
unsigned short len;
unsigned char FAR * source;
unsigned char FAR * target;
};
メンバー
opcode
指定されたパラメーター。 操作コードを識別する動詞SV_CONVERT。
opext
予約済みフィールド。
reserv2
予約済みフィールド。
primary_rc
返されたパラメーター。 動詞の完了時に APPC によって設定されるプライマリ リターン コードを指定します。 有効なリターン コードは、発行された APPC 動詞によって異なります。 この動詞の有効なエラーコードについては、「リターン コード」を参照してください。
secondary_rc
返されたパラメーター。 動詞の完了時に APPC によって設定されるセカンダリ リターン コードを指定します。 有効なリターン コードは、発行された APPC 動詞によって異なります。 この動詞の有効なエラーコードについては、「リターン コード」を参照してください。
direction
指定されたパラメーター。 変換の方向を指定します。 ASCII から EBCDIC に変換するには、SV_ASCII_TO_EBCDICを使用します。 EBCDIC から ASCII に変換するには、SV_EBCDIC_TO_ASCIIを使用します。
char_set
指定されたパラメーター。 ソース文字列の変換に使用する文字セットを指定します。 使用できる値には、SV_A (型 A 文字セット)、SV_AE (型 AE 文字セット)、SV_G (ユーザー定義型 G 文字セット) が含まれます。
len
指定されたパラメーター。 変換する文字数を指定します。
この長さとソース バッファーまたはターゲット バッファーの先頭からのオフセットは、セグメント境界を超えることはできません。
source
指定されたパラメーター。 変換する文字列を含むバッファーのアドレスを指定します。
target
指定されたパラメーター。 変換された文字列を格納するバッファーのアドレスを指定します。
このバッファーは、 ソース パラメーターが指すバッファーと重複したり一致したりする可能性があります。 この場合、変換されたデータ文字列によってソース データ文字列が上書きされます。
リターン コード
SV_OK
プライマリ リターン コード。動詞は正常に実行されました。
SV_PARAMETER_CHECK
プライマリ リターン コード。パラメーター エラーのため、動詞は実行されませんでした。
SV_CONVERSION_ERROR
セカンダリ リターン コード。変換テーブルにソース文字列の 1 つ以上の文字が見つかりませんでした。 これらの文字は null に変換されました (0x00)。 動詞は引き続き実行されます。
SV_INVALID_CHARACTER_SET
セカンダリ リターン コード。 char_set パラメーターに無効な値が含まれていました。
SV_INVALID_DATA_SEGMENT
セカンダリ リターン コード。ソースまたはターゲット文字列を含むデータ バッファーが 1 つのセグメントに収まらなかったか、ターゲット セグメントが読み取り/書き込みセグメントではなかった。
SV_INVALID_DIRECTION
セカンダリ リターン コード。方向に無効な値が含まれていました。
SV_INVALID_FIRST_CHARACTER
セカンダリ リターン コード。型 A の最初の文字ソース文字列が無効です。
SV_TABLE_ERROR
セカンダリ リターン コード。次のいずれかが発生しました。
ユーザーが書き込んだ型 G 変換テーブルを含むファイルが、環境変数 CSVTBLG で指定されていません。
テーブルの形式が正しくありません。
CSVTBLG 変数で指定されたファイルが見つかりませんでした。
SV_COMM_SUBSYSTEM_NOT_LOADED
プライマリ リターン コード。動詞の処理中に、必要なコンポーネントを読み込めなかったか、終了できませんでした。 そのため、通信を行うことができませんでした。 是正措置については、システム管理者に問い合わせてください。SV_INVALID_VERB
プライマリ リターン コード。opcode パラメーターが、どの動詞の操作コードとも一致しませんでした。 動詞は実行されませんでした。SV_INVALID_VERB_SEGMENT
プライマリ リターン コード。VCB がデータ セグメントの終わりを越えています。SV_UNEXPECTED_DOS_ERROR
プライマリ リターン コード。次のいずれかの条件が発生しました。Microsoft Windows システムで、動詞の処理中にエラーが発生しました。 オペレーティング システムのリターン コードが、セカンダリ リターン コード経由で返されました。 問題が解決しない場合は、システム管理者に是正措置について問い合わせてください。
より一般的な Windows PostMessage 関数呼び出しではなく、Windows SendMessage 関数呼び出しを発行している別のアプリケーションによって呼び出されたメッセージ ループから、CSV が発行されました。 動詞処理を行うことはできません。
SendMessage によってアプリケーションが呼び出されたときに CSV が発行されました。 アプリケーションが SendMessage で呼び出されているかどうかを確認するには、InSendMessage Windows API 関数呼び出しを使用します。
解説
タイプ A 文字セットは、次で構成されます。
大文字。
0 ~ 9 の数字。
特殊文字 $、#、@、スペース。
この文字セットは、システム指定のタイプ A 変換テーブルでサポートされます。
ソース文字列の最初の文字は、大文字または特殊文字 $、#、または @である必要があります。 スペースは、末尾の位置でのみ許可されます。 方向が ASCII から EBCDIC の場合、小文字の ASCII 文字は、大文字の EBCDIC 文字に変換されます。
タイプ AE 文字セットは、次で構成されます。
大文字。
小文字。
0 ~ 9 の数字。
特殊文字 $、#、@、ピリオド、スペース。
この文字セットは、システム指定のタイプ AE 変換テーブルでサポートされます。
ソース文字列の最初の文字には、スペースを除く文字セット内の任意の文字を指定できます。 スペースは、末尾の位置でのみ許可されます。
変換時に、埋め込まれた空白 (最初の位置の空白を含む) は 0x00 に変換されます。 このような変換は完了しますが、CONVERSION_ERROR はセカンダリ リターン コードとして返されます。これは、CSV ライブラリが指定されたデータに対して元に戻すことができない変換を完了したことを示します。
Windows の場合、COMTBLG の説明は 、\SnaBase\Parameters\Client の下の Windows レジストリを指している必要があります。
G 型変換テーブルのデータは、32 行の ASCII ファイルである必要があります。 各行は、16 文字を表す 32 桁の 16 進数で構成され、復帰と改行で終わる必要があります。 最初の 16 行 (256 文字) は、ASCII 文字の変換先の EBCDIC 文字を指定します。残りの 16 行は、EBCDIC 文字の変換先の ASCII 文字を指定します。
A から F までの 16 進数の数字は、大文字または小文字のいずれかです。 ただし、IBM ES for OS/2 バージョン 1.0 との互換性を確保するために、これらの数字を大文字にすることもできます。
Note
GET_CP_CONVERT_TABLEを使用して、G 型のユーザー作成変換テーブルをメモリに作成し、テーブルをファイルに格納できます。