6.8.1 CBLDCUTL('CODECNV ') − 文字コード変換
(1) 形式
-
PROCEDURE DIVISIONの指定
CALL 'CBLDCUTL' USING 一意名1 一意名2 一意名3
-
DATA DIVISIONの指定
01 一意名1. 02 データ名A PIC X(8) VALUE 'CODECNV '. 02 データ名B PIC X(5). 02 FILLER PIC X(3). 02 データ名C PIC S9(9) COMP VALUE ZERO. 02 データ名D PIC S9(9) COMP. 01 一意名2. 02 データ名E PIC S9(9) COMP. 02 データ名F PIC X(n). 01 一意名3. 02 データ名G PIC S9(9) COMP. 02 データ名H PIC X(n).
(2) 機能
-
JISコード,またはシフトJISコードで構成される文字列を,EBCDICコード,EBCDIKコード,またはKEISコードで構成される文字列に変換します。
-
EBCDICコード,EBCDIKコードまたはKEISコードで構成される文字列を,JISコード,またはシフトJISコードで構成される文字列に変換します。
(3) UAPで値を設定するデータ領域
-
データ名A
文字コード変換を示す要求コードを「VALUE 'CODECNV△'」と設定します。
-
データ名C
変換時の条件(変換オプション)を,使用するオプションの数値の和で指定します。
0:デフォルト(各オプションの指定がない場合,この条件になる)
-
EBCDIKコードを使用します。
-
全角スペースを全角スペースのままにします。
-
'83版KEISコードを使用します。
-
無効コードがあった場合,エラーにします。
-
タブコード,または制御コードを半角コードとして認識しません。直前,または直後のデータが全角コードの場合でもシフトコードは付けられません。
1:EBCDICコードを使用します。
2:全角スペースを半角スペース2個に変換します。この指定は,データ名Dの値が1のときだけ有効です。
4:'78版KEISコードを使用します。
8:無効コードがあった場合,スペースに変換します。
- 16:タブコードを半角コードとして認識します。
-
直前,または直後のデータが全角コードの場合はシフトコードが付けられます。
- 32:制御コードを半角コードとして認識します。
-
直前,または直後のデータが全角コードの場合はシフトコードが付けられます。
-
-
データ名D
変換の方法を指定します。
- 1
-
JISコード,またはシフトJISコードで構成される文字列を,EBCDICコード,EBCDIKコード,またはKEISコードで構成される文字列に変換します。
- 2
-
EBCDICコード,EBCDIKコード,またはKEISコードで構成される文字列を,JISコード,またはシフトJISコードで構成される文字列に変換します。
-
データ名E
変換する文字列長を指定します。1からDCRPC_MAX_MESSAGE_SIZEまでの範囲の長さが指定できます。
-
データ名F
変換する文字列を指定します。
-
データ名G
変換後の文字列を受け取る領域の長さを指定します。
-
データ名H
変換後の文字列を格納する領域です。データ名Gで設定する長さ以上の領域を用意してください。
(4) 値が返されるデータ領域
-
データ名B
ステータスコードが,5けたの数字で返されます。
-
データ名G
変換後の文字列長が返されます。
-
データ名H
変換後の文字列が返されます。
(5) ステータスコード
ステータスコード |
意味 |
---|---|
00000 |
正常に終了しました。 |
02501 |
データ名に指定した値が誤っています。要求コード(データ名A)が間違っている場合も含みます。 |
02504 |
メモリ不足が発生しました。 このステータスコードは,変換する文字列に全角文字(2バイト)が含まれているのに,全角文字の1バイト目までの文字列長が指定されている場合にも返されます。 |
02550 |
文字列中に無効コードがあります。 |
02551 |
変換後の文字列の長さがCUPで用意した領域を超えています。 |
(6) 注意事項
-
データ名Dに2を指定し,データ名Cに16を指定,またはデータ名Dに2を指定し,データ名Cに32を指定した場合,タブコードまたは制御コードを半角コードとして意識させたデータを,あらかじめ用意しておく必要があります。
-
コード変換の仕様の詳細については,「付録A コード変換の仕様」を参照してください。