KOQACNVは、KOQAOPNにてコード変換の文字コードの組み合わせを定義したものにもとづいて、コード変換を行います。
【呼び出し名およびパラメタ】
・アセンブラインタフェース CALL KOQACNV,(P1,P2,P3,P4,P5,P6),VL ・COBOLインタフェース CALL "KOQACNV" USING P1 P2 P3 P4 P5 P6.
【パラメタの説明】
KOQAOPNの第1パラメタで指定した、64バイトの作業域と同じ領域を指定します。
KOQAOPNの第2パラメタで指定した、コード変換時に使用する作業領域のアドレス格納領域(4バイト)と同じ領域を指定します。
以下に示す「レコード書式」を設定した領域(40バイト)を指定します。
[01]データ項目書式の個数(バイナリ値)
KOQACNVルーチンの第4パラメタで指定するレコード上のフィールド数(データ項目書式の個数)を指定します。
[02]未定義文字検出時の指示(バイナリ値)
文字のコード変換中に未定義文字を検出した時の処置を、以下の値で指定します。
値 | 未定義文字検出時の処置 |
---|---|
0 | 未定義文字を代替文字(アンダースコア)に置き換えて、コード変換処理を続行します。 |
1 | 未定義文字を検出したならば、KOQACNVルーチンは、ただちに復帰します。 |
2 | 未定義文字を指定された代替文字に置き換えて、コード変換処理を続行します。 |
[03]補正のための代替文字(1バイト用)および[04]補正のための代替文字(2バイト用)
[02]の項で値「2」を指定した場合、1バイト用の代替文字と2バイト用の代替文字の両方を指定してください。
[05]数値コード変換エラー発生時の指示(バイナリ値)
数値コードの表現形式に誤りがあるためにコード変換できない場合に、どのように処置させるかを以下の値で指定します。
値 | 数値コード変換エラー発生時の処置 |
---|---|
0 | 変換先の格納域にNULL値を設定して、コード変換処理を続行します。 |
1 | エラーの場合、KOQACNVルーチンは、ただちに復帰します。 |
2 | 続変換先の格納域にゼロ値を設定して、処理を続行します。 |
[06]変換先のパディングの指示(変換モード5の場合)(バイナリ値)
変換先の出力長に対してコード変換結果のデータ長が短いために、格納先の領域に空きが生じる場合、その空き部分に対してはどのように処置させるかを以下の値で指定します。
値 | 格納先の空き発生時の処置 |
---|---|
0 | 変換先の格納域の空き部分には、何も処置しません。 |
1 | 変換先の格納域の空き部分には、空白をパディングします。 |
2 | 変換先の格納域の空き部分には、指定されたコードでパディングします。 |
[07]補正処置のためのパディングコード(1バイト用)および[08]補正処置のためのパディングコード(2バイト用)
[06]の項で値「2」を指定した場合、1バイト用のパディングコードと2バイト用のパディングコードの両方を指定します。
[09]JEFコードのKシフトコード選択(変換モード5のとき)(バイナリ値)
JEFコード体系への変換の場合、変換先のレコードに格納するKシフトコードの種類(K,K1)を、以下の値で指定します。
値 | JEFコードのKシフトコード選択 |
---|---|
0 | K('28'X)を出力します。 |
1 | K1('38'X)を出力します。 |
[10]予約領域
バイナリ値「0」を必ず指定します。
[11]JEFコードあふれ時の補正指示(変換モード5のとき)(バイナリ値)
JEFコード体系への変換で、コード変換結果の2バイトコード列のデータが変換先の格納領域からあふれた場合、変換先の格納領域の末端部分を、2バイトコード列のままで切り落とすか、あるいはJEFのAシフトコードを強制挿入するように調整するかを指定します。
Aシフトの挿入にて末端部分を調整した結果、末尾に空白域が生じる場合には、その空白域の部分に対して代替コードを指定することもでき、以下の値で指定します。
値 | 出力長オーバー発生時の処置(JEFコード体系の出力の場合) |
---|---|
0 | 補正処置は行いません。2バイトコード列を末端にて、切り落としたままにします。 |
1 | 格納領域の末端にはAシフトを挿入するように調整します。挿入の結果、末尾に空が生じる場合には、空白('40'X)を設定します。 |
2 | 上記と同じ処置を行いますが、末尾に空が生じる場合には、指定されたコードにてパディングします。[12]を参照のこと。 |
[12]補正処置のためのパディングコード
[11]の項で値「2」を指定した場合、1バイトのパディングコードを指定します。
[13]予約領域
バイナリ値「0」を必ず指定します。
[14]無変換処理時のパディング指示(バイナリ値)
無変換処理のとき、格納先の領域に空きが生じる場合、その空き部分に対してどのように処置させるかを以下の値で指定します。
値 | 転送バイト量不足時の処置 |
---|---|
0 | 空きの部分には何も処置しません。 |
1 | 変換先にNULL値をパディングします。 |
2 | 指定されたコードにてパディングします。[15]を参照のこと。 |
[15]補足処置のためのパディングコード
[14]の項で値「2」を指定した場合、1バイトのパディングコードを指定します。
[16/17]予約領域
バイナリ値「0」を必ず指定します。
入力側(変換元)/出力側(変換先)の「データ項目書式」を設定した領域
(1データ項目あたり32バイト×データ項目個数)を指定します。
以下に「データ項目書式」を示します。
文字データ項目を高速に変換処理するために文字変換モードを指定します。
以下に文字変換モードを示します。
1バイトから1バイトへの変換を行います。
(変換先/変換元共にシフトコードなし)
本モードは、各コード系におけるANK文字どうしの変換を行う場合に使用します。
ただし、EUCコードにおける半角カナ文字は、以降のモード3を使用します。
2バイトから2バイトへの変換を行います。
(変換先/変換元共にシフトコードなし)
本モードは、各コード系における漢字どうしの変換を行う場合に使用します。
ただし、EUCコードにおける拡張文字(G3文字)は、以降のモード4を使用します。
1バイトから1/2バイトへの変換、またはその逆への変換を行います。
本モードは、EUCコードにおける半角カナ文字からの変換、またはEUCコードにおける半角カナへの変換に使用します。EUCコードにおける半角カナ文字以外で本モードを使用した場合には、モード1と同じになります。
2バイトから2/3バイトへの変換またはその逆への変換を行います。
本モードは、EUCコードにおける拡張文字(G3文字)からの変換、またはEUCコードにおける拡張文字(G3文字)への変換に使用します。EUCコードにおける拡張文字(G3文字)以外で本モードを使用した場合には、モード2と同じになります。
1/2バイトから1/2/3バイトへの変換またはその逆への変換を行います。
(変換元にシフトコードが必要です。変換先にシフトコードを付加します。)
本モードは、各コード系における漢字とANK文字が混在されたデータどうしの変換を行う場合に使用します。
無変換(入力側のデータをそのまま出力側へコピー)を行います。
本モードのみ、文字データ項目および数値データ項目を共に指定できます。
値 | 説 明 |
---|---|
1 | 文字変換モードの1を処理指示。 |
2 | 文字変換モードの2を処理指示。 |
3 | 文字変換モードの3を処理指示。 |
4 | 文字変換モードの4を処理指示。 |
5 | 文字変換モードの5を処理指示。 |
20 | 文字変換モードの20を処理指示。 |
[02]入力側データのタイプ(数値)(バイナリ値)
入力側(変換元)数値データのタイプを指定します。
数値データのタイプを以下に示します。
値 | 説 明 |
---|---|
000 | 省略指示(出力側パラメタのみに指定可能)。 |
100 | 2進数(整数)の指示(ビッグエンディアン)。 |
110 | 2進数(整数)の指示(リトルエンディアン)。 |
200 | グローバルサーバ系、内部10進数(符号なし)の指示。 |
201 | グローバルサーバ系、内部10進数(符号あり)の指示。 |
210 | Windows/UNIX系、内部10進数(符号なし)の指示。 |
211 | Windows/UNIX系、内部10進数(符号あり)の指示。 |
300 | グローバルサーバ系、外部10進数(符号無し)の指示。 |
301 | グローバルサーバ系、外部10進数(LEADING)の指示。 |
302 | グローバルサーバ系、外部10進数(TRAILING)の指示。 |
303 | グローバルサーバ系、外部10進数(LEADING SEPARATE)の指示。 |
304 | グローバルサーバ系、外部10進数(TRAILING SEPARATE)の指示。 |
310 | Windows/UNIX系、外部10進数(符号無し)の指示。 |
311 | Windows/UNIX系、外部10進数(LEADING)の指示。 |
312 | Windows/UNIX系、外部10進数(TRAILING)の指示。 |
313 | Windows/UNIX系、外部10進数(LEADING SEPARATE)の指示。 |
314 | Windows/UNIX系、外部10進数(TRAILING SEPARATE)の指示。 |
400 | 浮動小数点の指示(M形式)。 |
410 | 浮動小数点の指示(IEEE形式。ビッグエンディアン)。 |
420 | 浮動小数点の指示(IEEE形式。リトルエンディアン)。 |
備考.
表中のグローバルサーバ系、およびWindows/UNIX系は、サーバ種を規定するものではなく符号値を規定するものです。
[03]入力側データ項目長
入力側(変換元)のデータ項目長を指定します。
[04]入力側実データ長
入力側(変換元)の実データ長を指定します。
[05]復帰コード
このデータ項目形式に対してKOQACNVルーチンの完了コード(復帰コード)を通知します。
復帰コードは、KOQACNVルーチンの項を参照してください。
[06]エラー詳細情報
KOQACNVルーチンの復帰コードについての詳細コードを通知します。
エラー詳細情報は、KOQACNVルーチンの項を参照してください。
[07]出力側データのタイプ(数値)(バイナリ値)
出力側(変換先)数値データのタイプを指定します。
指定値は、[02]入力側データのタイプ(数値)の項を参照してください。
本パラメタが省略(000)された場合は、入力側(変換元)のデータタイプに対応するデータ型に変換します。
[08]出力側データ項目長
出力側(変換先)のデータ項目長を指定します。
[09]コード変換結果のコード列の長さ
コード変換結果のデータの長さを設定します。
パディング補正した場合には、パディング部分を含まない長さを通知します。
[10]未定義文字の検出回数
このデータ項目に対してコード変換した時に、未定義文字を検出した回数を通知します。
出力側(変換先)のレコード領域を指定します。
本領域は、P6の領域とは別の領域を指定します。(注)
入力側(変換元)のレコード領域を指定します。
本領域は、P5の領域とは別の領域を指定します。(注)
注意
P5とP6に同じ領域が指定された場合、コード変換処理の結果は保証されません。
【復帰コード】
第一パラメタ内 | データ 項目書式内 | 意 味 | ||
---|---|---|---|---|
復帰 | エラー | 復帰 | エラー | |
0 | 0 | 0 | 0 | 正常終了 |
8 | 8 | - | - | パラメタ誤り。 |
12 | - | - | 第一または第二パラメタ誤り。 | |
12 | 8 | - | - | 「レコード書式」の指定誤り。 |
20 | 4 | 4 | 未定義文字をアンダースコアで置換。または数値データ 項目に対してNULL値を設定。 | |
8 | 未定義文字を指定代替文字で置換。または数値データ 項目に対して0を設定。 | |||
8 | 0 | 文字のパディング処理を実施。 | ||
4 | JEFコードの文字あふれ時に「レコード書式」の指示に従って調整(文字モード5のとき)。 | |||
24 | 12 | 12 | 「データ項目書式」の指定誤り。 | |
16 | 4 | 上記以外の「データ項目書式」の指定誤り。 | ||
16 | 「レコード書式」の中止要求に従い中止。 | |||
32 | 入力長または出力長が32760を超えた。 |
例
COBOLインタフェースの記述例を以下に示します。
DATA DEVISION WORKING-STRAGE SECTION. 01 P1. 02 RC PIC S9(9) COMP. … 復帰コード 格納域 02 DRC PIC S9(9) COMP. … エラー 詳細情報格納域 02 FILLER PIC X(56). 01 P2. PIC S9(9) COMP. 01 PA3 PIC X(12) VALUE "SJISMS". … 変換先のキーワード 値 01 PA4 PIC X(12) VALUE "JEFAUGKANA". … 変換元のキーワード 値 01 PA5 PIC S9(9) COMP VALUE 0. … 縮退変換の指示なし 01 PA6 PIC S9(9) COMP VALUE 0. 01 P3. … レコード書式 02 DATC PIC S9(9) COMP VALUE 2. … データ 項目書式の個数 02 FILLER PIC X(36) VALUE LOW-VALUE. 01 P4. … データ 項目書式 02 P41. データ 項目書式1 03 CMOD PIC S9(9) COMP VALUE 2. … 文字変換モード 指示 03 ITYP PIC S9(9) COMP VALUE 0. … 入力データタイプ指示なし 03 IDATL1 PIC S9(9) COMP VALUE 20. … 入力データ 項目長 03 IDATL2 PIC S9(9) COMP VALUE 20. … 入力実データ 長 03 RTC PIC S9(9) COMP VALUE 0. … 復帰コード 03 EDTC PIC S9(9) COMP VALUE 0. … エラー 詳細情報 03 OTYP PIC S9(9) COMP VALUE 0. … 出力データタイプ指示なし 03 ODATL PIC S9(9) COMP VALUE 30. … 出力データ 項目長 03 RDATL PIC S9(9) COMP VALUE 0. … 変換結果長 03 UDFC PIC S9(9) COMP VALUE 0. 02 P42. … データ 項目書式2 03 CMOD PIC S9(9) COMP VALUE 0. … 文字変換モード 指示なし 03 ITYP PIC S9(9) COMP VALUE 100. … 入力データタイプ指示 03 IDATL1 PIC S9(9) COMP VALUE 4. … 入力データ 項目長 03 IDATL2 PIC S9(9) COMP VALUE 4. … 入力実データ 長 03 RTC PIC S9(9) COMP VALUE 0. … 復帰コード 03 EDTC PIC S9(9) COMP VALUE 0. … エラー 詳細情報 03 OTYP PIC S9(9) COMP VALUE 110. … 出力データタイプ指示 03 ODATL PIC S9(9) COMP VALUE 4. … 出力データ 項目長 03 RDATL PIC S9(9) COMP VALUE 0. … 変換結果長 03 UDFC PIC S9(9) COMP VALUE 0. 01 P5. … 変換先領域 02 TRGCHR PIC X(30) VALUE LOW-VALUE. 02 TRGBIN PIC S9(9) VALUE 0. 01 P6. … 変換元領域 02 SRCCHR PIC X(20). … 10文字分のJEF 日本語 文字を格納 02 SRCBIN PIC S9(9) VALUE 100. PROCEDURE DEVISION. ・ ・ CALL "KOQAOPN" USING P1 P2 PA3 PA4 PA5 PA6. … オープン処理 ・ ・ CALL "KOQACNV" USING P1 P2 P3 P4 P5 P6. … 拡張データ 変換処理 ・1項目目の日本語文字をJEFAUGKANAからSJISMSへコード 変換. ・2項目目の2進数(ビッグエンディアン)を2進数(リトルエンディアン)へ変換. ・ ・ CALL "KOQACLS" USING P1 P2. … クローズ処理 ・ ・