mainframe - 使用 SYNCSORT (JOINKEYS) 连接 2 个数据集,是否可以以任何方式对某些值进行通配符?
问题描述
使用 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 做些什么来解决这个问题吗?
谢谢
解决方案
不是使用 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'))
推荐阅读
- django - 在 django 模型表单中保存图像失败且没有错误
- spring - spring-security,java-config:IllegalArgumentException:需要 AuthenticationManager
- javascript - 推送到 useReducer 状态的特定路径的数组
- spring-boot - 是否启用或禁用了 CORS?
- paypal - 使用 PayPal 向朋友和家人汇款
- windows - 当前键盘的死键列表
- javascript - 将电子邮件数据作为 user@something.com 传递给 web api 时无法获得响应
- java - 无法识别的 VM 选项“ShenandoahGCHeuristics=compact”
- ruby-on-rails - Rails - 使用 child_id 路由到父显示页面
- python - 赋值时函数中的变量错误