使用SYNCSORT联接2个数据集,是否可以以任何方式通配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是否可以解决该问题?
谢谢
答案 0 :(得分:0)
而不是使用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'))