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

Compute: Warn when low-order truncation occurs

我有一个指定为

的结果字段
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子句未触发。

适用于所有供应商甚至最古老的编译器的东西(因为您没有指定任何方言,这似乎是最重要的部分os):如果重要,请使用额外的目标字段更多小数点 pos 并在之后检查是否相等:

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

ON SIZE ERROR 被跟踪以进行上截断。

如果这个 2014 功能 os 可用于您的编译器,您可以使用 INTERMEDIATE ROUNDING IS PROHIBITED(草案将其作为 ROUNDED-MODE PROHIBITED),它将向您显示此问题(如果 EC-SIZE-TRUNCATION 异常已启用)。当心一个部分:这是 "fatal" 类别的例外...