目前在Uni的一门课程中学习Cobol,我的代码中有几个错误让我感到困惑。
1)我不能评论任何传递第1行。我把*放在col7中它仍然无效。
2)我无法确定的所有IF语句似乎都存在问题。具体来说,它一直告诉我ELSE在那里做什么。编译器还告诉我变量'ohour-ihour'或我在COMPUTE中使用的任何变量都不存在。
如果有人能够指出我做错了什么,那将是非常有帮助的:(
02 IN.
03 ihour pic 99.
03 imin pic 99.
02 OUT.
03 ohour pic 99.
03 omin pic 99.
...
IF ihour<ohour
COMPUTE thour=ohour-ihour.
ELSE
COMPUTE thour=ihour-ohour.
END-IF.
答案 0 :(得分:5)
您不能做的一件事是使用“保留”字样,这意味着COBOL特有的字符,用于用户定义的名称。代码中的一个示例是IN
。
有几个带连字符的保留字,因此避免意外使用(现在或以后添加到语言中)的好方法是不使用“一个字”用户定义的名称。实际上,与大多数语言一样,使用良好的,描述性的,用过的定义名称是一种很好的做法。
代码中的另一个问题是使用句号/句号。您在.
中使用的IF
已终止IF
,因此ELSE
无效。
如上所述,数据名称通常通过实践连字符,-
在用户定义的名称中有效,并且使用方式与其他语言使用_
的方式大致相同(传统上)。因此,当您将ohour minus ihour
写为ohour-ihour
时,您实际上并没有这样做,但您使用了用户定义的名称ohour-ihour
,而这显然未定义
02 some-nice-descriptive-name.
03 ihour pic 99.
03 imin pic 99.
02 some-othe-nice-descriptive-name.
03 ohour pic 99.
03 omin pic 99.
...
IF ihour < ohour
COMPUTE thour = ohour - ihour
ELSE
COMPUTE thour = ihour - ohour
END-IF
.
请尝试以上方法。只在需要时使用全站/期间。在这里查看COBOL问题,以获得关于共同建议,实践和风格的一些想法。
您尚未提供失败评论的示例,因此我无法对此发表评论。展示一个示例,让我们了解编译器和操作系统。
答案 1 :(得分:1)
尝试使用*&gt;评论行而不是*。
星号字符只能在第7列以固定格式使用。 看来你不是使用固定格式而是使用自由格式。所以你必须使用两个字符的组合*&gt;因为它是用COBOL标准编写的。第22和23页
http://www.cobolstandard.info/wg4/open/WD1-10-pdf.zip
或看:
http://www.opencobol.org/modules/newbb/viewtopic.php?topic_id=612&forum=1