Запись в файл в коболе

Мне нужна помощь... не могу понять, почему он не может создать текстовый файл.

 IDENTIFICATION DIVISION.
 PROGRAM-ID. MACHINEPROBLEM4.

 ENVIRONMENT DIVISION.
 INPUT-OUTPUT SECTION.
 FILE-CONTROL.
SELECT OPTIONAL REC ASSIGN TO "BUSRECORD.TXT"
    ORGANIZATION IS LINE SEQUENTIAL
    ACCESS MODE IS SEQUENTIAL
    FILE STATUS IS NAME-FILE-STATUS.

 DATA DIVISION.
 FILE SECTION.
 FD REC.
 01 IN-RECORD.
    05 RSEAT            PIC 9(3).
    05 RCUSTOMER        PIC X(20).
    05 RSOURCESTATION   PIC A(14).
    05 RDESTINATIONN    PIC A(14).

 WORKING-STORAGE SECTION.
 01 NAME-FILE-STATUS PIC XX VALUE SPACES.
    88 OPENSUCCESS VALUE "00".
 01 SWITCHES.
   05 EOF-SWITCH        PIC X VALUE "N".
 01 INPUTDATA.
   05 CHOICE PIC A.
*   05 SEAT PIC 9(3) OCCURS 20 TIMES.
*   05 CUSTOMER PIC X(20) OCCURS 20 TIMES.
*   05 SOURCESTATION PIC A(14) OCCURS 20 TIMES.
*   05 DESTINATIONN PIC A(14) OCCURS 20 TIMES.
   05 RESERVEMORE PIC A.
   05 DELSEAT PIC 9(3).
   05 DELCUST PIC X(20).
   05 DELCONT PIC 9(10).
   05 CANCELMORE PIC A.
   05 M PIC A.
 01 COMPUTEDDATA.
   05 NUM1 PIC 99 VALUE ZEROS.
   05 MAXNUM PIC 99.
   05 LINENUM PIC 99.
   05 CAGAYANVALLEY PIC A(14) VALUE "CAGAYAN VALLEY".
   05 IFUGAO PIC A(14) VALUE "IFUGAO".
   05 LAOAG PIC A(14) VALUE "LAOAG".
   05 BAGUIO PIC A(14) VALUE "BAGUIO".
   05 KALINGA PIC A(14) VALUE "KALINGA".
   05 ISABELA PIC A(14) VALUE "ISABELA".
   05 DAGUPAN PIC A(14) VALUE "DAGUPAN".
   05 MANILA PIC A(14) VALUE "MANILA".


 SCREEN SECTION.
 01 MAINSCREEN
 Blank Screen, Auto, Required,
 Foreground-Color is 5,
 Background-Color is 0.
 03 DISPLAY "ABC TRANSPORT COMPANY" LINE 2 COL 30.
 03 DISPLAY "RESERVATION SYSTEM" LINE 3 COL 32.
 03 DISPLAY "--------------------------------" LINE 4 COL 1.
 03 DISPLAY "--------------------------------" LINE 4 COL 32.
 03 DISPLAY "-------------------------" LINE 4 COL 56.
 03 DISPLAY "MAIN MENU: " LINE 5 COL 2.
 03 DISPLAY "R] RESERVATION " LINE 6 COL 2.
 03 DISPLAY "V] VIEW RESERVATIONS " LINE 7 COL 2.
 03 DISPLAY "D] CANCEL RESERVATION " LINE 8 COL 2.
 03 DISPLAY "E] EXIT" LINE 9 COL 2.
 03 DISPLAY "--------------------------------" LINE 10 COL 1.
 03 DISPLAY "-------------------------------" LINE 10 COL 32.
 03 DISPLAY "-------------------------" LINE 10 COL 56.
 03 DISPLAY "CHOICE: [ ]" LINE 11 COL 2.

 01 RESERVATION
Blank Screen, Auto, Required,
Foreground-Color is 7,
Background-Color is 0.
 03 DISPLAY "ABC TRANSPORT COMPANY" LINE 2 COL 30.
 03 DISPLAY "RESERVATION SYSTEM" LINE 3 COL 32.
 03 DISPLAY "--------------------------------" LINE 4 COL 1.
 03 DISPLAY "--------------------------------" LINE 4 COL 32.
 03 DISPLAY "-------------------------" LINE 4 COL 56.
 03 DISPLAY "RESERVATION: " LINE 5 COL 2.
 03 DISPLAY "RESERVE SEAT NUMBER: " LINE 6 COL 2.
 03 DISPLAY "CUSTOMER NAME: " LINE 7 COL 2.
 03 DISPLAY "SOURCE STATION: " LINE 8 COL 2.


 01 VIEWRESERVATION
Blank Screen, Auto, Required,
Foreground-Color is 7,
Background-Color is 0.
 03 DISPLAY "ABC TRANSPORT COMPANY" LINE 4 COL 30.
 03 DISPLAY "RESERVATION SYSTEM" LINE 5 COL 32.
 03 DISPLAY "--------------------------------" LINE 6 COL 1.
 03 DISPLAY "--------------------------------" LINE 6 COL 32.
 03 DISPLAY "-------------------------" LINE 6 COL 56.
 03 DISPLAY "RESERVE SEAT NO. " LINE 7 COL 1.
 03 DISPLAY "CUSTOMER NAME " LINE 7 COL 18.
 03 DISPLAY "SOURCE STATION " LINE 7 COL 45.
 03 DISPLAY "DESTINATION" LINE 7 COL 66.


 PROCEDURE DIVISION.
  ROUTINE.
 DISPLAY MAINSCREEN.
 ACCEPT CHOICE LINE 11 COL 11 
 EVALUATE CHOICE
  WHEN = "R"
  DISPLAY RESERVATION
  PERFORM RESERVEE
  PERFORM ROUTINE
  WHEN = "V"
  DISPLAY VIEWRESERVATION
  PERFORM VIEWW UNTIL EOF-SWITCH = "Y"
  WHEN = "D"
  DISPLAY CANCELRESERVATION
  PERFORM CANCELL
  WHEN = "E"
  DISPLAY ERASE
  STOP RUN     
  WHEN OTHER
  PERFORM ROUTINE
  END-EVALUATE.

в приведенном ниже коде (это продолжение кода выше) я попытался изменить «OPEN I-O» на «OPEN EXTEND» или «OPEN OUTPUT», но данные все еще не могут быть сохранены.

 RESERVEE.
*   PERFORM VARYING NUM1 FROM 1 BY 1 UNTIL RESERVEMORE = "N"
*   MOVE NUM1 TO MAXNUM
   ACCEPT RSEAT LINE 6 COL 23
   ACCEPT RCUSTOMER LINE 7 COL 17
   DISPLAY "CHOICES: " LINE 9 COL 2
   DISPLAY IFUGAO LINE 10 COL 2
   DISPLAY LAOAG LINE 11 COL 2
   DISPLAY BAGUIO LINE 12 COL 2
   DISPLAY KALINGA LINE 13 COL 2
   DISPLAY ISABELA LINE 14 COL 2
   DISPLAY DAGUPAN LINE 15 COL 2
  DISPLAY MANILA LINE 16 COL 2
   DISPLAY "DESTINATION: " LINE 17 COL 2
   DISPLAY "--------------------------------" LINE 18 COL 1
   DISPLAY "--------------------------------" LINE 18 COL 32
   DISPLAY "-------------------------" LINE 18 COL 56
   DISPLAY "RESERVE MORE? [Y/N]: [ ]" LINE 19 COL 2
   PERFORM DESTINN
   ACCEPT RESERVEMORE LINE 19 COL 24
   EVALUATE RESERVEMORE
WHEN = "Y"
  PERFORM RESERVEE
WHEN = "N"
  PERFORM ROUTINE
 END-EVALUATE
 OPEN I-O REC.
  WRITE IN-RECORD
    INVALID KEY
        DISPLAY "RECORD ALREADY RESERVED" LINE 21 COL 2
    NOT INVALID KEY
        DISPLAY "RECORD SAVED." LINE 21 COL 2
  CLOSE REC.
*   END-PERFORM.

 VIEWW.
 OPEN INPUT REC.
 IF OPENSUCCESS
  DISPLAY "00" LINE 2 COL 50
 ELSE
  DISPLAY NAME-FILE-STATUS LINE 1 COL 50
 END-IF
MOVE "N" TO EOF-SWITCH
 READ REC
AT END
    MOVE "Y" TO EOF-SWITCH
NOT AT END
    ADD 1 TO NUM1
END-READ.
CLOSE REC.




DESTINN.   
ACCEPT RSOURCESTATION LINE 8 COL 18
 INSPECT RSOURCESTATION
 CONVERTING "abcdefghijklmnopqrstuvwxyz"
 TO "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 IF RSOURCESTATION = CAGAYANVALLEY
    ACCEPT RDESTINATIONN LINE 17 COL 15
    IF RDESTINATIONN = IFUGAO
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = LAOAG
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = BAGUIO
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = KALINGA
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = ISABELA
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = DAGUPAN
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = MANILA
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE
       PERFORM DESTINN
   ELSE IF RSOURCESTATION = IFUGAO
    ACCEPT RDESTINATIONN LINE 17 COL 15
    IF RDESTINATIONN = CAGAYANVALLEY
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = LAOAG
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = BAGUIO
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = KALINGA
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = ISABELA
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = DAGUPAN
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = MANILA
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE
       PERFORM DESTINN
  ELSE IF RSOURCESTATION = LAOAG
    ACCEPT RDESTINATIONN LINE 17 COL 15
    IF RDESTINATIONN = CAGAYANVALLEY
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = IFUGAO
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = BAGUIO
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = KALINGA
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = ISABELA
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = DAGUPAN
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = MANILA
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE
       PERFORM DESTINN
      ELSE IF RSOURCESTATION = BAGUIO
    ACCEPT RDESTINATIONN LINE 17 COL 15
    IF RDESTINATIONN = CAGAYANVALLEY
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = IFUGAO
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = LAOAG
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = KALINGA
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = ISABELA
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = DAGUPAN
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = MANILA
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE
       PERFORM DESTINN
  ELSE IF RSOURCESTATION = KALINGA
    ACCEPT RDESTINATIONN LINE 17 COL 15
    IF RDESTINATIONN = CAGAYANVALLEY
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = IFUGAO
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = LAOAG
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = BAGUIO
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = ISABELA
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = DAGUPAN
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = MANILA
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE
       PERFORM DESTINN
ELSE IF RSOURCESTATION = ISABELA
    ACCEPT RDESTINATIONN LINE 17 COL 15
    IF RDESTINATIONN = CAGAYANVALLEY
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = IFUGAO
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = LAOAG
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = BAGUIO
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = KALINGA
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = DAGUPAN
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = MANILA
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE
       PERFORM DESTINN
   ELSE IF RSOURCESTATION = DAGUPAN
    ACCEPT RDESTINATIONN LINE 17 COL 15
    IF RDESTINATIONN = CAGAYANVALLEY
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = IFUGAO
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = LAOAG
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = BAGUIO
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = KALINGA
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = ISABELA
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = MANILA
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE
       PERFORM DESTINN
  ELSE IF RSOURCESTATION = MANILA
    ACCEPT RDESTINATIONN LINE 17 COL 15
    IF RDESTINATIONN = CAGAYANVALLEY
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = IFUGAO
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = LAOAG
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = BAGUIO
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = KALINGA
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = ISABELA
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE IF RDESTINATIONN = DAGUPAN
        DISPLAY "RECORD SAVED." LINE 21 COL 2
    ELSE
       PERFORM DESTINN
   ELSE
 PERFORM RESERVEE
 END-IF

 STOP RUN.

текстовый файл еще не создан. Я хотел, чтобы программа сама его создала. Тем не менее, я пробовал это с «выбрать необязательный» и без него, и программа, похоже, не сохраняет ввод в текстовом файле. Как я заставлю это работать??


person hpa    schedule 23.10.2015    source источник
comment
Вы хотите открытый вывод. Это не индексированный файл, недопустимый ключ и т. д. Не следует использовать, вы указали статус файла, поэтому вы должны проверить его и отобразить, если он недействителен. Предложите внести эти исправления   -  person Bruce Martin    schedule 23.10.2015
comment
Какие сообщения об ошибках вы получаете (если есть) и каков статус файла при записи   -  person Bruce Martin    schedule 23.10.2015
comment
Также взгляните на это, вы делаете то же самое: stackoverflow.com/a/32994013/1927206   -  person Bill Woodger    schedule 23.10.2015
comment
Возможный дубликат COBOL, добавляющий массив   -  person Bill Woodger    schedule 23.10.2015
comment
Как и в случае со связанными/дубликатами, ваша проблема заключается в рекурсивных PERFORM. В COBOL нет рекурсивных PERFORM, но вы их используете. Фактические результаты будут непредсказуемыми и зависят от компилятора, но если вы не ответите ни на что, кроме Y/N (или, возможно, что-то еще в другом месте), ничего не будет написано. Прежде чем идти дальше, вам нужно изменить структуру программы.   -  person Bill Woodger    schedule 23.10.2015
comment
У вас также есть STOP RUN в программе PERFORMed, и у вас есть провал/выпадение. Почему это дублируется, так это то, что ответ тот же. Вам нужно реструктурировать вашу программу, прежде чем двигаться дальше. Начните с простого цикла, который завершается, когда пользователь вводит N. Затем развивайте его. С циклом у вас всегда есть возможность ВЫПОЛНИТЬ что-то, когда вам это нужно, вам даже не нужно пытаться рекурсивно (неопределенное поведение) ВЫПОЛНИТЬ.   -  person Bill Woodger    schedule 23.10.2015