ソートマージ

[目次][用語][索引][前へ][次へ]

付録B.1 数値(固定小数点数)データの端数処理

ここでは,入力データが数値(固定小数点数)の場合の端数処理について説明します。

入力データの数値が小数の場合,小数点位置を合わせて入力します。入力データ中に小数点がない場合,データの末尾に小数点を仮定して入力します。入力データの桁に過不足がある場合は,桁調整を行った内部データ形式に変換されたあと,比較されます。

入力データの数値の扱いを次に示します。

整数部の桁調整
  • 有効桁数に満たないデータを入力した場合,左側に0(ゼロ)を加えて,有効桁に調整されます。
  • 左側が空白(ゼロ抑止)のデータを入力した場合,空白を0(ゼロ)と見なして有効桁に調整されます。
  • 有効桁数を超えるデータを入力した場合,左側の桁あふれ部分が無視されます。
  • 丸め方法は,環境ファイル(EXS_ROUND),またはroundオプションで指定された方法が適用されます。詳細は「5.8.11 roundオペランド」を参照してください。

小数部の桁調整
  • 有効桁数に満たないデータを入力した場合,右側に0(ゼロ)を加えて,有効桁数に調整されます。
  • 有効桁数を超えるデータを入力した場合,右側の桁あふれ部分を丸めて,有効桁数に調整されます。ただし,CSV数値データ(固定小数点数)の形式チェックオプション(CSVFRMCHKオプション)を指定した場合は,数字以外を丸めに用いません。有効桁の右隣りから数字以外の文字が出てくるまでが「あふれ部分」と見なされます。
    CSVFRMCHKオプション指定時の例を次の表に示します。
    入力データ 小数部あふれ部分
    (p = 4,s = 1)
    解説
    999 なし 小数点以下なし
    999. なし 小数点以下なし
    999.0 なし 小数点以下2桁目以降なし
    999.12 2(1桁) 小数点以下2桁目以降があふれ部分
    999.123 23(2桁) 小数点以下2桁目以降があふれ部分
    999.12A 2(1桁) 英字の前までがあふれ部分
    999.1A3 なし 英字の前まで(数字なし)
  • 丸め方法は,環境ファイル(EXS_ROUND),またはroundオプションで指定された方法が適用されます。詳細は「5.8.11 roundオペランド」を参照してください。

ゼロ値の扱い
  • 入力データがすべて空白文字である場合は,0(ゼロ)として扱われます。
  • 符号付きゼロ(+0,-0)と,符号なしゼロ(0)は同じ値として扱われます。

小数点位置の合わせ方
  • データ中に小数点がある場合は,小数点位置を合わせて入力されます。
  • データ中に小数点がない場合は,データの末尾に小数点を仮定して入力されます。
    入力データ 小数点位置 説明
    小数点あり .123
    1.23
    12.3
    123.
    .123
    1.23
    12.3
    123.3
    小数点位置を合わせて入力します。
    小数点なし 1
    12
    123
    1234
    1.
    12.
    123.
    1234.
    データ末尾に小数点を仮定して入力します。

入力データが数値の場合の,指定できる有効桁数の指定例を次の表に示します。なお,表中のpおよびsは,-csvkeyのパラメタに対応しています。

入力データ 有効桁数の指定 内部データ形式 説明
総桁数
(p)
整数部
(p-s)
小数部
(s)
1.234 8 5 3 00001.234
  • 整数部の桁が不足している場合
    整数部の左側に0を加えられて,5桁に調整されます。
△△12.34 6 4 2 0012.34
  • 整数部の先頭が空白の場合
    整数部の空白は0とされます。
12345.67 5 3 2 345.67
  • 整数部の桁があふれている場合
    整数部の左側2桁は入力されません。
1234.5678 4 0 4 0.5678
  • 整数部なしの場合
    整数部の有効桁が0のため,整数部はすべて切り捨てられます。
1.23 5 1 4 1.2300
  • 小数部の桁が不足している場合
    小数部の右側に0を加えられて,4桁に調整されます。
12.3456 3 2 1 12.3
  • 小数部の桁があふれている場合
    小数部の2桁目を丸めます。この例では,丸め方法に四捨五入を適用しています。
1234.56 4 4 0 1235
  • 小数部なしの場合
    小数部の有効桁が0のため,整数の値に丸めます。この例では,丸め方法に四捨五入を適用しています。
△△△△△ 4 3 1 000.0
  • すべて1バイトの空白文字の場合
    すべての空白文字は0とされます。

(凡例)
△:半角スペース(空白)を示します。