Синхронизировать - записывать НЕПАРТИРНЫЕ записи в файл SORTOUT, а ПАРНЫЕ записи - в ПАРНЫЙ файл - PullRequest
0 голосов
/ 22 ноября 2018

Я могу сохранить UNPAIRED записи в SORTOUT (это то, что я хочу), используя следующее:

//SORT     EXEC PGM=SORT,PARM='DYNALLOC=(SYSDA,255)'
//SORTMSGS DD SYSOUT=*
//SORTJNF1 DD DSN=FILE1,
//            DISP=OLD,DCB=BUFNO=255
//SORTJNF2 DD DSN=FILE2,
//            DISP=OLD,DCB=BUFNO=255
//SORTOUT  DD DSN=FILEOUT,
//            DISP=(NEW,CATLG,DELETE),
//            UNIT=(SYSDA,59),
//            SPACE=(CYL,(500,100),RLSE)
//SYSIN    DD *
SORT FIELDS=COPY
JOINKEYS FILE=F1,FIELDS=(25,4,A,115,20,A,135,4,A,140,4,A,5,20,A)
JOINKEYS FILE=F2,FIELDS=(5,4,A,9,20,A,29,4,A,33,4,A,37,20,A)
JOIN UNPAIRED,F2,ONLY

, но мне нужно сохранить PAIRED записи в отдельный файл.Я попробовал следующее утверждение, но ПАРОЛЬНЫЕ записи не сохраняются в моем PAIRED-файле:

//SORT     EXEC PGM=SORT,PARM='DYNALLOC=(SYSDA,255)'
//SORTMSGS DD SYSOUT=*
//SORTJNF1 DD DSN=FILE.F1,
//            DISP=OLD,DCB=BUFNO=255
//SORTJNF2 DD DSN=FILE.F2,
//            DISP=OLD,DCB=BUFNO=255
//SORTOUT  DD DSN=FILE.SORTOUT,
//            DISP=(NEW,CATLG,DELETE),
//            UNIT=(SYSDA,59),
//            SPACE=(CYL,(500,100),RLSE)
//PAIRED   DD DSN=FILE.PAIRED,
//            DISP=(NEW,CATLG,DELETE),
//            UNIT=(SYSDA,59),
//            SPACE=(CYL,(500,100),RLSE)
//SYSIN    DD *
SORT FIELDS=COPY
JOINKEYS FILE=F1,FIELDS=(25,4,A,115,20,A,135,4,A,140,4,A,5,20,A)
JOINKEYS FILE=F2,FIELDS=(5,4,A,9,20,A,29,4,A,33,4,A,37,20,A)
JOIN UNPAIRED,F2,ONLY
OUTFIL FNAMES=SORTOUT
OUTFIL FNAMES=PAIRED,SAVE

1 Ответ

0 голосов
/ 23 ноября 2018

Редактировать 1: OP упомянул (в разделе комментариев этого ответа): «Я хочу сохранить только НЕПЕРИРОВАННЫЕ записи (только F2) в моем основном наборе данных SORTOUT, а ПАРНЫЕ записи (F2только) в моем паре данных ".Парные записи означают как F1, так и F2.OP в основном ищет RIGHT JOIN.Операторы SORT, представленные ниже, редактируются в соответствии с требованием OP.Обратите внимание, что оператор REFORMAT требуется, если не указан оператор JOIN с операндом ONLY.

Вы должны использовать метод в Syncsort (который вызывается как индикаторный метод в dfsort ), чтобы достичь того, что вы ожидаете.См. Ниже операторы SORT.

SORT FIELDS=COPY
JOINKEYS FILE=F1,FIELDS=(25,4,A,115,20,A,135,4,A,140,4,A,5,20,A)
JOINKEYS FILE=F2,FIELDS=(5,4,A,9,20,A,29,4,A,33,4,A,37,20,A)
REFORMAT FIELDS=(F1:p,l,F2:p,l,?)
JOIN UNPAIRED,F2
OUTFIL FNAMES=BOTH,INCLUDE=(53,1,CH,EQ,C'B'),BUILD=(Build the columns you need from F1/F2)                          
OUTFIL FNAMES=UNPAIRED,INCLUDE=(53,1,CH,EQ,C'2'),BUILD=(Build the columns you need from F2)

где,

p - Значение позиции указывает первый байт поля относительно начала входной записи.

l - значение длины указывает длину поля.

Соблюдайте ? в операторе REFORMAT FIELDS.

Цитата из Syncsort для z / OS Руководство программиста:

?

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

«B», если переформатированная запись является парной записью

«1», если переформатированная запись является непарной записью, созданной изФайл F1

«2», если переформатированная запись является непарной записью, созданной из файла F2

Подробнее:

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...