4.10.3 dc_clt_codeconv_exec − 文字コード変換の実行
(1) 形式
(a) TP1/Client/Pの場合
#include <dcvclt.h> DCLONG dc_clt_codeconv_exec(DCLONG request, char CLTFAR *source, DCULONG CLTFAR *source_len, char CLTFAR *dest, DCULONG CLTFAR *dest_len, DCULONG cnthdl, DCLONG flags)
(b) TP1/Client/P(64)の場合
#include <dcvclt.h> DCLONG dc_clt_codeconv_exec(DCLONG request, char CLTFAR *source, DCULONG CLTFAR *source_len, char CLTFAR *dest, DCULONG CLTFAR *dest_len, DCCLT_ID cnthdl, DCLONG flags)
(2) 機能
次に示す文字コード変換を実行します。
JISコードまたはシフトJISコードで構成される文字列を,EBCDICコード,EBCDIKコード,またはKEISコードで構成される文字列に変換します。
また,EBCDICコードEBCDIKコードまたはKEISコードで構成される文字列を,JISコードまたはシフトJISコードで構成される文字列に変換します。
(3) UAPで値を設定する引数
-
request
変換の方法を次の要求コードで指定します。
- DCCLT_JISSJIS_TO_EBCKEIS
-
JISコード,またはシフトJISコードで構成される文字列をEBCDICコード,EBCDIKコード,またはKEISコードで構成される文字列に変換します。
- DCCLT_EBCKEIS_TO_JISSJIS
-
EBCDICコード,EBCDIKコード,またはKEISコードで構成される文字列を,JISコード,またはシフトJISコードで構成される文字列に変換します。
-
source
変換する文字列を指定します。
-
source_len
変換する文字列の長さを指定します。
1からDCRPC_MAX_MESSAGE_SIZEまでの範囲の長さが指定できます。
-
dest
変換後の文字列を受け取る領域を指定します。
-
dest_len
変換後の文字列を受け取る領域の長さを指定します。
1からDCRPC_MAX_MESSAGE_SIZEまでの範囲の長さが指定できます。
-
cnthdl
dc_clt_codeconv_open()で取得したコード変換で使用される制御テーブルのハンドルを指定します。
-
flags
変換時の条件をDCNOFLAGS,または次の形式(指定値の論理和)で指定します。
2,3,4,5,または6が先頭になる場合,|(ストローク)は省略してください。
〔1〕〔|2〕〔|3〕〔|4〕〔|5〕〔|6〕
1:{DCCLT_CNV_EBCDIC|DCCLT_CNV_EBCDIK}
2:{DCCLT_CNV_SPCHAN|DCCLT_CNV_SPCZEN}
3:{DCCLT_CNV_KEIS78|DCCLT_CNV_KEIS83}
4:{DCCLT_CNV_INVSPC|DCCLT_CNV_INVERR}
5:{DCCLT_CNV_TAB|DCCLT_CNV_NOTAB}
6:{DCCLT_CNV_CNTL|DCCLT_CNV_NOCNTL}
指定値の説明
- DCNOFLAGS
-
次に示す仮定値を使用します。
・EBCDIKコードを使用します。
・全角スペースを全角スペースのままにします。
・'83版KEISコードを使用します。
・無効コードがあった場合,エラーにします。
・タブコードを半角コードとして認識しません。直前,または直後のデータが全角コードの場合でもシフトコードは付けられません。
・制御コードを半角コードとして認識しません。直前,または直後のデータが全角コードの場合でもシフトコードは付けられません。
- DCCLT_CNV_EBCDIC
-
EBCDICコードを使用します。
- DCCLT_CNV_EBCDIK
-
EBCDIKコードを使用します。
- DCCLT_CNV_SPCHAN
-
全角スペースを半角スペース2個に変換します。
この指定は,引数requestにDCCLT_JISSJIS_TO_EBCKEISを指定した場合だけ有効です。
- DCCLT_CNV_SPCZEN
-
全角スペースを全角スペースのままにします。
- DCCLT_CNV_KEIS78
-
'78版KEISコードを使用します。
- DCCLT_CNV_KEIS83
-
'83版KEISコードを使用します。
- DCCLT_CNV_INVSPC
-
無効コードがあった場合,スペースに変換します。
- DCCLT_CNV_INVERR
-
無効コードがあった場合,エラーにします。
- DCCLT_CNV_TAB
-
タブコードを半角コードとして認識します。直前,または直後のデータが全角コードの場合はシフトコードが付けられます。
- DCCLT_CNV_NOTAB
-
タブコードを半角コードとして認識しません。直前,または直後のデータが全角コードの場合でもシフトコードは付けられません。
- DCCLT_CNV_CNTL
-
制御コードを半角コードとして認識します。直前,または直後のデータが全角コードの場合はシフトコードが付けられます。
- DCCLT_CNV_NOCNTL
-
制御コードを半角コードとして認識しません。直前,または直後のデータが全角コードの場合でもシフトコードは付けられません。
(4) 値が返される引数
-
dest
変換後の文字列が返されます。
-
dest_len
変換後の文字列の長さが返されます。
(5) リターン値
リターン値 |
数値 (10進数) |
意味 |
---|---|---|
DC_OK |
0 |
正常に終了しました。 |
DCCLTER_INVALID_ARGS |
-2501 |
引数に指定した値が誤っています。 |
DCCLTER_NO_BUFS |
-2504 |
メモリ不足が発生しました。 このリターン値は,制御テーブルのハンドルの値が不正である場合,および変換する文字列に全角文字(2バイト)が含まれているのに,全角文字の1バイト目までの文字列長が指定されている場合にも返されます。 |
DCCLTER_INVALID_CODE |
-2550 |
文字列中に無効コードがあります。 |
DCCLTER_OVERFLOW |
-2551 |
変換後の文字列の長さがCUPで用意した領域を超えています。 |
(6) 注意事項
-
この機能を使用する場合は,CommuniNetのコードマッピングテーブルが必要です。CommuniNetのコードマッピングユティリティで,コードマッピングテーブルを作成してから,この機能を使用してください。
-
CommuniNetインストール後,一度もCommuniNetコードマッピングユティリティで保存されていないコードマッピングテーブルは,使用できません。この機能を使用する前に,CommuniNetコードマッピングユティリティでコードマッピングテーブルを保存してください。
-
CommuniNetのコードマッピングテーブルのファイル名は,必ずCMAPEX.TBLとし,この機能を使用する前にWindowsのディレクトリ下に格納してください。
-
この機能を使用している途中で,CommuniNetのコードマッピングユティリティによって,コードマッピングテーブルの内容を変更しても,文字コード変換機能の処理には反映されません。
-
この機能では,エラーログ,およびUAPトレースの情報は取得しません。
-
文字コード変換の開始(dc_clt_codeconv_open関数)は,1回だけ発行して,文字コード変換の実行(dc_clt_codeconv_exec関数)をしてください。メモリ不足となるおそれがあるため,文字コード変換の開始は複数回発行しないでください。複数回発行した場合は,発行した回数分,文字コード変換の終了(dc_clt_codeconv_close関数)を発行してください。
-
引数requestにDCCLT_EBCKEIS_TO_JISSJIS,引数flagsにDCCLT_CNV_TAB,またはDCCLT_CNV_CNTLを指定した場合,タブコードまたは制御コードを半角コードとして意識させたデータを,あらかじめ用意しておく必要があります。
-
コード変換の仕様の詳細については,「付録A コード変換の仕様」を参照してください。