COBOL error: group item cannot have PICTURE clause

COBOL error: group item cannot have PICTURE clause

又是一道 COBOL 题。我必须创建一个 COBOL 程序,它将从输入文件中读取三个记录字段,即学号、学生姓名和性别键。然后,我必须将男女学生分成两个单独的文件。我创建了一个输入函数,然后将其存储到一个 DAT 文件中,该 DAT 文件将被读取,returns 另一个包含男/女学生的 DAT 文件。我还没有检查程序是否真的有效,因为我一直遇到这个错误:

exercise1.cob:69: error: group item 'STUD-NAME-OUT' cannot have PICTURE clause

本题第69行是02 STUD-NAME-OUT PIC X(25).这组项目:

01  OUT-PRINT-REC.
           02 FILLER         PIC X(19) VALUE SPACES.
           02 STUD-NO-OUT    PIC X(10).
           02 FILLER         PIC X(23) VALUE SPACES.
           02 STUD-NAME-OUT  PIC X(25).

我已经检查了 的其他 Stack Overflow 并检查了用户在那个问题和这个问题中的问题,显然,我认为我做对了,但我不确定为什么这个特别OUT-PRINT-REC 群组项目无效。

这是主要代码:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. exercise-one.

       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT STUDENT-IN ASSIGN TO "BSIT21.DAT".
           SELECT STUDENT-DATA ASSIGN TO "BSIT21.DAT"
              ORGANIZATION IS LINE SEQUENTIAL.
           SELECT BSITMALE ASSIGN TO "BSITMALE.DAT"
              ORGANIZATION IS LINE SEQUENTIAL.
      *     SELECT BSITFEM ASSIGN TO "BSITFEM.DAT"
      *        ORGANIZATION IS LINE SEQUENTIAL.
       
       DATA DIVISION.
       FILE SECTION.
       FD  STUDENT-IN.
       01  PRINT-REC PIC X(80).
       FD  STUDENT-DATA.
       01  STUD-REC.
           02 OUT-STUD-NO PIC X(10).
           02 OUT-STUD-NAME PIC X(25).
           02 OUT-STUD-GEND-IN-KEY PIC 9.
       FD  BSITMALE.
       01  PRINT-MALE-REC PIC X(80).
      * FD  BSITFEM.
      * 01  PRINT-FEMALE-REC PIC X(80).
       WORKING-STORAGE SECTION.
      * -----------------------------
       01  PRINT-LINE.
           02 STUD-NO-IN PIC X(10).
           02 STUD-NAME-IN PIC X(25).
           02 STUD-GEND-IN PIC 9.

       01  ANS PIC X VALUE 'Y'.
           88 NO-MORE-DATA VALUE 'N'.
           88 MORE-DATA VALUE 'Y'.

       01  L PIC 9.
       01  STUD-NO        PIC X(10).
       01  STUD-NAME      PIC X(25).
       01  STUD-GEND-KEY  PIC 9.
      * -----------------------------
       01  HDG-1.
           02 FILLER PIC X(20) VALUE SPACES.
           02 FILLER PIC X(22) VALUE "xxxxxxxxxxx University".
           02 FILLER PIC X(19) VALUE " of the xxxxxxxxxxx".
       01  HDG-2.
           02 FILLER PIC X(32) VALUE SPACES.
           02 FILLER PIC X(18) VALUE "xxxxxx xxxx xxxxx".
       01  HDG-MALE.
           02 FILLER PIC X(23) VALUE SPACES.
           02 FILLER PIC X(21) VALUE "List of Male Students".
           02 FILLER PIC X(14) VALUE " from xxx 4-1".
       01  HDG-FEMALE.
           02 FILLER PIC X(23) VALUE SPACES.
           02 FILLER PIC X(23) VALUE "List of Female Students".
           02 FILLER PIC X(14) VALUE " from xxxx 2-1".
       01  HDG-4.
           02 FILLER PIC X(19) VALUE SPACES.
           02 FILLER PIC X(14) VALUE "STUDENT NUMBER".
           02 FILLER PIC X(18) VALUE SPACES.
           02 FILLER PIC X(12) VALUE "STUDENT NAME".
           
       01  OUT-PRINT-REC.
           02 FILLER         PIC X(19) VALUE SPACES.
           02 STUD-NO-OUT    PIC X(10).
           02 FILLER         PIC X(23) VALUE SPACES.
           02 STUD-NAME-OUT  PIC X(25).
       
       05  E-O-F PIC XXX VALUE "NO".

       SCREEN SECTION.
       01  BSCRN.
           02  BLANK SCREEN.
      * --------------------------------------
       PROCEDURE DIVISION.
           OPEN OUTPUT STUDENT-IN.
           PERFORM INPUT-RTN UNTIL MORE-DATA.
           PERFORM PRINT-MALE-RTN.
           PERFORM CLOSE-RTN.
      * --------------------------------------------
       INPUT-RTN.
           DISPLAY BSCRN.
           MOVE 5 TO L.
           DISPLAY "ENTER STUDENT NUMBER: " LINE L COLUMN 5.
           ACCEPT STUD-NO LINE L COLUMN 35.
           ADD 1 TO L.
           DISPLAY "ENTER STUDENT NAME: " LINE L COLUMN 5.
           ACCEPT STUD-NAME LINE L COLUMN 35.
           ADD 1 TO L.
           DISPLAY "MALE = 1 / FEMALE = 2" LINE L COLUMN 5.
           ADD 1 TO L.
           DISPLAY "ENTER STUDENT GENDER KEY: " LINE L COLUMN 5.
           ACCEPT STUD-GEND-KEY LINE L COLUMN 35.
           ADD 2 TO L.

           MOVE STUD-NO TO STUD-NO-IN.
           MOVE STUD-NAME TO STUD-NAME-IN.
           MOVE STUD-GEND-KEY TO STUD-GEND-IN.
           WRITE PRINT-REC FROM PRINT-LINE BEFORE 1 LINE.

           DISPLAY "ENTER ANOTHER RECORD(Y/N)" LINE L COLUMN 30.
           ACCEPT ANS.
      * --------------------------------------------
       PRINT-MALE-RTN.
           WRITE PRINT-MALE-REC FROM HDG-1 BEFORE 1 LINE.
           WRITE PRINT-MALE-REC FROM HDG-2 AFTER 1 LINE.
           WRITE PRINT-MALE-REC FROM HDG-MALE AFTER 2 LINES.
           WRITE PRINT-MALE-REC FROM HDG-4 AFTER 2 LINES.
           MOVE SPACES TO PRINT-MALE-REC.
           WRITE PRINT-MALE-REC AFTER 1 LINE.
           PERFORM MALE-READ-RTN UNTIL E-O-F = "YES".

       MALE-READ-RTN.
           READ STUDENT-DATA AT END MOVE "YES" TO E-O-F.
           IF OUT-STUD-GEND-IN-KEY = 1
              MOVE OUT-STUD-NO TO STUD-NO-OUT.
              MOVE OUT-STUD-NAME TO STUD-NAME-OUT.
              WRITE PRINT-MALE-REC FROM OUT-PRINT-REC AFTER 1 LINE.
      * --------------------------------------------
       CLOSE-RTN.
           CLOSE STUDENT-IN.
           STOP RUN.

预期输出:

                    xxxxxxxxxxx UNIVERSITY OF THE xxxxxxxxxxx
                                xxxxxx xxxx xxxxxx

                       List of Male Students from xxxx 4-1

                   STUDENT NUMBER                  STUDENT NAME
                   00-123345                       Leon Paulus
                   00-123456                       John Walker

我还没有完成代码的编写,因为我想测试它是否会在我输入数据时给出正确的答案,但我想这个错误一直阻止我进行下一步。

此外,我命名所有变量的方式似乎有点令人困惑,但我稍后会处理这个问题,对此深表歉意。

来自 ,

的评论

05 E-O-F PIC XXX VALUE "NO".

应该是:

01 E-O-F PIC XXX VALUE "NO".