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

Document created by Masaaki_Iyama Employee on Jun 19, 2015Last modified by Masaaki_Iyama Employee on Jun 19, 2015
Version 1Show Document
  • View in full screen mode

文書番号: JTEC000989

製品名: CA-Easytrieve Plus

バージョン: R6.0以降

OS: z/OS, MSP, VOS3

 

Question

演算結果を四捨五入した値は簡単に求められるか?

演算処理で関数は使えるか?

除算の余りの求め方は? 

 

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 

 

代入ステートメント 代入後のRCVFLDの値

[処理および結果]

バージョン 6.0 以降

RCVFLD1  ROUNDED  =  SENDFLD1       →      10.8

RCVFLD2  ROUNDED  =  SENDFLD1       →      10.75

RCVFLD1  ROUNDED  =  SENDFLD2       →      10.6

RCVFLD2  ROUNDED  =  SENDFLD2       →      10.63

 

バージョン 5.3 以前

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) 関数の組合せ使用例   代入ステートメント   代入後のRCVFLDの値

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  )

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

Attachments

    Outcomes