遇到“简单数学”的麻烦

时间:2015-09-28 12:35:50

标签: cobol

我的任务在哪里?我需要支付以现金支付的总薪酬,并显示员工支付的100s,50s,20s,10s,5s,1s。我确定它只是我的数学不起作用,但这里是我的代码

MongoDB

最终发生的事情是前100个显示为3,然后其他一切都是0。

1 个答案:

答案 0 :(得分:2)

我怀疑PAY被定义为PIC 9而不是PIC 9(7)(或其他),或者你正在使用的其他字段的定义存在一些问题(比如没有整数部分)

然而,通过利用COMPUTE就像其他语言中的赋值语句这样的事实,你会发现它是COBOL的“错误”方式。

相反,COBOL为数学动词提供了更多的细微差别。通过DIVIDEGIVING了解REMAINDER

DIVIDE W02-GROSS-PAY        BY 100
  GIVING                    NOTES-100
  REMAINDER                 W-RUNNING-BALANCE-LESS-100S
DIVIDE W-RUNNING-BALANCE-LESS-100S 
                            BY 50
  GIVING                    NOTES-50
  REMAINDER                 W-RUNNING-BALANCE-LESS-50S
DIVIDE W-RUNNING-BALANCE-LESS-50S 
                            BY 20
  GIVING                    NOTES-20
  REMAINDER                 W-RUNNING-BALANCE-LESS-20S
DIVIDE W-RUNNING-BALANCE-LESS-20S 
                            BY 10
  GIVING                    NOTES-10
  REMAINDER                 W-RUNNING-BALANCE-LESS-10S
DIVIDE W-RUNNING-BALANCE-LESS-10S 
                            BY 05
  GIVING                    NOTES-05
  REMAINDER                 COINS-01

如果你的COMPUTE工作正常,你不需要最后一个(除以1会给你原始数字作为答案)。使用COMPUTE,您在COBOL中所做的工作远远超过必要的工作。

既然您了解DIVIDE,也请查看MULTIPLYADDSUBTRACT

要完成图片,请查看INTEGERMOD等内在函数。 MOD以及更多,你有以上。 INTEGER是不必要的,因为对没有小数部分的字段的简单MOVE将到达那里。移动到没有整数部分的字段将获得分数。

不一定要寻找能够像其他语言一样的东西。你可以通过这种方式“传递”你的COBOL模块,但你不会真正学习COBOL。

相关问题