Ошибка COBOL: элемент группы не может иметь предложение PICTURE

Еще один вопрос COBOL снова. Мне нужно создать программу COBOL, которая будет считывать три поля записи, а именно: номер учащегося, имя учащегося и ключ пола из входного файла. Затем я должен разделить студентов мужского и женского пола на два отдельных файла. Я создал функцию ввода, а затем сохранил ее в файле DAT, и этот файл DAT будет прочитан и вернет другой файл 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).

Я проверил другое переполнение стека, которое является этим, и проверил проблему пользователя в этом вопросе и в этом вопросе, по-видимому, я думаю, что сделал это правильно, но я не был уверен, почему этот конкретный элемент группы 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. 05 заставляет компилятор рассматривать STUD-NAME-OUT как групповой элемент. Замените 05 на 01.

Rick Smith 23.12.2020 14:47
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
1 037
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Из комментария Рика Смита,

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

должно было:

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

Другие вопросы по теме