Я никогда не был полностью уверен в переполнении стека и домашней работе, когда дело доходит до ссылок на онлайн-ресурсы, но в часто задаваемых вопросах GnuCOBOL есть образец слияния последовательных файлов строк.
Надеемся, что небольшой пример все же оставит у вас возможность узнать о MERGE и не лишит вас ни одной возможности.
https://open-cobol.sourceforge.io/faq/index.html#merge
Обратите внимание на синтаксическую диаграмму, как фразы ON ... KEY могут повторяться в файле с несколькими файлами.
Чтобы избежать гниения ссылок; вот код, но его всегда можно найти с помощью веб-поиска «Часто задаваемые вопросы по GnuCOBOL» в записи зарезервированного слова 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, и чтобы не беспокоиться о взрывах головы.
person
Brian Tiffin
schedule
19.12.2018