У меня было бы 2 массива.
Один, содержащий весь файл.
01 DETAIL-LINE-ARRAY.
02 DETAIL-LINE OCCURS 54.
05 NAME-LEFT PIC X(30).
05 NAME-RIGHT PIC X(30).
Еще один, как вы сделали с NAME-ARRAY
Тогда я бы сначала заполнил DETAIL-LINE-ARRAY
.
Я бы дважды прочитал DETAIL-LINE-ARRAY, чтобы заполнить NAME-ARRAY
Тогда вы можете читать последовательно NAME-ARRAY
=============================================== ===========================
Другое решение:
Вы можете прочитать файл дважды. Во время первого чтения вы позаботитесь только о левом имени и заполните NAME-ARRAY
.
Во время второго чтения вы заботитесь только о правильном имени и продолжаете заполнять NAME-ARRAY
.
После первого и второго чтения вы можете прочитать ваш массив NAME-ARRAY
.
=============================================== ===========================
Существует проблема с обоими последними решениями: вы должны знать, сколько строк содержит ваш файл. Да, вы можете иметь динамическое программирование и в cobol :-)
Вы должны использовать SORT
.
В FILE SECTION
добавить
SD SORT-WORK
01 SORT-RECORD.
05 SR-ORDER PIC 9(09).
05 SR-NAME PIC X(30).
В вашем PROCEDURE DIVISION
add (в псевдокоде вам нужно будет добавить некоторые переменные в ваш раздел рабочего хранилища.
SORT SORT-WORK
ASCENDING SORT-ORDER
INPUT PROCEDURE IS 1000-INPUT
OUTPUT PROCEDURE IS 2000-OUTPUT
1000-INPUT SECTION.
MOVE 0 TO I.
PERFORM until end-of-file of NAMELIST-FILE-IN
ADD 1 TO I
READ left-name
MOVE I TO SORT-ORDER
MOVE left-name TO SR-NAME
* This operation populates the sort file...
RELEASE SORT-RECORD
END-PERFORM.
PERFORM until end-of-file of NAMELIST-FILE-IN
ADD 1 TO I
READ right-name
MOVE I TO SORT-ORDER
MOVE right-name TO SR-NAME
* This operation populates the sort file...
RELEASE SORT-RECORD
END-PERFORM.
MOVE I TO WS-NB-NAMES.
2000-OUTPUT SECTION.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > WS-NB-NAMES
* This operation returns the "next" record. It begins by the first, second...
RETURN SORT-RECORD
MOVE SR-NAME TO NAME-LEFT
RETURN SORT-RECORD
MOVE SR-NAME TO NAME-RIGHT
WRITE NAMELIST-FILE-OUT FROM DETAIL-LINE
END-PERFORM.
У вас есть пример здесь для сортировки
Веселись!