identification division.
program-id. quick.
environment division.
data division.
working-storage section.
01 temp-val1 pic 9 value 1.
01 temp-val2 pic 9 value 2.
procedure division.
mainline.
perform encrypt.
stop run.
encrypt.
if (temp-val1 = 1)
display "1"
display "2".
end_if.
if (temp-val2 = 2)
display "2"
display "1".
end_if.
display "outside the ifs".
程序的输出简单:
1
2
但我希望:
1
2
2
1
在ifs之外
我做错了什么?我是否误解了第一个if或句点位置内的语句的句子结构?
答案 0 :(得分:4)
代码存在2个问题。一个是end-if
之前的时期。
另一个是end_if
与end-if
不同。 Cobol中仅使用end-if
。 end_if
被视为段落名称。因此,它不会(也不应该)生成编译器警告消息。
答案 1 :(得分:2)
试验和错误证明问题是语法和句点放置错误的混合。
这提供了提供预期输出的技巧。
identification division.
program-id. quick.
environment division.
data division.
working-storage section.
01 temp-val1 pic 9 value 1.
01 temp-val2 pic 9 value 2.
procedure division.
mainline.
perform encrypt.
stop run.
encrypt.
IF (temp-val1 = 1)
display "1"
display "2"
END-IF
if (temp-val2 = 2)
display "2"
display "1"
END-IF
display "outside the ifs".
openCobol程序员指南中的示例代码帮助我解决了这个问题。 http://opencobol.add1tocobol.com/OpenCOBOL%20Programmers%20Guide.pdf
答案 2 :(得分:1)
直言不讳
display "2".
end_if.
''。'在“2”结束if语句之后,你有另一个end_if和。哪个Open-Cobol可能正在采取程序结束 - 可能不是最好的解释。
正如尼克所说**不要混合编码风格。
personnaly我会放一个'。'在每个程序结束时单独在一行
encrypt.
IF (temp-val1 = 1)
display "1"
display "2"
END-IF
if (temp-val2 = 2)
display "2"
display "1"
END-IF
display "outside the ifs"
.