1

我正在检查 NIST TestSuite 的 Cobol 85 中的这个例子:

007700 WORKING-STORAGE SECTION.                                         SQ4014.2
007800                                                                  SQ4014.2
007900 01 VARIABLES.                                                    SQ4014.2
008000                                                                  SQ4014.2
008100     03 VKEY                                                      SQ4014.2
008200     XXXXX086.                                                    SQ4014.2
008300                                                                  SQ4014.2
008400                                                                  SQ4014.2
008500 PROCEDURE DIVISION.                                              SQ4014.2
008600                                                                  SQ4014.2

对我来说这似乎是错误的,因为记录描述条目 03 VKEY 后面应该跟一些关键字,比如 VALUE。相反,它后面是一个我不知道如何解释的标识符(XXXX086)。在这种情况下是什么意思?

4

2 回答 2

3

我不确定你从哪里得到样本,它看起来像是直接取自 newcob.val。如果“按预期”提取 COBOL 行是:

007700 WORKING-STORAGE SECTION.                                         SQ4014.2
007800                                                                  SQ4014.2
007900 01 VARIABLES.                                                    SQ4014.2
008000                                                                  SQ4014.2
008100     03 VKEY                                                      SQ4014.2
008200     PIC X(8).                                                    SQ4014.2
008300                                                                  SQ4014.2
008400                                                                  SQ4014.2
008500 PROCEDURE DIVISION.                                              SQ4014.2

所以正如 cschneid 所说:在编译之前要对其进行预处理,否则会引发错误。

附注:测试程序在标题中说明了他们测试的内容,这个说:

000400*THE FOLLOWING PROGRAM TESTS THE FLAGGING OF HIGH                 SQ4014.2
000500*SUBSET FEATURES THAT ARE USED IN SEQUENTIAL                      SQ4014.2

所以它不会出现任何错误。

我所知道的最简单的提取方法是获取GnuCOBOL的副本并理想地运行配置部分,然后make test在“tests/cobol85”子目录中运行(或使用其中的 perl 脚本手动提取文件)。您最终会为测试套件的每个模块创建一个子目录。

于 2019-11-09T19:15:52.643 回答
2

如所写,这是一个编译错误。这可能是测试套件的特定成员正在测试的内容。

它也有可能打算通过预处理器进行修改。请注意第 7 列中具有非标准字符的 NIST 套件的其他成员。

并非 NIST 测试套件的所有成员都是有效的 COBOL。

于 2019-11-07T15:30:17.430 回答