Как записать запись с новой строки (в файле output.dat)

Я пытаюсь вывести текущий дисплей консоли в файл TFileOut.da. Но когда я пытаюсь записать запись, все данные выводятся в одну строку.

       PROGRAM-ID. TFile.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
        SELECT myInFile ASSIGN TO "TestFile.dat".
        SELECT myOutFile ASSIGN TO "TFileOut.dat".
       DATA DIVISION.
       FILE SECTION.
       FD myInFile.
       01 inRecord.
        02 StudentName    PIC X(15).
        02 StudentWNbr    PIC X(8).
        02 Years          PIC X(9).
        02 Course         PIC X(9).
        02 CourseD        PIC X(28).
        02 Grade          PIC X(1).
        02 CreditHr       PIC 9.
        02 FILLER         PIC X(1).
       FD myOutFile.
       01 studentOutRecord.
        02 DatFile PIC X(10).
       WORKING-STORAGE SECTION.
       01 w PIC X(3) VALUE "YES".
       01 stor PIC X(9).
       PROCEDURE DIVISION.
        OPEN INPUT myInFile.
        OPEN OUTPUT myOutFile.
        PERFORM subRead
        PERFORM UNTIL w = "NO" 
        PERFORM subRead
        END-PERFORM.
        CLOSE myInFile.
        CLOSE myOutFile.
        STOP RUN.
       subRead.
        READ myInFile
        AT END
        MOVE "NO" TO w
        NOT AT END
        DISPLAY Course
        MOVE Course TO 
        MOVE Course to DatFile
        WRITE studentOutRecord
        END-READ.

Это вывод в выходном файле. CMPS 161 MATH 223 MATH 200 HIST 101 MATH 223 MATH 200 HIST 101 PHYS 101 MUSC 101 PSYC 101 SSYC 101

This is how I get into console.
CMPS 161 
MATH 223 
MATH 200 
HIST 101 
MATH 223 
MATH 200 
HIST 101 
PHYS 101 
MUSC 101 
PSYC 101 
SSYC 101 

Я хочу отобразить выходной файл так же, как консоль.


person Not Applicable    schedule 09.09.2019    source источник


Ответы (1)


В FILE-CONTROL установите организацию последовательной строки.

        SELECT myInFile ASSIGN  TO "TestFile.dat"
               organization is line sequential.

        SELECT myOutFile ASSIGN TO "TFileOut.dat"
               organization is line sequential.

Это позволит сохранить переводы строк нетронутыми.
Я запускаю GNUCobol под Linux, и без использования построчной последовательности все упаковывается в одну строку.

person Jim Castro    schedule 09.09.2019
comment
› и без использования построчной последовательности все упаковывается в одну строку Это абсолютно правильно, потому что в этом случае вы запрашиваете файл фиксированной длины без дополнительного разделителя строк. Файл SEQUENTIAL может содержать любые данные, в том числе вычислительные и двоичные, которые могут выглядеть как разделитель строк (или null), что может создавать различные проблемы в файлах LINE SEQUENTIAL. - person Simon Sobisch; 10.09.2019