我的任务在哪里?我需要支付以现金支付的总薪酬,并显示员工支付的100s,50s,20s,10s,5s,1s。我确定它只是我的数学不起作用,但这里是我的代码
MongoDB
最终发生的事情是前100个显示为3,然后其他一切都是0。
答案 0 :(得分:2)
我怀疑PAY被定义为PIC 9
而不是PIC 9(7)
(或其他),或者你正在使用的其他字段的定义存在一些问题(比如没有整数部分)
然而,通过利用COMPUTE
就像其他语言中的赋值语句这样的事实,你会发现它是COBOL的“错误”方式。
相反,COBOL为数学动词提供了更多的细微差别。通过DIVIDE
和GIVING
了解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
,也请查看MULTIPLY
,ADD
和SUBTRACT
。
要完成图片,请查看INTEGER
和MOD
等内在函数。 MOD以及更多,你有以上。 INTEGER是不必要的,因为对没有小数部分的字段的简单MOVE
将到达那里。移动到没有整数部分的字段将获得分数。
不一定要寻找能够像其他语言一样的东西。你可以通过这种方式“传递”你的COBOL模块,但你不会真正学习COBOL。