无法评论和Cobol的其他问题

时间:2014-08-21 10:40:15

标签: cobol

目前在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.

2 个答案:

答案 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