IBM大型机论坛索引
 
登录
 
IBM大型机论坛索引 大型机:搜索 IBM Mainframe论坛:常见问题解答 寄存器
 

使用密钥匹配和不匹配的记录


IBM大型机论坛 -> DFSORT / ICETOOL
发表新话题   回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
色宾89

新的用户


已加入:2020年12月14日
帖子:4
地点:德国

发布发表:2021年1月12日(星期二)上午1:20
引用回复

大家好,

我要求将F1中的值与F2匹配,如果在F2中找到该值,则将完整记录写入F3,如果在F2中找不到完整记录,则将其写入F4。
-匹配值可以在文件F2中重复;因此,所有匹配的记录都应写入F3。
-匹配值从F2中的POS 06开始
-匹配值从POS 01到F1中的15

F1文件:具有记录长度的FB。 。 。 :15
记录1-4总是有值
5-是分隔符'/'
6-15可能有值

例如:
码:

= COLS> ---- + ---- 1 ---- +
****** ***************
000001 0000/123
000002 0001/1234
000003 0010/12345
000004 0100/123456
000005 1000/1234567
000006 1100/12345678
000007 1110/123456789
000008 1111/1234567890


F2文件:VB,具有记录长度。 。 。 :32000

码:

= COLS>---- + ---- 1 ---- + ---- 2 ---- + ---- 3 ---- +
****** ******************************顶部o
000001 @(#)@1000/1234567  566  :16R:GENL 
000002 @(#)@1100/12345678  566  :16R:GENL
000003 @(#)@1100/12345678  566  :16R:GENL
000004 @(#)@0110/12345  566  :16R:GENL
000005 @(#)@0000/12345678  566  :16R:GENL
000006 @(#)@1010/1234567890  566  :16R:GENL



预期输出:
F3 VB具有记录长度。 。 。 :32000
码:

= COLS>---- + ---- 1 ---- + ---- 2 ---- + ---- 3 ---- +
****** ******************************顶部o
000001 @(#)@1000/1234567  566  :16R:GENL 
000002 @(#)@1100/12345678  566  :16R:GENL
000003 @(#)@1100/12345678  566  :16R:GENL


F4 VB具有记录长度。 。 。 :32000
码:

= COLS>---- + ---- 1 ---- + ---- 2 ---- + ---- 3 ---- +
****** ******************************顶部o
000001 @(#)@0110/12345  566  :16R:GENL
000002 @(#)@0000/12345678  566  :16R:GENL
000003 @(#)@1010/1234567890  566  :16R:GENL
回到顶部
查看用户资料 发送私信
谢尔盖肯

活跃成员


已加入:2008年4月29日
帖子:934
所在地:马里兰

发布发表:2021年1月12日(星期二)上午1:35
引用回复

1.阅读有关SORT实用程序的任何有关JOIN功能的手册
2.尝试使用手册中的示例进行测试
3.在此论坛上发布您的结果。
4.如果遇到问题,人们会帮助您,但不会代替您本职
回到顶部
查看用户资料 发送私信
罗希特·乌马尔吉卡(Rohit Umarjikar)

全球主持人


已加入:2010年9月21日
帖子:2574
地点:美国纽约

发布发表:2021年1月12日(星期二)上午3:27
引用回复

欢迎!!
您还需要使用// JNF2CNTL DD *中的INREC将键解析为固定格式,然后在连接任务中引用它。
示例5-配对和未配对的F1 / F2记录
您也可以搜索该论坛,并且会发现许多类似的主题和解决方案,它们对您有帮助。试试看,让我们知道什么不起作用。
回到顶部
查看用户资料 发送私信
罗希特·乌马尔吉卡(Rohit Umarjikar)

全球主持人


已加入:2010年9月21日
帖子:2574
地点:美国纽约

发布发表:2021年1月13日星期三下午3:50
引用回复

色宾89,请不要为同一问题创建多个主题,我删除了另一个主题,并使用您尝试过的JCL对此主题进行了回复。
回到顶部
查看用户资料 发送私信
色宾89

新的用户


已加入:2020年12月14日
帖子:4
地点:德国

发布发表:2021年1月13日星期三4:23下午
引用回复

由于上述解决方案会有点复杂。我已经以这种方式改变了这个问题。

-------------------------------------------------- -------
我正在使用下面的SORT步骤来连接2个文件中的记录。但这并没有给我预期的结果。您能为您提供正确的SYSIN语句吗?

-输入文件1具有RECFM = VB和LRECL = 32000。它包含以下记录:
码:

---- + ---- 1 ---- + ---- 2 ---- + ---- 3 ---- + ---- 4 ---- + ---- 5
*****************************数据顶部********
1000/1234567   @(#)@1000/1234567  566  :16R:GENL
1100/12345678  @(#)@1100/12345678  566  :16R:GENL
1100/12345678  @(#)@1100/12345678  566  :16R:GENL
0110/12345     @(#)@0110/12345  566  :16R:GENL
0000/12345678  @(#)@0000/12345678  566  :16R:GENL
1010/1234567890 @(#)@1010/1234567890  566  :16R:GENL

-输入文件2具有RECFM = FB和LRECL = 15。它包含以下记录:
码:

---- + ---- 1 ---- +
***************
0000/123
0001/1234
0010/12345
0100/123456
1000/1234567
1100/12345678
1110/123456789
1111/1234567890

-第一个文件的预期输出(RECFM = VB和LRECL = 32000):
码:

---- + ---- 1 ---- + ---- 2 ---- + ---- 3 ---- + ---- 4 ---- + ---- 5
*****************************数据顶部********
@(#)@1000/1234567  566  :16R:GENL
@(#)@1100/12345678  566  :16R:GENL
@(#)@1100/12345678  566  :16R:GENL

-在第二个文件中的预期输出(RECFM = VB和LRECL = 32000):
码:

---- + ---- 1 ---- + ---- 2 ---- + ---- 3 ---- + ---- 4 ---- + ---- 5
*****************************数据顶部********
@(#)@0110/12345  566  :16R:GENL
@(#)@0000/12345678  566  :16R:GENL
@(#)@1010/1234567890  566  :16R:GENL

使用的JCL:
码:

// STEP1 EXEC PGM = SORT                                         
// SYSOUT   DD SYSOUT=*                                       
// VBIN DD DSN = P104219.MT566.FULL.RECORDS.ADD.SORTOUT,DISP = SHR
// FBIN DD DSN = P104219.FOMT566.TLWL.T3011.FINAL,DISP = SHR       
// F1MT DD DSN = P104219.MT566.FULL.RECORDS.MATCH,               
//          DISP=(,CATLG,DELETE),SPACE=(CYL,(5,5),RLSE),     
//         LRECL = 32000,RECFM = VB                             
// F2NM DD DSN = P104219.MT566.FULL.RECORDS.NONMATCH,           
//          DISP=(,CATLG,DELETE),SPACE=(CYL,(5,5),RLSE),     
//         LRECL = 32000,RECFM = VB                             
// SYSIN    DD *                                               
 JOINKEYS FILE = F1,FIELDS =(5,20,A),SORTED                     
 JOINKEYS FILE = F2,FIELDS =(1,15,A),SORTED                     
  加入未配对的F1,F2                                         
  改革领域=(F1:19)                                     
  选件复制                                                 
 OUTFIL FNAMES = F1MT,BUILD =(19,32000)                         
 OUTFIL FNAMES = F2NM,BUILD =(19,32000)                         
/ *
回到顶部
查看用户资料 发送私信
乔格·芬代森

活跃用户


已加入:2015年8月15日
帖子:388
地点:德国班贝格

发布发表:2021年1月13日星期三5:06 pm
引用回复

第一个解决方案并不复杂。作业大约30行。
回到顶部
查看用户资料 发送私信
色宾89

新的用户


已加入:2020年12月14日
帖子:4
地点:德国

发布发表:2021年1月13日星期三5:24 pm
引用回复

能否请您分享JCL?
回到顶部
查看用户资料 发送私信
尼克·克劳斯顿

全球主持人


加入时间:2007年5月10日
帖子:2454
地点:英国汉普郡

发布发表:2021年1月13日星期三5:42下午
引用回复

您需要JCL,但不需要排序控制语句( JCL)???
回到顶部
查看用户资料 发送私信
色宾89

新的用户


已加入:2020年12月14日
帖子:4
地点:德国

发布发表:2021年1月13日星期三6:02 pm
引用回复

我什么都没事。排序控件或JCL
回到顶部
查看用户资料 发送私信
尼克·克劳斯顿

全球主持人


加入时间:2007年5月10日
帖子:2454
地点:英国汉普郡

发布发表于:2021年1月13日,星期三8:24 pm
引用回复

好的-这是一些JCL
码:

// STEP1 EXEC PGM = SORT                                         
// SYSOUT   DD SYSOUT=*                                       
// VBIN DD DSN = P104219.MT566.FULL.RECORDS.ADD.SORTOUT,DISP = SHR
// FBIN DD DSN = P104219.FOMT566.TLWL.T3011.FINAL,DISP = SHR       
// F1MT DD DSN = P104219.MT566.FULL.RECORDS.MATCH,               
//          DISP=(,CATLG,DELETE),SPACE=(CYL,(5,5),RLSE),     
//         LRECL = 32000,RECFM = VB                             
// F2NM DD DSN = P104219.MT566.FULL.RECORDS.NONMATCH,           
//          DISP=(,CATLG,DELETE),SPACE=(CYL,(5,5),RLSE),     
//         LRECL = 32000,RECFM = VB                             
// SYSIN    DD *
 您的分类控制卡在这里                                               
/ *
回到顶部
查看用户资料 发送私信
乔格·芬代森

活跃用户


已加入:2015年8月15日
帖子:388
地点:德国班贝格

发布发表:2021年1月13日星期三9:47下午
引用回复

在EXEC PGM = SORT之后使用PARM ='MSG = AP'来获取所有消息。应该知道。

您的代码使用不同的密钥长度,为什么呢?此外,F1中的记录未排序
码:
JOINKEYS FILE = F1,FIELDS =(5,20,A),SORTED                     
 JOINKEYS FILE = F2,FIELDS =(1,15,A),SORTED

您只希望F1中缺少条目,此处不需要F2。
码:
加入未配对的F1,F2

阅读其他问题解决后,您将收到的消息。 F1:19可能无法正常工作。另外,当想要分隔数据时,您需要一个ID来分隔。了解有关“?”的信息操作员。
码:
改革领域=(F1:19)

考虑使用SORT语句在Join之后保留F1的原始序列。
码:
选件复制

对于两个OUTFIL,都缺少标识(查找'?'运算符)。起始位置也似乎不对。我猜这将不是最后的障碍。
码:
OUTFIL FNAMES = F1MT,BUILD =(19,32000)                         
 OUTFIL FNAMES = F2NM,BUILD =(19,32000)


正如Rohit所说,当F1(在提供的第一个示例中)具有一些浮动键时,您必须在JOINKEYS之前解析F1,并在相同位置以固定长度提供它们。
回到顶部
查看用户资料 发送私信
谢尔盖肯

活跃成员


已加入:2008年4月29日
帖子:934
所在地:马里兰

发布发表:2021年1月13日星期三10:13下午
引用回复

建议
JOINKEYS FILE = F1 / F2
并不与此处所有示例中提供的JCL代码相对应。

绝对无法正常工作,导致TS再次寻求帮助(一次又一次,一次又一次...)

正确的参数 FNAMES = 显示在最后;需要吸引电信标准化部门注意这个“极其复杂的问题”。
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> DFSORT / ICETOOL

 


类似主题
话题 论坛 回覆
没有新帖 合并两个以上的记录 DFSORT / ICETOOL 15
没有新帖 删除基于S ...的重复记录 DFSORT / ICETOOL 4
没有新帖 使用基于关闭的VB记录排序... DFSORT / ICETOOL 6
没有新帖 将记录插入到空段中... IMS数据库/ DC 1
没有新帖 加入时需要协助格式化... 同步排序 8
搜索我们的论坛:

回到顶部