28.5.1 数字項目のけた拡張機能を使用する場合の演算結果
数字項目のけた拡張機能を使用する場合,中間結果で保持するけた数が40けたとなります。そのため,従来の1〜18けたの演算であっても,数字項目のけた拡張機能を使用しない場合と演算を含む算術式および条件式の結果が異なるときがあります。数字項目のけた拡張機能を使用しない場合の結果と合わせるときは,別の数字項目を使用して演算を分けてください。
(例) 01 A PIC 9(4) VALUE 0. 01 B PIC 9(2) VALUE 10. 01 C PIC 9(1) VALUE 4. : COMPUTE A = (B / C) * 100.
上記のCOMPUTE文は,次のような連続した操作に変換します。なお,tempはこのシステムが用意する中間結果項目です。
B / C → temp temp * 100 → A
数字項目のけた拡張機能を使用する場合,演算結果は次のようになります。
数字項目のけた拡張機能の使用有無 |
tempの属性 |
tempに設定される(B / C)の値 |
temp * 100の値 |
Aに設定される値 |
---|---|---|---|---|
使用する |
40けた10進浮動小数点 |
2.500・・・・000 (40けたの数値) |
250.000・・・・000 (40けたの数値) |
250 |
使用しない |
次のけた数の数字項目※ 整数部のけた数:2 小数部のけた数:なし |
2 |
200 |
200 |
数字項目のけた拡張機能を使用する場合の計算結果を,数字項目のけた拡張機能を使用しないときと同じにするには,次のように除算(B/C)の結果を別の数字項目WK1(数字項目のけた拡張機能を使用しない場合のtempの属性と同じけた数で定義)に転記したもので演算します。
01 A PIC 9(4) VALUE 0. 01 B PIC 9(2) VALUE 10. 01 C PIC 9(1) VALUE 4. 01 WK1 PIC 9(2) VALUE 0. : COMPUTE WK1 = B / C. COMPUTE A = WK1 * 100.