Cobol 与“有麻烦”;“简单数学”;
我有一个任务在哪里?我需要拿现金支付的总工资,并显示员工的工资有多少100、50、20、10、5、1。我确信这只是我的数学不起作用,但这是我的代码Cobol 与“有麻烦”;“简单数学”;,cobol,Cobol,我有一个任务在哪里?我需要拿现金支付的总工资,并显示员工的工资有多少100、50、20、10、5、1。我确信这只是我的数学不起作用,但这是我的代码 COMPUTE W02-PAY-100S = W02-GROSS-PAY / 100 COMPUTE PAY = W02-GROSS-PAY - (W02-PAY-100S * 100) COMPUTE W02-PAY-50S = PAY / 50 COMPUTE PAY = PAY - (
COMPUTE W02-PAY-100S = W02-GROSS-PAY / 100
COMPUTE PAY = W02-GROSS-PAY - (W02-PAY-100S * 100)
COMPUTE W02-PAY-50S = PAY / 50
COMPUTE PAY = PAY - (W02-PAY-50S * 50)
COMPUTE W02-PAY-20S = PAY / 20
COMPUTE PAY = PAY - (W02-PAY-20S * 20)
COMPUTE W02-PAY-10S = PAY / 10
COMPUTE PAY = PAY - (W02-PAY-10S * 10)
COMPUTE W02-PAY-5S = PAY / 5
COMPUTE PAY = PAY - (W02-PAY-5S * 5)
COMPUTE W02-PAY-1S = PAY / 1
.
最后的结果是前100个显示为3,然后其他所有显示为0。我怀疑PAY的定义是
PIC 9
,而不是PIC 9(7)
(或其他任何内容),或者您使用的其他字段的定义有问题(比如没有整数部分)
然而,对于COBOL来说,利用COMPUTE
类似于其他语言中的赋值语句,这样做是“错误的”
相反,COBOL为数学动词提供了更多的细微差别。看一看用给予和余数划分
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
如果你让你的电脑工作,你不需要最后一个(除以一,你会得到原来的数字作为答案)。有了计算机,您在COBOL中所做的工作比必要的多得多
既然您已经了解了除法
,还可以看看乘法
、加法
和减法
要完成此图,请查看内部函数,如INTEGER
和MOD
。国防部和更多,你有以上。整数是不必要的,因为一个简单的移动到一个没有小数部分的字段将到达那里。移动到没有整数部分的字段将得到分数
不一定要找一些能让你像用另一种语言那样做的东西。您可以通过这种方式“传递”COBOL模块,但您不会真正学习COBOL。您需要显示字段的定义。