COBOL 是否强制一行的前 6 个字符为数字,因为它更容易编译为二进制可执行文件?

Mr *_*Man 2 assembly cobol language-design binaryfiles

我正在观看Ben Eater 视频,注意到 bin 文件行的前 8 个字符都有某种形式的地址并记住了 COBOL。这些是相关的还是只是巧合?这只是一个使编译更容易的约定吗?

Sim*_*sch 7

答案:不,没有 COBOL 编译器会强制执行序列,因为对于操作 COBOL 最初编写的打孔卡的人来说总是如此 - 如果您删除了这些序列号,那么将序列号放在其中会非常有用。由于这些数字也被打孔 - 还有分类机可以取出一堆打孔卡并为您分类。后来人们觉得在程序中定位也很好(在你有 IDE、跳转快捷键、大屏幕之前……)。

至少有一个 COBOL 编译器具有您可以启用的可选警告 - 在这种情况下,编译器将检查内容是否为空格或递增数字 - 但这是针对程序员的,而不是针对编译器的。

在 COBOL 本身中——据我所知,甚至早在 COBOL74 中——这些数字就从来不是编译器的。VAX COBOL74 手册说:

序列号区域 - 字符位置 1 到 6。保留用于源代码行序列号,使您能够在程序中定位和编辑源代码行。编译器会忽略该字段的内容。

对于跳来跳去 - 亲爱的GO TO,而且PERFORM- COBOL 有段落(后来也SECTION有)。

虽然许多人以固定形式的参考格式编写 COBOL 代码,但只有一个子集包含这些数字并积极使用它们,但我看到很多人使用它来标记属于一起或具有简短文档/程序员标签的更改在那里(和/或第 72 列之后)。