算術からビット文字列への変換

算術からビット文字列への変換では、算術値の絶対値がビット文字列に変換されますが、期待どおりの結果が得られるとは限りません。

まず、変換元の算術値が Fixed Binary(K) に変換されます。K の値は、次の表に示すように、変換元のデータ型によって決まります。

変換元のデータ型 K の値
Fixed Decimal(P,Q) MIN(N,MAX(CEIL((P-Q)*3.32),0))
Float Decimal(P) MIN(N,CEIL(P*3.32))
Fixed Binary(P) (P)
Float Binary(P) MIN(N,P)

結果の整数の絶対値が、長さ K のビット文字列と見なされます。変換のコンテキストで変換先の長さが指定されている場合は、このビット文字列が右側にゼロ ビットを付加して拡張されるか (変換先の方が長い場合)、余分なビットが右側から切り捨てられます (変換先の方が短い場合)。変換元の値が大きすぎて精度 (K) の整数に変換できない場合は、プログラムがエラーになり、予期しない結果が生じることがあります。たとえば、V が Fixed Binary(15) の変数で、値が 5 の場合、長さ 15 のビット文字列に変換されると、値は '000000000000101'B になります。変換先が Bit(16) の場合は、右側がゼロで埋められるため、結果は '0000000000001010'B になります。変換先が Bit(5) の場合は、余分なビットがすべて右側から切り捨てられるため、結果は '00000'B になります。