Написание последовательных файлов с различными видами строк или записей - PullRequest
0 голосов
/ 19 января 2019

Давайте предположим, что я хочу записать следующее в последовательный выходной текстовый файл.

!---!  
This is a report!  
!---!  
Here is the list of records:   
001 Jack  
002 Alice  
!---!  
Number of crimes:   
Jack: 01  
Alice: 02

Дело в том, что когда я определяю файл последовательного вывода и его содержимое, я не знаю, как мне определять все эти разные типы линий.например, !---! должно быть как постоянное значение, а 001 Jack должно быть записано как:

FD OUTPUT-FILE.  
    01 PERSON-RECORD.
        05 ID PIC 999.
        05 NAME PIC X(10).

, с другой стороны, после "Number of crimes:" должна быть запись:

01 CRIMES.
    05 NAME PIC X.
    05 NO-OF-CRIME PIC 99.

, но если я пишу 01 PERSON-RECORD. и 01 CRIMES. под одним и тем же FD, то у меня возникают проблемы при попытке записи в выходной файл.Значения CRIMES фактически переходят к значению PERSON-RECORD.

Есть идеи?

1 Ответ

0 голосов
/ 19 января 2019

Есть идеи?

В FILE-CONTROL используйте ORGANIZATION LINE SEQUENTIAL.

При использовании DATA DIVISION.,

FILE SECTION.
FD OUTPUT-FILE.
01 OUTPUT-RECORD PIC X(80).

WORKING-STORAGE SECTION.
01 CONSTANT-TEXT-1 PIC X(5) VALUE "!---!".
01 CONSTANT-TEXT-2 PIC X(17) VALUE "This is a report!"
01 CONSTANT-TEXT-3 PIC X(28) VALUE "Here is the list of records:"
01 CONSTANT-TEXT-4 PIC X(17) VALUE "Number of crimes:".
01 PERSON-RECORD.
    05 ID PIC 999.
    05 NAME PIC X(10).
01 CRIMES.
    05 NAME PIC X.
    05 NO-OF-CRIME PIC 99.

В PROCEDURE DIVISION, для операторов WRITE,

WRITE OUTPUT-RECORD FROM CONSTANT-TEXT-1
WRITE OUTPUT-RECORD FROM CONSTANT-TEXT-2
WRITE OUTPUT-RECORD FROM CONSTANT-TEXT-3
WRITE OUTPUT-RECORD FROM CONSTANT-TEXT-4
WRITE OUTPUT-RECORD FROM PERSON-RECORD
WRITE OUTPUT-RECORD FROM CRIMES

в любой последовательности, в которой вам необходимо составить отчет.

Вам не нужно использовать CONSTANT-TEXT, используйте любое имя, имеющее значение для программы.

...