Easytrieve Plus : 演算結果を四捨五入した値は簡単に求められるか? 演算処理で関数は使えるか? 除算の余りの求め方は?

book

Article ID: 185855

calendar_today

Updated On:

Products

EASYPROCLIB CA Easytrieve Report Generator CA Easytrieve Report Generator for Common Services

Issue/Introduction

Question
演算結果を四捨五入した値は簡単に求められるか?
演算処理で関数は使えるか?
除算の余りの求め方は?

Environment

z/OS, MSP, VOS3, IBM, FUJITSU, HITACHI

Resolution

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   TRUNCATED   =   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  )

※いったん整数で商を求めてからその商を使って余りを求めます。

Additional Information

Old Japanese Knowledge document ID: JTEC000989