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

排序联接


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

新的用户


已加入:2007年4月9日
帖子:33
地点:印度

发布发表:2012年5月25日,星期五,下午4:56
引用回复

我有两个文件,数据如下
码:

X002027174
X002267035
X002846116


码:
X00202717401010101000000000100010000000000000081420190814201900000000
X002027174020100000010010000100000101000000001F0081420192101L4100200{
X002027174020200000010010000100000101000000001F0081420192101L4100200{
X00226703501010101000000000100010000000000000012820120128201200000000
X002267035021000000010000000100000001000000001F0122820112101L5100200{
X00284611601010101000000000100010000000000000071920310719203100000000


我需要加入这2个文件,而加入时我需要从第2个文件的recs下面获取字段。
码:

X00202717401
X0020271740201


o / p如下
码:
X002027174 008 F00
X002267035 001 F01
X002846116 007空白


是否可以?
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


加入时间:2011年3月9日
帖子:7311
位置:矩阵内部

发布发表:2012年5月25日,星期五5:37 pm
引用回复

很可能是。

您需要哪些领域的职位?什么文件的RECFM / LRECL?
回到顶部
查看用户资料 发送私信
永永

新的用户


已加入:2007年4月9日
帖子:33
地点:印度

发布发表:2012年5月25日,星期五8:10 pm
引用回复

两个文件中的密钥均为10字节1,10。

在11,2之后的第二个文件中,01可以是01或02。01始终是与键关联的一个,02可以是多个。

要进行o / p,我需要1,10字节的密钥,从01记录开始,我需要45,3字节。在位置13,2上具有值'01'的02记录上需要47,3

我希望它清楚..感谢您带来希望..
回到顶部
查看用户资料 发送私信
潘多拉魔盒

主持人


已加入:2006年9月7日
职位:1565
地点:仙女座星系

发布发表:2012年5月25日,星期五8:16 pm
引用回复

您需要什么条件?

码:
F00
F01
空白
回到顶部
查看用户资料 发送私信
潘多拉魔盒

主持人


已加入:2006年9月7日
职位:1565
地点:仙女座星系

发布发表:2012年5月25日,星期五8:44 pm
引用回复

假设您的输入正确

码:
// SRTJK EXEC PGM = ICETOOL
// TOOLMSG DD SYSOUT = *
// DFSMSG DD SYSOUT = *
// JNA DD *
X002027174
X002267035
X002846116
// JNB DD *
X00202717401010101000000000100010000000000000081420190814201900000000
X002027174020100000010010000100000101000000001F0081420192101L4100200{
X002027174020200000010010000100000101000000001F0081420192101L4100200{
X00226703501010101000000000100010000000000000012820120128201200000000
X002267035021000000010000000100000001000000001F0122820112101L5100200{
X00284611601010101000000000100010000000000000071920310719203100000000
// OUT DD SYSOUT = *
// T1 DD DSN =&&T1,SPACE=(TRK,(5,5)),
//  DISP=(MOD,PASS)
// OUT DD SYSOUT = *
// TOOLIN DD *
 SORT JKFROM TO(OUT) USING(CTL1)
/ *
// CTL1CNTL DD *
 JOINKEYS F1 = JNA,FIELDS =(1,10,A)
 JOINKEYS F2 = JNB,FIELDS =(1,10,A)
  REFORMAT FIELDS=(F2:1,80)
  INREC IFTHEN=(WHEN=(11,2,CH,EQ,C'01'),
          BUILD=(1:1,10,X,12:45,3)),
        IFTHEN=(WHEN=(11,2,CH,EQ,C'02'),
          BUILD=(1:1,10,X,12:47,3)),
        IFTHEN=(WHEN=NONE,
          BUILD=(1:1,10,4X))
  OPTION EQUALS
  SORT FIELDS=COPY
/ *


输出为

码:
X002027174 008
X002027174 F00
X002027174 F00
X002267035 001
X002267035 F01
X002846116 007
回到顶部
查看用户资料 发送私信
斯科鲁苏

高级会员


已加入:2007年12月7日
帖子:2205
地点:圣何塞

发布发表:2012年5月25日,星期五,9:52 pm
引用回复

永永写道:
两个文件中的密钥均为10字节1,10。

在11,2之后的第二个文件中,可以是01或02。01始终是与key关联的文件, 02可以是多个。

要进行o / p,我需要1,10字节的密钥,从01记录开始,我需要45,3字节。在位置13,2上具有值'01'的02记录上需要47,3

我希望它清楚..感谢您带来希望..


如果您有多个02记录,那么它们在pos 47处的值是否都相同?还是每个02记录都不同?

例如:
码:

---- + ---- 1 ---- + ---- 2 ---- + ---- 3 ---- + ---- 4 ---- + ---- 5 ---- +
我的钥匙01  01                                ABC       
我的钥匙01  02                                  DEF     
我的钥匙01  02                                  GHI     
我的钥匙01  02                                  IJK     


您是否希望输出看起来像这样?

码:

我的钥匙01  ABC DEF GHI IJK (将所有02条记录合并为1条记录)


要么

码:

我的钥匙01  ABC DEF (仅记录第1个02记录值)
回到顶部
查看用户资料 发送私信
永永

新的用户


已加入:2007年4月9日
帖子:33
地点:印度

发布发表:2012年5月25日,星期五10:27 pm
引用回复

多个02如下所示。

码:
---- + ---- 1 ---- + ---- 2 ---- + ---- 3 ---- + ---- 4 ---- + ---- 5 ---- +
我的钥匙01  01                                ABC       
我的钥匙01  0201                                DEF     
我的钥匙01  0202                                GHI     
我的钥匙01  0203                                IJK     


我想像

码:
我的钥匙01  ABC DEF (DEF取自02中具有01的13,2)
回到顶部
查看用户资料 发送私信
斯科鲁苏

高级会员


已加入:2007年12月7日
帖子:2205
地点:圣何塞

发布发表:2012年5月25日,星期五,11:29 pm
引用回复

以下DFSORT JCL将为您提供所需的结果。我认为您在X002267035记录中有错字,因为在pos 13处没有'01'。
码:

// STEP0100 EXEC PGM = SORT                                             
// SYSOUT   DD SYSOUT=*                                               
//在一个      DD *                                                     
X00202717401010101000000000100010000000000000081420190814201900000000
X002027174020100000010010000100000101000000001F0081420192101L4100200{
X002027174020200000010010000100000101000000001F0081420192101L4100200{
X00226703501010101000000000100010000000000000012820120128201200000000
X002267035020100000010000000100000001000000001F0122820112101L5100200{
X00284611601010101000000000100010000000000000071920310719203100000000
// INB      DD *                                                     
X002027174                                                           
X002267035                                                           
X002846116                                                           
//整理  DD SYSOUT=*                                               
// SYSIN    DD *                                                     
  OPTION COPY                                                       
 JOINKEYS F1 = INA,FIELDS =(1,10,A)                                   
 JOINKEYS F2 = INB,FIELDS =(1,10,A)                                   
  REFORMAT FIELDS=(F1:1,14)                                         
                                                                     
  INREC IFOUTLEN=20,                                                 
  IFTHEN=(WHEN=INIT,BUILD=(1,10,22:11,4)),                           
  IFTHEN=(WHEN=GROUP,KEYBEGIN=(1,10),PUSH=(21:SEQ=1),RECORDS=2),     
  IFTHEN=(WHEN=GROUP,BEGIN=(21,1,ZD,EQ,1),PUSH=(11:22,4),RECORDS=2),
  IFTHEN=(WHEN=(21,1,ZD,EQ,2),OVERLAY=(15:22,4))                     
                                                                     
 完全移除,结点,部分=(1,10,TRAILER3=(1,20))           
// *                                                                 
// JNF1CNTL DD *                                                     
  INCLUDE COND=(11,2,CH,EQ,C'01',或,11,4,CH,EQ,C'0201')             
  INREC IFTHEN=(WHEN=(11,2,CH,EQ,C'01'),BUILD=(1,10,X,45,3)),       
        IFTHEN=(WHEN=(11,2,CH,EQ,C'02'),BUILD=(1,10,X,47,3))         
// *



输出是
码:

X002027174 008 F00
X002267035 001 F01
X002846116 007     
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> DFSORT / ICETOOL

 


类似主题
话题 论坛 回覆
没有新帖 建立排序键 DFSORT / ICETOOL 3
没有新帖 很大排序失败-寻求识别... DFSORT / ICETOOL 7
没有新帖 使用SORT进行日期转换 同步排序 4
没有新帖 哪个SORT实用程序可以改善性能? DFSORT / ICETOOL 16
没有新帖 使用基于关闭的VB记录排序... DFSORT / ICETOOL 6
搜索我们的论坛:


回到顶部