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
应该不变。
当我 运行 下面的代码时,我得到以下输出:
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
应该不变。