4.9.1 dc_clt_code_convert − 文字コード変換
(1) 形式
#include <dcvclt.h> DCLONG dc_clt_code_convert( DCLONG request, char CLTFAR *source, DCULONG CLTFAR *source_len, char CLTFAR *dest, DCULONG CLTFAR *dest_len, 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までの範囲の長さが指定できます。
-
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) 注意事項
-
引数requestにDCCLT_EBCKEIS_TO_JISSJIS,引数flagsにDCCLT_CNV_TAB,またはDCCLT_CNV_CNTLを指定した場合,タブコードまたは制御コードを半角コードとして意識させたデータを,あらかじめ用意しておく必要があります。
-
コード変換の仕様の詳細については,「付録A コード変換の仕様」を参照してください。