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;
};
Members
オペコード
指定されたパラメーター。 操作コードを識別する動詞SV_CONVERT。
opext
予約済みフィールド。
reserv2
予約済みフィールド。
primary_rc
返されたパラメーター。 動詞の完了時に APPC によって設定される主なリターン コードを指定します。 有効なリターン コードは、発行された APPC 動詞によって異なります。 この動詞の有効なエラー コードについては、リターン コードを参照してください。
secondary_rc
返されたパラメーター。 動詞の完了時に APPC によって設定されるセカンダリ リターン コードを指定します。 有効なリターン コードは、発行された APPC 動詞によって異なります。 この動詞の有効なエラー コードについては、リターン コードを参照してください。
方向
指定されたパラメーター。 変換の方向を指定します。 ASCII から EBCDIC に変換するには、SV_ASCII_TO_EBCDICを使用します。 EBCDIC から ASCII に変換するには、SV_EBCDIC_TO_ASCIIを使用します。
char_set
指定されたパラメーター。 ソース文字列の変換に使用する文字セットを指定します。 使用できる値には、SV_A (型 A 文字セット)、SV_AE (AE 文字セット型)、SV_G (ユーザー定義型 G 文字セット) があります。
len
指定されたパラメーター。 変換する文字数を指定します。
この長さとソース バッファーまたはターゲット バッファーの先頭からのオフセットは、セグメント境界を超えてはなりません。
ソース
指定されたパラメーター。 変換する文字列を含むバッファーのアドレスを指定します。
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 システムでエラーが発生しました。 オペレーティング システムのリターン コードは、セカンダリ リターン コードを通じて返されました。 問題が解決しない場合は、修正措置についてシステム管理者に問い合わせてください。
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 レジストリを指している必要があります。
G 型変換テーブルのデータは、32 行の長い ASCII ファイルである必要があります。 各行は、16 文字を表す 32 桁の 16 進数で構成され、復帰と改行で終わる必要があります。 最初の 16 行 (256 文字) は、ASCII 文字の変換先の EBCDIC 文字を指定します。残りの 16 行は、EBCDIC 文字の変換先の ASCII 文字を指定します。
16 進数の A から F は、大文字または小文字にすることができます。 ただし、IBM ES for OS/2 バージョン 1.0 との互換性を確保するために、これらの数字を大文字にすることもできます。
注
GET_CP_CONVERT_TABLEを使用して、G 型のユーザー作成変換テーブルをメモリに作成し、テーブルをファイルに格納できます。