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

Does COBOL force the first 6 characters of a line to be numbers because it compiles easier to binary executables?

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

回答:不,没有任何 COBOL 编译器强制序列,因为对于操作打孔卡的人来说,COBOL 最初是在上面写的——如果你放弃了那些,那么拥有序列号是非常有用的在那里。当这些数字也被打孔时 - 还有分类机器会拿走一堆打孔卡并为您分类。 后来人家觉得在程序里定位也不错(之前有IDE,跳转快捷键,大屏,...)。

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

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

Sequence Number Area - Character positions 1 through 6. Reserved for source line sequence numbers that enable you to locate and edit source lines in your program. The compiler ignores the contents of this field.

跳转 - 亲爱的 GO TO,还有 PERFORM - COBOL 有段落(后来还有 SECTIONs)。

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