【发布时间】:2016-04-08 17:40:37
【问题描述】:
当我执行 x 次计算时,代码运行良好。但是,当我这样做时,乘数不会改变。我是 COBOL 的新手,所以我不确定我做错了什么。我基本上想要一个while循环,直到乘数大于0。由于cobol没有递归,我正在尝试这种方式,它在C中工作正常,但是它给我带来了关于循环方面的问题。
identification division.
program-id. multiplication.
data division.
working-storage section.
01 multiplier picture 9(36).
01 multiplicand picture 9(36).
01 answer picture 9(36).
procedure division.
begin.
display 'multiplier?'.
accept multiplier.
display 'multiplicand?'.
accept multiplicand.
perform calculation
with test after
until multiplier > 0.
display answer.
calculation.
if ((function mod(multiplier, 2)) = 1) then
add multiplicand to answer
end-if.
divide 2 into multiplier.
multiply 2 by multiplicand.
【问题讨论】:
-
直到乘数 > 0?您不是说当乘数 > 0 时吗?
-
是的,抱歉。我应该使用while吗?
-
或者“直到乘数
-
你在哪里初始化答案?
-
在 Cobol 中没有 while,只有直到(除非他们最近改变了这个)。您可以使用直到乘数 = 0,因为您已将变量定义为图 9,因此它们永远不会是负数。如果编译器支持 36 位数字的 comp,请尝试添加 comp 甚至更好的 comp-5
标签: cobol