COBOL Запись описания записи я не могу расшифровать - PullRequest
1 голос
/ 07 ноября 2019

Я рассматриваю этот пример в Cobol 85 из NIST TestSuite:

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. Вместо этого следует идентификатор (XXXXX086), который я не знаю, как интерпретировать. Что это значит в этом контексте?

Ответы [ 2 ]

3 голосов
/ 09 ноября 2019

Я не уверен, откуда вы взяли образец, похоже, он был взят прямо из 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: она должна быть предварительно обработана перед компиляцией, в противном случае возникнет ошибка.

Aпримечание стороны: тестовые программы в заголовке говорят, для чего они тестируют, эта говорит:

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 для извлечения файлов вручную). В итоге у вас будет один подкаталог для каждого модуля набора тестов.

2 голосов
/ 07 ноября 2019

Как написано, это ошибка компиляции. Это может быть тем, что тестируется этим конкретным участником набора тестов.

Также возможно, что он предназначен для модификации через препроцессор. Обратите внимание на других членов набора NIST с нестандартными символами в столбце 7.

Не все члены набора тестов NIST являются допустимыми COBOL.

...