On Size Error 没有给出预期的输出

On Size Error doesn't give expected output

当我 运行 下面的代码时,我得到以下输出:

       Var1: 761758
Actual-Var1: 761.758
Result-Var1: 761.75

我期待的是:

Result-Var1 is incorrect size!
       Var1: 761758
Actual-Var1: 761.758
Result-Var1: 761.75

我正在自学 COBOL,并且正在使用 Michael Coughlan 的书《程序员入门 COBOL》。他的 ON SIZE ERROR 短语的最小示例在第 62 页。看起来很简单,但我无法获得我想要的输出。有什么建议么?此外,我使用 Micro Focus Visual COBOL for Ecplise 作为我的 IDE.

       Identification Division.
       Program-ID. OnSizeErrorDemo.

       Data Division.
       Working-Storage Section.
         01 Var1 Pic 999V999 Value 761.758.
         01 Actual-Var1 Pic 999.999.
         01 Result-Var1 Pic 999.99.

       Procedure Division.
       Begin.
         Move Var1 To Actual-Var1

         Compute Result-Var1 = Var1
           On Size Error Display "Result-Var1 is incorrect size!"
         End-Compute

         Display "       Var1: ", Var1
         Display "Actual-Var1: ", Actual-Var1
         Display "Result-Var1: ", Result-Var1
       Stop Run

结果似乎是正确的。除非使用 ROUNDED 短语,否则低位数字将被截断。

如果结果的值大于 PICTURE 子句,SIZE ERROR 短语将生效,在本例中为 999.99。尝试

 Compute Result-Var1 = Var1 + Var1
   On Size Error Display "Result-Var1 is incorrect size!"
 End-Compute

测试 SIZE ERROR 短语。 Result-Var1应该不变。