Я никогда не был уверен в переполнении стека и домашней работе, когда речь заходит о ссылках на онлайн-ресурсы, но в GnuCOBOL FAQ есть пример слияния последовательных файлов.
Надеюсь, этот небольшой образец все еще оставляет васс возможностью узнать о MERGE и не отнимать у вас никакой возможности.
https://open -cobol.sourceforge.io / faq / index.html # merge
Обратите внимание на диаграмму синтаксиса, как фразы ON ... KEY можно повторять для каждого файла с несколькими файлами.
Чтобы избежать гниения ссылок;Вот код, но его всегда можно найти с помощью веб-поиска «GnuCOBOL FAQ» в записи зарезервированного слова MERGE.
GCobol >>SOURCE FORMAT IS FIXED
*> ***************************************************************
*> Author: Brian Tiffin
*> Date: 20140610
*> Purpose: Demonstrate a merge pass
*> Tectonics: cobc -x gnucobol-merge-sample.cob
*> ***************************************************************
identification division.
program-id. gnucobol-merge-sample.
environment division.
configuration section.
repository.
function all intrinsic.
io input-output section.
file-control.
select master-file
assign to "master-sample.dat"
organization is line sequential.
select eastern-transaction-file
assign to "east-transact-sample.dat"
organization is line sequential.
select western-transaction-file
assign to "west-transact-sample.dat"
organization is line sequential.
select merged-transactions
assign to "merged-transactions.dat"
organization is line sequential.
select working-merge
assign to "merge.tmp".
data data division.
file section.
fd master-file.
01 master-record pic x(64).
fd eastern-transaction-file.
01 transact-rec pic x(64).
fd western-transaction-file.
01 transact-rec pic x(64).
fd merged-transactions.
01 new-rec pic x(64).
sd working-merge.
01 merge-rec.
02 master-key pic 9(8).
02 filler pic x.
02 action pic xxx.
02 filler PIC x(52).
code *> ***************************************************************
*> not much code
*> trick. DEP, CHQ, BAL are action keywords. They sort
*> descending as DEP, CHQ, BAL, so do all deposits, then
*> all withdrawals, then balance reports.
*> ***************************************************************
procedure division.
merge working-merge
on ascending key master-key
descending key action
using eastern-transaction-file, western-transaction-file,
master-file
giving merged-transactions
done goback.
end program gnucobol-merge-sample.
Примеры данных выглядят как
11111111 CHQ 0001111.11 withdrawal from account one
33333333 DEP 0333333.33 third of a million in, pocket change
33333333 CHQ 0000333.33 payroll
33333333 CHQ 0000333.33 payroll
33333333 CHQ 0000333.33 payroll
55555555 DEP 0000555.55 deposit to new record five
55555555 CHQ 0000055.55 withdrawal from account five
Восток
11111111 CHQ 0001111.11 withdrawal from account one
44444444 DEP 0000044.44 deposit to account four
66666666 BAL balance request for account six
Запад и т. Д.
GnuCOBOL упрощает работу с частью LINE SEQUENTIAL.
В вашем вопросе есть другие вопросы, не упомянутые здесь, так какэтот список просто для демонстрации MERGE с LINE SEQUENTIAL, и не беспокоиться о взрывах головы .