Answer
四捨五入の処理は関数を使用して行います。余りについてはロジック中で計算します。 指定できる処理関数には次の3種類があります。
INTEGER・・・・・・・・整数値のみ代入
ROUNDED・・・・・・・・四捨五入
TRUNCATED・・・・・・切り捨て
これらのオプションは、互いに組み合わせて使用することが可能です。
注意 バージョン6.0(ACOS版では5.1G)より前のバージョンでは四捨五入の処理についてもロジック中で計算します。
記述例
(例1) 四捨五入の処理例
[フィールド定義] (以下のサンプル例で使用するフィールド定義)
SENDFLD1 W 5 N 2 VALUE(10.75)
SENDFLD2 W 5 N 3 VALUE(10.628)
RCVFLD1 W 5 N 1
RCVFLD2 W 5 N 2
[処理および結果]
●バージョン 6.0 以降
代入ステートメント 代入後のRCVFLD1、又はRCVFLD2の値
RCVFLD1 ROUNDED = SENDFLD1 → 10.8
RCVFLD2 ROUNDED = SENDFLD1 → 10.75
RCVFLD1 ROUNDED = SENDFLD2 → 10.6
RCVFLD2 ROUNDED = SENDFLD2 → 10.63
●バージョン 5.3 以前での四捨五入方法
代入ステートメント 代入後のRCVFLD1、又はRCVFLD2の値
RCVFLD1 = SENDFLD1 + 0.05 → 10.8
RCVFLD2 = SENDFLD1 + 0.005 → 10.75
RCVFLD1 = SENDFLD2 + 0.05 → 10.6
RCVFLD2 = SENDFLD2 + 0.005 → 10.63
(例2) 関数の組合せ使用例 代入ステートメント実施後のRCVFLD1の結果
RCVFLD1の結果
RCVFLD1 INTEGER ROUNDED = SENDFLD1 → 10.8
RCVFLD1 INTEGER TRUNCATED = SENDFLD1 → 10.8
RCVFLD1 INTEGER = SENDFLD1 → 10.8
RCVFLD1 ROUNDED = SENDFLD1 → 10.75
RCVFLD1 TRUNCATE = SENDFLD2 → 10.6
RCVFLD1 = SENDFLD2 → 10.63
(例3) 除算で余りを求める例
WK-SYOU S 10 P 0
WK-AMARI S 10 P 0
*
WK-SYOU = I-SURYOU / I-KONPOU
WK-AMARI = I-SURYOU - ( I-KONPOU * WK-SYOU )
※いったん整数で商を求めてからその商を使って余りを求めます。