查看上一个主题 :: 查看下一个主题
|
作者 |
信息 |
fuadk84
新的用户
已加入:2006年11月16日 帖子:10
|
|
|
|
嗨,我有5 ps的content,这些ps的每个ps都有不同查询的输出,即count *值。现在我想将所有这些ps内容放入一个ps并在同一行中...任何人都可以给解决方案请... |
|
回到顶部 |
|
 |
ofer71
全球主持人

已加入:2005年12月27日 帖子:2359 地点:以色列
|
|
|
|
您可以使用IEBGENER。
哦 |
|
回到顶部 |
|
 |
surya_pathaus
活跃用户
已加入:2006年8月28日 职位:110
|
|
回到顶部 |
|
 |
fuadk84
新的用户
已加入:2006年11月16日 帖子:10
|
|
|
|
ofer71写道: |
您可以使用IEBGENER。
哦 |
您可以告诉我如何使用IEBGENER吗?
这是我的问题(我不能使用icetool)
....例...
我想按记录横向合并两个文件。例如:
如果FILE1包含:
56789
BBBBBBB
中华总商会
FILE2包含:
11111
22222
33333
那么我的输出文件应包含:
5678911111
BBBBBBB22222
中华总商会33333
请帮助我。 |
|
回到顶部 |
|
 |
fuadk84
新的用户
已加入:2006年11月16日 帖子:10
|
|
|
|
嗨..无法使用ICETOOL ...还有其他方法.... |
|
回到顶部 |
|
 |
fuadk84
新的用户
已加入:2006年11月16日 帖子:10
|
|
|
|
fuadk84写道: |
嗨,我有5 ps的content,这些ps的每个ps都有不同查询的输出,即count *值。现在我想将所有这些ps内容放入一个ps并在同一行中...任何人都可以给解决方案请... |
这是我的问题(我不能使用icetool)
....例...
我想按记录横向合并两个文件。例如:
如果FILE1包含:
56789
BBBBBBB
中华总商会
FILE2包含:
11111
22222
33333
那么我的输出文件应包含:
5678911111
BBBBBBB22222
中华总商会33333
请帮助我... |
|
回到顶部 |
|
 |
ofer71
全球主持人

已加入:2005年12月27日 帖子:2359 地点:以色列
|
|
|
|
IEBGENER是标准的MVS实用程序。您可以在 精美手册.
哦 |
|
回到顶部 |
|
 |
弗兰克·雅格
DFSORT开发人员

已加入:2005年2月15日 帖子:7129 地点:加利福尼亚州圣何塞
|
|
|
|
ofer71写道
引用: |
IEBGENER是标准的MVS实用程序。您可以在精美的手册中阅读有关它的更多信息。 |
并且它在精美手册的确切位置上显示了如何执行fuadk84要执行的“联接”?请向我们展示IEBGENER的工作(我很好奇IEBGENER 能够 实际做到)。 |
|
回到顶部 |
|
 |
ofer71
全球主持人

已加入:2005年12月27日 帖子:2359 地点:以色列
|
|
|
|
我相信在SYSUT1中合并数据集将导致一个SYSUT2。
哦 |
|
回到顶部 |
|
 |
弗兰克·雅格
DFSORT开发人员

已加入:2005年2月15日 帖子:7129 地点:加利福尼亚州圣何塞
|
|
|
|
引用: |
我相信在SYSUT1中合并数据集将导致一个SYSUT2。 |
您需要仔细阅读fuadk84的描述。您可以使用IEBGENER并置file1和file2以获得以下输出:
56789
BBBBBBB
中华总商会
11111
22222
33333
但是fuadk84想要输出的是这样的:
5678911111
BBBBBBB22222
中华总商会33333
这是file1中的字段与file2中的字段的“连接”。 DFSORT的ICETOOL的SPLICE运算符可以做到这一点,但据我所知,IEBGENER无法做到。
由于某种原因,fuadk84说不能使用ICETOOL。不知道为什么。 |
|
回到顶部 |
|
 |
威廉·汤普森
全球主持人
已加入:2006年11月18日 帖子:3156 所在地:亚利桑那州图森
|
|
|
|
我暂时停留在Syncsort上,但我记得它可以将两个记录中的数据连接起来,如果没有很好的手册,我不确定。我只能假设DFSort可以做到吗?
嘿,弗兰克,上班迟到了吗?什么时候是“晚餐”……咧嘴.....
土耳其快乐的一天,
法案 |
|
回到顶部 |
|
 |
弗兰克·雅格
DFSORT开发人员

已加入:2005年2月15日 帖子:7129 地点:加利福尼亚州圣何塞
|
|
|
|
是的,DFSORT可以使用SPLICE做到这一点。
实际上,这里(西海岸)只有1:20 pm。晚餐已经有一段时间了(我的妻子只是把土耳其放在烤箱里……好吃)。
也祝您感恩节快乐。 |
|
回到顶部 |
|
 |
fuadk84
新的用户
已加入:2006年11月16日 帖子:10
|
|
|
|
fuadk84写道: |
嗨,我有5 ps的content,这些ps的每个ps都有不同查询的输出,即count *值。现在我想将所有这些ps内容放入一个ps并在同一行中...任何人都可以给解决方案请... |
谢谢...我可以在这里使用icetool .....部分获取输出..
请在下面的jcl中找到相同的问题
// S1 EXEC PGM = ICETOOL
// SYSPRINT DD SYSOUT = *
// TOOLMSG DD SYSOUT = *
// DFSMSG DD SYSOUT = *
// IN1 DD DSN = TNL.MKC.PS1,DISP = SHR
// IN2 DD DSN = TNL.MKC.PS2,DISP = SHR
// TMP1 DD DSN = TNL.MKC.TMP,DISP =(MOD,DELETE),
// SPACE =(TRK,(5,5)),UNIT = SYSDA,LRECL = 80
//输出DD DSN = TNL.MKC.PS,DISP = SHR
// TOOLIN DD *
使用(CTL1)从(IN1)复制到(TMP1)
使用(CTL2)从(IN2)复制到(TMP1)
使用(CTL3)从(TMP1)到(OUT)开(11,8,PD)和(6,5)
// CTL1CNTL DD *
出REC FIELDS=(1:1,5,11:SEQNUM,8,PD)
/ *
// CTL2CNTL DD *
出REC FIELDS=(6:1,5,11:SEQNUM,8,PD)
/ *
// CTL3CNTL DD *
出FIL FNAMES=OUT,OUTREC=(1,10)/ *
这里的问题是“使用(ctl3)”无法正常工作。
输出+这个问题的低值bcos。实际上我的输出
lik 1111122222 ........(文件1,22222 frm文件2中的11111)。
自ctl3cntl以来我期望的输出后得到低值
无法正常工作。
谁能帮我这个忙... |
|
回到顶部 |
|
 |
surya_pathaus
活跃用户
已加入:2006年8月28日 职位:110
|
|
|
|
你好
您的Outrec是10。那么您将如何在记录中获得低值?
“ 1111122222”的长度为10,并且记录中没有空间获得低值,那么如何获得低值? |
|
回到顶部 |
|
 |
fuadk84
新的用户
已加入:2006年11月16日 帖子:10
|
|
|
|
surya_pathaus写道: |
你好
您的Outrec是10。那么您将如何在记录中获得低值?
“ 1111122222”的长度为10,并且记录中没有空间获得低值,那么如何获得低值? |
对不起,我忘了提一件事,实际上是在获得maxcc 16
当我尝试如下所述时。
// CTL3CNTL DD *
出FIL FNAMES=OUT,OUTREC=(1,10)
/ *
正在获取输出“ 1111122222 .............”(由于输出长度可能会一直到80,因此我给输出文件指定了relen为80)
当我不使用此CTL3CNTL部分。当我使用CNTL3对其进行格式化时
这是givin maxcc 16 ......请看一下... |
|
回到顶部 |
|
 |
subhasis_50
主持人

加入时间:2005年3月9日 帖子:363 地点:地球
|
|
|
|
尝试这个
码: |
// STEP0100 EXEC PGM = ICETOOL
// *
//工具 DD SYSOUT = *
// DFSMSG DD SYSOUT=*
// IN1 DD *
56789
BBBBBBB
中华总商会
/ *
// IN2 DD *
11111
22222
33333
/ *
// T3 DD DSN=&&TEMPFIL1,
// DISP=(,PASS),SPACE=(TRK,(1,1),RLSE)
// T4 DD DSN=&&TEMPFIL2,
// DISP=(,PASS),SPACE=(TRK,(1,1),RLSE)
// CON DD DSN =&TEMPFIL1,VOL=REF=*.T3,DISP=(OLD,PASS)
// DD DSN=&TEMPFIL2,VOL=REF=*.T4,DISP=(OLD,PASS)
//输出 DD SYSOUT = *
// TOOLIN DD *
COPY FROM(IN1) TO(T3) USING(CTL1)
COPY FROM(IN2) TO(T4) USING(CTL2)
SPLICE FROM(CON) TO(OUT) ON(81,8,ZD) WITH(6,5) USING(CTL3)
// CTL1CNTL DD *
出FIL FNAMES=T3,OUTREC=(1,5,5Z,80:X,SEQNUM,8,ZD)
// CTL2CNTL DD *
OUTFIL FNAMES = T4,OUTREC =(5Z,6:1,5,80:X,SEQNUM,8,ZD)
/ *
// CTL3CNTL DD *
出FIL FNAMES=OUT,OUTREC=(1,80)
/ *
|
|
|
回到顶部 |
|
 |
fuadk84
新的用户
已加入:2006年11月16日 帖子:10
|
|
回到顶部 |
|
 |
弗兰克·雅格
DFSORT开发人员

已加入:2005年2月15日 帖子:7129 地点:加利福尼亚州圣何塞
|
|
|
|
由于您在TMP1 DD上指定了LRECL = 80,因此得到的值较低。 CTL1CNTL中的OUTREC创建了一个18字节的记录,但是由于TMP1的LRECL = 80,DFSORT填充了18字节的记录将把X'00变为80字节的记录。从TMP1 DD上删除LRECL = 80,您将不会得到较低的值。
我不确定您对CTL3CNTL的看法。如果RC = 16,则DFSMSG中将出现错误消息,但未显示。
如果您使用:
码: |
OUTFIL FNAMES = OUT,OUTREC =(1,10)
|
您将为OUT数据集创建10个字节的记录。如果OUT DD指定的文件的LRECL = 10,那么您将只获得那10个字节。如果OUT DD指定LRECL = 80的文件,则DFSORT将再次填充低值。如果要80个字节的记录,前10个字节,然后是空白,请使用:
码: |
OUTFIL FNAMES = OUT,OUTREC =(1,10,80:X)
|
|
|
回到顶部 |
|
 |
弗兰克·雅格
DFSORT开发人员

已加入:2005年2月15日 帖子:7129 地点:加利福尼亚州圣何塞
|
|
回到顶部 |
|
 |
fuadk84
新的用户
已加入:2006年11月16日 帖子:10
|
|
|
|
对不起..这是我的错误....实际上我知道
我只能稍后再使用icetool。
您能否解释以下情况:
码: |
SPLICE FROM(CON) TO(OUT) ON(81,8,ZD) WITH(6,5) USING(CTL3)
// CTL1CNTL DD *
出FIL FNAMES=T3,OUTREC=(1,5,5Z,80:X,SEQNUM,8,ZD)
// CTL2CNTL DD *
OUTFIL FNAMES = T4,OUTREC =(5Z,6:1,5,80:X,SEQNUM,8,ZD)
|
|
|
回到顶部 |
|
 |
弗兰克·雅格
DFSORT开发人员

已加入:2005年2月15日 帖子:7129 地点:加利福尼亚州圣何塞
|
|
|
|
首先,subhasis版本的工作不是最好的方法。太复杂了。这是一个更好的版本:
码: |
// S1 EXEC PGM = ICETOOL
//工具 DD SYSOUT = *
// DFSMSG DD SYSOUT=*
// IN1 DD *
56789
BBBBBBB
中华总商会
/ *
// IN2 DD *
11111
22222
33333
/ *
// T1 DD DSN =&&T1,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(MOD,PASS)
//输出 DD SYSOUT = *
// TOOLIN DD *
从复制(IN1) TO(T1) USING(CTL1)
从复制(IN2) TO(T1) USING(CTL2)
来自(T1) TO(OUT) ON(81,8,ZD) WITH(6,5) USING(CTL3)
// CTL1CNTL DD *
INREC OVERLAY=(81:SEQNUM,8,ZD)
// CTL2CNTL DD *
INREC BUILD=(6:1,5,81:SEQNUM,8,ZD)
/ *
// CTL3CNTL DD *
出FIL FNAMES=OUT,BUILD=(1,80)
/ *
|
CTL1CNTL INREC语句向位置81-88中的每个IN1记录添加序列号。
CNTL2CNTL INREC语句将IN2位置1-5放置在输出位置6-10处,并将序列号添加到位置81-88。
使用两个COPY运算符后,T1记录如下所示:
码: |
56789 ... 00000001
BBBBBBB ... 00000002
中华总商会 ... 00000003
11111 ... 00000001
22222 ... 00000002
33333 ... 00000003
|
新的SPLICE运算符为每对序列号创建一个拼接记录,其中第一条记录的1-5字段和第二条记录的6-10字段。 出FIL语句删除序列号。 |
|
回到顶部 |
|
 |
|