Объединяя 2 набора данных с помощью SYNCSORT (JOINKEYS), можно ли каким-либо образом подстановить некоторые значения? - PullRequest
0 голосов
/ 06 июня 2019

Объединяя 2 набора данных с помощью SYNCSORT, можно ли каким-либо образом подстановить некоторые значения F1?

Я хочу найти слово BEER, но в F2 значения могут быть BEER или BEER-BLONDE.или т. д.

Вот код, который у меня есть сейчас.Если F2 содержит BEER-BLONDE, запись не является парной, поскольку значение не BEER (с 16 пробелами после), но мне все еще нужно установить код 0000100002.

//STEP01   EXEC PGM=SORT,PARM='DYNALLOC=(SYSDA,255)'
//SORTMSGS DD SYSOUT=*
//SORTJNF1 DD *
0000100001WINE
0000100002BEER
0000100003OTHER
/*
//SORTJNF2 DD DSN=ZZ.MAINDATA,
//            DISP=SHR,DCB=BUFNO=255
//SORTOUT  DD DSN=ZZ.OUTPUT,
//            DISP=(NEW,CATLG,DELETE),
//            UNIT=(SYSDA,59),
//            SPACE=(CYL,(500,100),RLSE)
//SYSIN    DD *
JOINKEYS FILE=F1,FIELDS=(11,20,A)
JOINKEYS FILE=F2,FIELDS=(40,20,A)
JOIN UNPAIRED,F2
REFORMAT FIELDS=(F2:1,10,F1:1,10,F2:21,20)
OPTION COPY
//DFSPARM  DD *
MSGDDN=SORTMSGS

Я не /невозможно перечислить все возможности (пример ниже), так как они будут меняться слишком часто, для него может быть задано что угодно.

//SORTJNF1 DD *
0000100001WINE
0000100002BEER
0000100002BEER-BLONDE
0000100002BEER-BROWN
0000100002BEER-WHITE
0000100002BEER-DARK
0000100003OTHER
/*

Могу ли я что-то сделать с помощью SORT или ICETOOL для решения этой проблемы?

Спасибо

1 Ответ

0 голосов
/ 12 июня 2019

Вместо использования JOIN для изменения значения на основе другого значения (в той же строке) я позже узнаю, что можно просто использовать IFTHEN с SYNCSORT

//SYSIN    DD *
  OPTION COPY
  INREC IFTHEN=(WHEN=(40,11,CH,EQ,C'BEER-BLONDE'),OVERLAY=(11:C'0000100002')),
    IFTHEN=(WHEN=(40,10,CH,EQ,C'BEER-BROWN'),OVERLAY=(11:C'0000100002')),
    IFTHEN=(WHEN=(40,10,CH,EQ,C'BEER-WHITE'),OVERLAY=(11:C'0000100002')),
    IFTHEN=(WHEN=(40,9,CH,EQ,C'BEER-DARK'),OVERLAY=(11:C'0000100002')),
    IFTHEN=(WHEN=(40,4,CH,EQ,C'BEER'),OVERLAY=(11:C'0000100002')),
    IFTHEN=(WHEN=(40,4,CH,EQ,C'WINE'),OVERLAY=(11:C'0000100001')),
    IFTHEN=(WHEN=(40,5,CH,EQ,C'OTHER'),OVERLAY=(11:C'0000100003'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...