Easytrieve Plus : 演算処理の関数や四捨五入について
search cancel

Easytrieve Plus : 演算処理の関数や四捨五入について

book

Article ID: 185855

calendar_today

Updated On:

Products

EASYPROCLIB Easytrieve Report Generator 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   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  )

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

 

Additional Information

Old Japanese Knowledge document ID: JTEC000989