固定小数点 (F) フォーマット項目は、実数の固定小数点 10 進算術値の文字表記を 記述するものです。
|
入力の場合は、データ・ストリーム中のデータ値は、実数の 10 進固定小数点定 数 (符号はあってもなくてもよい) でなければならず、それ以外のときは、 CONVERSION 条件が起こります。データ値は、指定したフィールド内のどこにあ ってもかまいません。 フィールド内のデータ値の前後にブランクがあってもよく、それらのブランクは 無視されます。 フィールド全体がブランクのときは、ゼロと解釈されます。
scaling-factor を省略し、しかもフィールド内に小数点がない場合、 fractional-digits を表す式は、データ値の桁のうち仮想小数点の右 側にある桁の桁数を示します。 データ値の中に小数点がある場合は、fractional-digits を表す式は 無効にされます。
scaling-factor を指定すると、データ・ストリーム中のデータ値に、10 の p 乗 (p はスケール因数を表す整数値) が乗算されます。 したがって、p が正の数ならば、そのデータ値の小数点は、指定された位置から右へ p 桁分移動したところにあるものと見なされます。 また、p が負の数ならば、そのデータ値の小数点は、与えられた位置 から左へ p 桁分移動したところにあるものと見なされます。 小数点がつく位置は、実際に小数点があればその位置であり、小数点が示されていなければ fractional-digits を表す式によって指定された位置です。
field-width が 0 のときは、データ・リスト項目にはなにも割り当てられません。
出力の場合は、データ・リスト項目が必要に応じて固定小数点に変換されます。 浮動小数点データは、FIXED DECIMAL (N,q) に変換されます。 ここで q は、fractional-digits に指定した値です。 ストリーム中のデータ値は、必要に応じて四捨五入された文字表記の実数の 10 進固定小数点であり、指定したフィールドに右寄せで入れられます。
10 進固定小数点タイプから文字タイプへの変換は、通常の変換規則に従って 行われます。 余分な桁は、変換後のストリングの数値の前にブランクとして示されます。 また先行ゼロはブランクに変換されるので (ただし小数点のすぐ左のゼロは除く)、数値の前に余分のブランクが現れることがあります。 小数点または負符号 (-) が書き出されるときは、どちらも先行ブランクの 1 つと置き換わります。
field-width だけを指定したときは、数の整数部分だけが書き出されます。小数点は示されません。
field-width と fractional-digits を指定したときは、 数の整数部分と小数部分の両方が書き出されます。 fractional-digits の値 (d) がゼロより大きければ、右端 d 桁の前に小数点が挿入されます。 fractional-digits が d より小さければ、後続のゼロが付けられます (値 d は field-width より小さくなければなりません)。 項目の絶対値が 1 より小さいときは、小数点の前に 0 が 1 つ付けられます。 小数点の左側にあるすべての桁 (すぐ左の 1 桁は除く) では、先行ゼロのゼロ消去が行われます。
データの丸めは次のようにして行われます。 切り捨てによって、右の切り捨てられる数字が 5 以上の場合は、 切り捨てられる数字の左の数字に 1 が追加されます。
出力において、データ・リスト項目が 0 より小さい場合は、 負符号 (-) が文字表示の前に付けられます。0 より大きいか等しい場合は、符号は付けられません。 したがって、負の値の場合には、符号、小数点、および小数点のすぐ左の 0 を桁数 として field-width に含めることを考慮する必要があります。
field-width が短すぎて文字が失われる場合は、SIZE 条件が起こります。
以下に例を示します。
declare Total fixed(4,2); put edit (Total) (F(6,2));
この PUT ステートメントでは、Total の値を文字表記の固定小数点数に変換し、 出力ファイル SYSPRINT に書き出すことを指定しています。 最後の 2 つの数字の前に小数点が挿入され、この数は 6 文字フィールドに 右寄せで入れられます。 先行ゼロ (小数点のすぐ左にあるゼロは除く) はブランクに変えられ、必要に応じて 負符号 (-) が最初の数字の左に付きます。