桁あふれ
データ加工する際、入力と出力のフォーマット情報や入力のフォーマット情報と変換後のデータサイズの指定の関係によっては数値データや文字列データの桁合わせや桁あふれが起こる場合があります。以下ではその場合の処理について説明します。
(1) 出力項目が項目タイプの場合の桁あふれの条件
項目タイプ |
バイト数 |
桁あふれする条件 |
---|---|---|
X |
|
入力データのサイズが出力サイズを超える場合 |
M |
|
入力データのサイズが出力サイズを超える場合 |
N |
|
入力データのサイズが出力サイズを超える場合 |
I |
|
入力データのサイズが出力サイズを超える場合 |
9 |
|
入力データのサイズが31桁を超える場合 |
P |
|
入力データのサイズが31桁を超える場合 |
S |
|
入力データのサイズが31桁を超える場合 |
B |
2バイト |
入力データが-32768~32767の範囲外である場合 |
4バイト |
入力データが-2147483648~2147483647の範囲外である場合 |
|
8バイト |
入力データが-9223372036854775808~9223372036854775807の範囲外である場合 |
|
F |
4、8バイト |
|
D |
|
入力データのサイズが出力サイズを超える場合 |
Z |
|
入力データのサイズが出力サイズを超える場合 |
コード変換を行う場合、「入力データのサイズ」はコード変換後のサイズで考えます。データの結合および分割を行う場合、「入力データのサイズ」は結合および分割後のサイズで考えます。
(2) 出力がCSV(XML)形式の場合の桁あふれの条件
項目タイプ |
桁あふれする条件 |
---|---|
CSV数値 |
入力データがFタイプで、整数部が19桁を超える場合(*1) |
XML数値 |
*1 |
: |
入力データの小数部が9桁を超える場合、10桁以降はカットされます。桁あふれのエラーにはなりませんので注意してください。 |
(3) 桁あふれ時のカット処理
数値データ(9タイプ、Pタイプ、Sタイプ)の場合、データは右詰に出力されます。そのため、データの左側がカットされます。Bタイプの場合は、最大値が出力されます。Fタイプの場合は、入力データの整数部を19桁以内、小数部を9桁以内にカットしたものが出力されますが、精度によって誤差が生じる場合があります。
文字列データの場合データは左詰に出力されます。そのためデータの右側がカットされます。
データ種 |
入力データ |
出力データ |
---|---|---|
数値データ(9タイプ) |
1234567890 |
4567890 |
文字列データ |
abcdefghij |
abcdefg |
(4) 桁あふれ時のデータの処理
入力の桁数(文字列データはデータサイズ)よりも出力の桁数の方が小さい場合や格納できる最大値を超えた場合、数値データや文字列データの桁あふれが起こる場合があります。桁あふれが起こった場合の動作はデータ加工情報設定の「停止条件」の指定によります。
以下に桁あふれが発生した場合の処理方法について説明します。
a) 停止条件による数値データ(9タイプ)の処理

図4.112 停止条件による数値データの処理
b) 前ゼロのある数値データ(9タイプ)の処理

図4.113 前ゼロのある数値データの処理
c) 停止条件による文字列データの処理

図4.114 停止条件による文字列データの処理
d) 後スペースのある文字列データの処理

図4.115 後スペースのある文字列データの処理
e) Mタイプへの変換時の処理(異なる漢字コード種)
Mタイプへの変換で、元のデータに2バイトコードが存在する場合、出力するデータサイズによってはデータの内容が保証できなくなる場合があります。2バイトコードが途中でカットされるような変換の場合、その2バイトコードは出力されず、半角スペースが出力されます。

図4.116 Mタイプへの変換時の処理1(異なる漢字コード種)

図4.117 Mタイプへの変換時の処理2(異なる漢字コード種)
※ 桁あふれが発生した場合、そのデータの値は保証されません。
同一漢字コード種間での変換の場合は動作が異なります。詳細については「出力ファイルの外字テーブルの設定」を参照してください。