尺寸错误无法提供预期的输出结果

时间:2018-08-16 23:12:04

标签: cobol

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

       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的书《面向程序员的Beginning COBOL》。他在ON SIZE ERROR短语中的最小示例在第62页上。这看起来很简单,但我无法获得所需的输出。有什么建议么?另外,我将Ecplise的Micro Focus Visual COBOL作为我的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

1 个答案:

答案 0 :(得分:5)

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

如果结果的值大于SIZE ERROR子句(在这种情况下为PICTURE),则999.99短语将生效。试试

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

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