计算:发生低阶截断时发出警告

时间:2016-08-18 16:35:20

标签: cobol

我有一个指定为

的结果字段
01 MY-RESULT VALUE +0 USAGE COMP-3 PIC S9(13)V99

想象一下,我将两个因素相乘:

COMPUTE MY-RESULT = A * B

MY-RESULT中检测低阶截断的最佳方法是什么? 例如。何时A=B=2.01

未触发ON SIZE ERROR子句。

1 个答案:

答案 0 :(得分:3)

可以与所有供应商甚至是最老的编译器一起使用的东西(因为你没有指定任何方言似乎是最重要的部分):如果重要的是使用具有更多小数位的额外目标字段并在之后检查相等性:

COMPUTE MY-RESULT RESULT-WITH-MORE-DECIMALS = A * B
IF MY-RESULT NOT = RESULT-WITH-MORE DECIMALS
   ...
END-IF

ON SIZE ERROR跟踪上部截断。

如果您的编译器可以使用此2014功能操作系统,则可以使用INTERMEDIATE ROUNDING IS PROHIBITED(草稿将其作为ROUNDED-MODE PROHIBITED),这将显示此问题(如果启用了EC-SIZE-TRUNCATION异常)。谨防一个部分:这是一个例外,其中有一个致命的"种类...