GnuCOBOL 报告编写器:语法错误,意外的 IS,期待 LEADING 或 TRAILING

Geo*_*mer 0 cobol gnucobol

安装了 GnuCOBOL 版本3.0-rc1.0以尝试最近添加的 Report Writer。试图在 Michael Coughlan 的 Beginning COBOL for Programmers 的第 18 章中编译第一个列表[PIC X(52) 是我对书中太小的 PIC X(51) 的修复]抛出错误:

Listing18-1.cbl:99: error: syntax error, unexpected IS, expecting LEADING or TRAILING
Listing18-1.cbl:99: error: PROCEDURE DIVISION header missing
Listing18-1.cbl:99: error: syntax error, unexpected .
Listing18-1.cbl:100: error: unknown statement '03'
Listing18-1.cbl:101: error: unknown statement '03'
Listing18-1.cbl:102: error: unknown statement '03'
Listing18-1.cbl:104: error: unknown statement '02'
Listing18-1.cbl:105: error: unknown statement '03'
Listing18-1.cbl:106: error: unknown statement '03'
Listing18-1.cbl:107: error: unknown statement '03'
Listing18-1.cbl:109: error: unknown statement '01'
Listing18-1.cbl:110: error: unknown statement '02'
Listing18-1.cbl:111: error: unknown statement '03'
Listing18-1.cbl:112: error: unknown statement '03'
Listing18-1.cbl:113: error: unknown statement '03'
Listing18-1.cbl:115: error: unknown statement '01'
Listing18-1.cbl:117: error: unknown statement '02'
Listing18-1.cbl:118: error: unknown statement '03'
Listing18-1.cbl:119: error: unknown statement '03'
Listing18-1.cbl:120: error: unknown statement '03'
Listing18-1.cbl:121: error: unknown statement '03'
Listing18-1.cbl:123: error: unknown statement '01'
Listing18-1.cbl:124: error: unknown statement '02'
Listing18-1.cbl:125: error: unknown statement '03'
Listing18-1.cbl:127: error: unknown statement '01'
Listing18-1.cbl:128: error: unknown statement '02'
Listing18-1.cbl:129: error: unknown statement '03'
Listing18-1.cbl:130: error: unknown statement '03'
Listing18-1.cbl:131: error: unknown statement '03'
Listing18-1.cbl:133: error: syntax error, unexpected PROCEDURE
Listing18-1.cbl: in paragraph 'PrintSalaryReport':
Listing18-1.cbl:153: error: 'DetailLine' is not defined
Run Code Online (Sandbox Code Playgroud)

我认为报告的第一个错误可能是真正的问题,其他错误是连锁反应。这是完整的程序列表:

IDENTIFICATION DIVISION.
PROGRAM-ID. Listing18-1.
AUTHOR. Michael Coughlan.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT SalesFile ASSIGN TO "Listing18-1-Sales.DAT"
        ORGANIZATION IS LINE SEQUENTIAL.

    SELECT PrintFile ASSIGN TO "Listing18-1.Rpt".

DATA DIVISION.
FILE SECTION.
FD SalesFile.
01 SalesRecord.
   88 EndOfFile     VALUE HIGH-VALUES.
   02 StateNum      PIC 99.
   02 SalesAgentNum PIC 999.
   02 ValueOfSale   PIC 9(5)V99.

FD PrintFile
   REPORT IS SolaceSalesReport.

WORKING-STORAGE SECTION.
01 StateNameTable.
   02 StateNameValues.
      03 FILLER PIC X(14) VALUE "Alabama".
      03 FILLER PIC X(14) VALUE "Alaska".
      03 FILLER PIC X(14) VALUE "Arizona".
      03 FILLER PIC X(14) VALUE "Arkansas".
      03 FILLER PIC X(14) VALUE "California".
      03 FILLER PIC X(14) VALUE "Colorado".
      03 FILLER PIC X(14) VALUE "Connecticut".
      03 FILLER PIC X(14) VALUE "Delaware".
      03 FILLER PIC X(14) VALUE "Florida".
      03 FILLER PIC X(14) VALUE "Georgia".
      03 FILLER PIC X(14) VALUE "Hawaii".
      03 FILLER PIC X(14) VALUE "Idaho".
      03 FILLER PIC X(14) VALUE "Illinois".
      03 FILLER PIC X(14) VALUE "Indiana".
      03 FILLER PIC X(14) VALUE "Iowa".
      03 FILLER PIC X(14) VALUE "Kansas".
      03 FILLER PIC X(14) VALUE "Kentucky".
      03 FILLER PIC X(14) VALUE "Louisiana".
      03 FILLER PIC X(14) VALUE "Maine".
      03 FILLER PIC X(14) VALUE "Maryland".
      03 FILLER PIC X(14) VALUE "Massachusetts".
      03 FILLER PIC X(14) VALUE "Michigan".
      03 FILLER PIC X(14) VALUE "Minnesota".
      03 FILLER PIC X(14) VALUE "Mississippi".
      03 FILLER PIC X(14) VALUE "Missouri".
      03 FILLER PIC X(14) VALUE "Montana".
      03 FILLER PIC X(14) VALUE "Nebraska".
      03 FILLER PIC X(14) VALUE "Nevada".
      03 FILLER PIC X(14) VALUE "New Hampshire".
      03 FILLER PIC X(14) VALUE "New Jersey".
      03 FILLER PIC X(14) VALUE "New Mexico".
      03 FILLER PIC X(14) VALUE "New York".
      03 FILLER PIC X(14) VALUE "North Carolina".
      03 FILLER PIC X(14) VALUE "North Dakota".
      03 FILLER PIC X(14) VALUE "Ohio".
      03 FILLER PIC X(14) VALUE "Oklahoma".
      03 FILLER PIC X(14) VALUE "Oregon".
      03 FILLER PIC X(14) VALUE "Pennsylvania".
      03 FILLER PIC X(14) VALUE "Rhode Island".
      03 FILLER PIC X(14) VALUE "South Carolina".
      03 FILLER PIC X(14) VALUE "South Dakota".
      03 FILLER PIC X(14) VALUE "Tennessee".
      03 FILLER PIC X(14) VALUE "Texas".
      03 FILLER PIC X(14) VALUE "Utah".
      03 FILLER PIC X(14) VALUE "Vermont".
      03 FILLER PIC X(14) VALUE "Virginia".
      03 FILLER PIC X(14) VALUE "Washington".
      03 FILLER PIC X(14) VALUE "West Virginia".
      03 FILLER PIC X(14) VALUE "Wisconsin".
      03 FILLER PIC X(14) VALUE "Wyoming".
   02 FILLER REDEFINES StateNameValues.
      03 State OCCURS 50 TIMES.
         04 StateName   PIC X(14).

REPORT SECTION.
RD SolaceSalesReport
   CONTROLS ARE StateNum
                SalesAgentNum
   PAGE LIMIT IS 54
   FIRST DETAIL 3
   LAST DETAIL 46
   FOOTING 48.

01 TYPE IS REPORT HEADING NEXT GROUP PLUS 1.
   02 LINE 1.
      03 COLUMN 20      PIC X(32) VALUE "Solace Solar Solutions".

   02 LINE 2.
      03 COLUMN 6       PIC X(52) VALUE "Sales Agent - Sales and Salary Report Monthly Report".

01 TYPE IS PAGE HEADING.
   02 LINE IS PLUS 1.
      03 COLUMN 2   PIC X(5)    VALUE "State".
      03 COLUMN 16  PIC X(5)    VALUE "Agent".
      03 COLUMN 32  PIC X(8)    VALUE "Value".

   02 LINE IS PLUS 1.
      03 COLUMN 2   PIC X(4)    VALUE "Name".
      03 COLUMN 16  PIC X(6)    VALUE "Number".
      03 COLUMN 31  PIC X(8)    VALUE "Of Sales".

01 DetailLine TYPE IS DETAIL.
   02 LINE IS PLUS 1.
      03 COLUMN 1   PIC X(14)       SOURCE StateName(StateNum).
      03 COLUMN 17  PIC ZZ9         SOURCE SalesAgentNum.
      03 COLUMN 30  PIC $$$,$$$.99  SOURCE ValueOfSale.

01 SalesAgentGrp
   TYPE IS CONTROL FOOTING SalesAgentNum NEXT GROUP PLUS 2.
   02 LINE IS PLUS 1.
      03 COLUMN 15      PIC X(21)   VALUE "Sales for sales agent".
      03 COLUMN 37      PIC ZZ9     SOURCE SalesAgentNum.
      03 COLUMN 43      PIC X       VALUE "=".
      03 TotalAgentSales COLUMN 45 PIC $$$$$,$$$.99 SUM ValueOfSale.

01 StateGrp TYPE IS CONTROL FOOTING StateNum NEXT GROUP PLUS 2.
   02 LINE IS PLUS 1.
      03 COLUMN 1       PIC X(58) VALUE ALL "-".

01 TYPE IS PAGE FOOTING.
   02 LINE IS 49.
      03 COLUMN 1       PIC X(29)   VALUE "Programmer - Michael Coughlan".
      03 COLUMN 55      PIC X(6)    VALUE "Page :".
      03 COLUMN 62      PIC ZZ9     SOURCE PAGE-COUNTER.

PROCEDURE DIVISION.
Begin.
    OPEN INPUT SalesFile
    OPEN OUTPUT PrintFile

    READ SalesFile
        AT END SET EndOfFile TO TRUE
    END-READ

    INITIATE SolaceSalesReport

    PERFORM PrintSalaryReport UNTIL EndOfFile

    TERMINATE SolaceSalesReport

    CLOSE SalesFile, PrintFile

    STOP RUN.

PrintSalaryReport.
    GENERATE DetailLine

    READ SalesFile
        AT END SET EndOfFile TO TRUE
    END-READ.
Run Code Online (Sandbox Code Playgroud)

我在 3 台不同的机器上遇到了同样的问题:一台运行 Mint Cinnamon 的 64 位台式机,一台运行 Ubuntu 的 64 位笔记本电脑,以及一台运行 Lubuntu 的旧式 32 位上网本。

Sim*_*sch 5

我认为报告的第一个错误可能是真正的问题,其他错误是连锁反应。

是的,情况正是如此。
GnuCOBOL 3.0-rc-1 不支持LINE IS PLUS- 调整LINE PLUS或更新到作为发行版提供的 3.1 版本。

要查询 GnuCOBOL 的当前版本,请使用cobc --version(或简短的cobc -V<-大写)。