查看上一个主题 :: 查看下一个主题
|
作者 |
信息 |
siva102
新的用户
已加入:2007年11月28日 帖子:63 地点:钦奈
|
|
|
|
大家好,
我刚刚在你们的帮助下完成了一项任务。
在处理我的tsak时,我再次遇到了问题。
那就是我有一个LRECL = 400的文件,其中从1到99和122到278的字段相同。其余20位具有开始日期和结束日期。
我需要一个排序卡,以便它将重复的行合并为最早的开始日期和最晚的结束日期的一行。例如:-
输入
(1-99); 01/01/2006; 01/07/2007;(122-278)
(1-99); 01/09/2007; 02/05/2008;(122- 278)
(1-99); 02/15/2008; 09/05/2008;(122- 278)
出PUT
(1-99); 01/01/2006; 09/05/2008;(122- 278)
我想可以通过使用include语句来完成。
你们能否告诉HW从这种需求类型开始。
提前致谢。 |
|
回到顶部 |
|
 |
阿伦·拉吉(Arun Raj)
主持人
已加入:2006年10月17日 帖子:2481 位置:@我的办公桌
|
|
|
|
你好
关键字段从什么开始?是1-99和122-178吗?
谢谢,
阿伦 |
|
回到顶部 |
|
 |
siva102
新的用户
已加入:2007年11月28日 帖子:63 地点:钦奈
|
|
|
|
嗨,阿伦
起始日期字段从位置100到109开始,结束日期从111到120。
除了这些内容外,重复记录的其他所有内容都是相同的,即位置1-99和位置122-400相同。
请让我知道我是否清楚你吗? |
|
回到顶部 |
|
 |
siva102
新的用户
已加入:2007年11月28日 帖子:63 地点:钦奈
|
|
|
|
大家好,
请在我的输入文件下面找到
码: |
---- 7 ---- + ---- 8 ---- + ---- 9 ---- + ---- 0 ---- + ---- 1 ---- + ---- 2 ---- + ---- 3 ---- +-
<---VALUE1 -->2008年7月21日; 2008年7月25日<--- value2--
<---VALUE1 -->07/28/2008; 08/01/2008<--- value2--
<---VALUE3 ->08/05/2008; 08/08/2008<--- value4--
<---VALUE3 ->08/11/2008; 08/13/2008<--- value4--
|
我的输出应该是
码: |
---- 7 ---- + ---- 8 ---- + ---- 9 ---- + ---- 0 ---- + ---- 1 ---- + ---- 2 ---- + ---- 3 ---- +-
<---VALUE1 -->2008年7月21日; 2008年8月1日<--- value2--
<---VALUE3 ->08/05/2008; 08/13/2008<--- value4--
|
你们能帮我做这个吗?
我想您可以轻松满足我的要求。
提前致谢。 |
|
回到顶部 |
|
 |
钦南
新的用户
已加入:2006年10月18日 帖子:73
|
|
|
|
好,
根据START-DATE,然后根据END-DATE和关键字对记录进行排序。 (请记住,将这两个字段保持在排序键的结尾)
然后在原始键上使用拼接(不包括这两个字段)以覆盖END-DATE字段。 |
|
回到顶部 |
|
 |
siva102
新的用户
已加入:2007年11月28日 帖子:63 地点:钦奈
|
|
|
|
你好
感谢您的回复。我已经按照升序开始日期和降序结束日期进行了排序。
但是我不知道如何使用该SPLICE。
请在下面填写我的分类卡,
码: |
// SYSIN DD *
SORT FIELDS=(1,99,CH,A,100,10,CH,D,111,10,CH,D,122,278,CH,A)
|
您能否给我一些拼接示例,以便继续进行下一步以获取输出。 |
|
回到顶部 |
|
 |
钦南
新的用户
已加入:2006年10月18日 帖子:73
|
|
|
|
如果我理解正确,这就是您的排序方式。
码: |
SORT FIELDS=(1,99,CH,A,
122,156,CH,A,
106,04,CH,A,
103,02,CH,A,
100,02,CH,A,
110,02,CH,A,
113,02,CH,A,
116,02,CH,A)
|
您能否检查一下并让我知道,是否可以很好地处理数据。如果工作正常
您能给我寄一份输入和输出数据的样本,以便我可以相应地给您一张接头卡。 |
|
回到顶部 |
|
 |
钦南
新的用户
已加入:2006年10月18日 帖子:73
|
|
|
|
抱歉,
它应该是
码: |
排序字段=(1,99,CH,A,
122,156,CH,A,
106,04,CH,A,
103,02,CH,A,
100,02,CH,A,
117,02,CH,A,
114,02,CH,A,
111,02,CH,A)
|
|
|
回到顶部 |
|
 |
siva102
新的用户
已加入:2007年11月28日 帖子:63 地点:钦奈
|
|
|
|
好吧,我已经尝试过了,但是在领域上有些不匹配,
所以我照你说的做了
新的SORT卡看起来像
码: |
排序字段=(1,99,CH,A,
106,04,CH,A,
103,02,CH,A,
100,02,CH,A,
117,04,CH,A,
114,02,CH,A,
111,02,CH,A,
122,278,CH,A)
|
现在工作正常。
输入如下
码: |
--9 ---- + ---- 0 ---- + ---- 1 ---- + ---- 2 ---- + ---- 3 ---- +- --4 ---
WMAC; Y; GWHR; 07/21/2008; 07/25/2008;逐渐减少的时间
WMAC; Y; GWHR; 07/28/2008; 08/01/2008;逐渐减少的工作时间
WOAC; Y; GWHR; 08/05/2008; 08/08/2008; gradaul rtw时间表
WOAC; Y; GWHR; 08/11/2008; 08/13/2008; Gradaul Rtw时间表
WMAC; Y; GWHR; 06/11/2008; 06/17/2008;减少计划
WMAC; Y; GWHR; 06/18/2008; 06/25/2008;减少计划
|
回答输出如下
码: |
WMAC; Y; GWHR; 07/21/2008; 07/25/2008;逐渐减少的时间
WMAC; Y; GWHR; 07/28/2008; 08/01/2008;逐渐减少的工作时间
WOAC; Y; GWHR; 08/05/2008; 08/08/2008; gradaul rtw时间表
WOAC; Y; GWHR; 08/11/2008; 08/13/2008; Gradaul Rtw时间表
WMAC; Y; GWHR; 06/11/2008; 06/17/2008;减少计划
WMAC; Y; GWHR; 06/18/2008; 06/25/2008;减少计划
|
我需要输出
码: |
WMAC; Y; GWHR; 07/21/2008; 08/01/2008;逐步减少的工作时间
WOAC; Y; GWHR; 08/05/2008; 08/08/2008; gradaul rtw时间表
WMAC; Y; GWHR; 06/11/2008; 06/25/2008;减少计划
|
请帮助我。 |
|
回到顶部 |
|
 |
钦南
新的用户
已加入:2006年10月18日 帖子:73
|
|
|
|
行,
您的要求的完整步骤应如下所示。
码: |
// S0001 EXEC PGM=SYNCTOOL
// DFSMSG DD SYSOUT=*
// SYSPRINT DD SYSOUT = *
// SYSOUT DD SYSOUT=*
//工具 DD SYSOUT=*
// STATA DD DSN=&&TEMP1,
// SPACE=(CYL,(10,10)),
// DISP=(NEW,PASS),DCB=(LRECL = 278,BLKSIZE = 2780)
// DDIN DD DISP = SHR,DSN = In.File
// DDOUT DD SYSOUT=*
//输出 DD SYSOUT=*
// TOOLIN DD *
COPY FROM(DDIN) TO(STATA) USING(CTL1)
SPLICE FROM(STATA) TO(OUT) ON(1,99,CH) -
ON(122,156,CH) WITH(111,10) KEEPNODUPS
// CTL1CNTL DD *
SORT FIELDS=(1,99,CH,A,
122,156,CH,A,
106,04,ZD,A,
100,02,ZD,A,
103,02,ZD,A,
117,02,ZD,A,
111,02,ZD,A,
114,02,ZD,A)
|
它对我有用一些小的测试数据。所以尝试一下,如果您认为是问题,请告诉我 |
|
回到顶部 |
|
 |
siva102
新的用户
已加入:2007年11月28日 帖子:63 地点:钦奈
|
|
|
|
你好
非常非常感谢你。
该代码工作正常。
确实是它的gr8与您合作。
再次感谢。 |
|
回到顶部 |
|
 |
阿伦·拉吉(Arun Raj)
主持人
已加入:2006年10月17日 帖子:2481 位置:@我的办公桌
|
|
|
|
您好,
我只是尝试使用上面的代码和下面的示例输入,并得到了预期的结果。
输入值
码: |
--- + ---- 9 ---- + ---- 0 ---- + ---- 1 ---- + ---- 2 ---- + ---- 3- -
<---VALUE1 -->2008年7月21日; 2008年7月25日<--- value2--
<---VALUE1 -->07/28/2008; 08/01/2008<--- value2--
<---VALUE3 -->2008年7月21日; 2008年7月25日<--- value3--
<---VALUE3 -->07/28/2008; 08/01/2008<--- value3--
<---VALUE3 -->07/28/2008; 08/05/2008<--- value3--
<---VALUE3 -->2008年7月29日; 2008年8月4日<--- value3-- |
实际产量
码: |
--- + ---- 9 ---- + ---- 0 ---- + ---- 1 ---- + ---- 2 ---- + ---- 3- -
<---VALUE1 -->2008年7月21日; 2008年8月1日<--- value2--
<---VALUE3 -->07/21/2008; 08/04/2008<--- value3-- |
预期产量
码: |
--- + ---- 9 ---- + ---- 0 ---- + ---- 1 ---- + ---- 2 ---- + ---- 3- -
<---VALUE1 -->2008年7月21日; 2008年8月1日<--- value2--
<---VALUE3 -->2008年7月21日; 2008年8月5日<--- value3-- |
我不确定您是否遇到过这样的输入。无论如何,这是SYNCTOOL作业,也应适用于上述输入。
码: |
//步骤1 EXEC PGM=SYNCTOOL
// DFSMSG DD SYSOUT=*
//工具 DD SYSOUT=*
//在 DD DSN=Input.file ---------- FB,LRECL = 400
//输出 DD DSN = Output.file ---------- FB,LRECL = 400
// T1 DD DSN=&&T1,DISP=(MOD,PASS)
// TOOLIN DD *
SORT FROM(IN) TO(T1) USING(CTL1)
SORT FROM(IN) TO(T1) USING(CTL2)
SPLICE FROM(T1) TO(OUT) ON(1,99,CH) ON(201,200,CH) WITH(111,10)
// CTL1CNTL DD *
INREC OVERLAY=(401:106,4,100,2,103,2)
SORT FIELDS=(1,99,CH,D,201,200,CH,D,401,8,CH,D)
彻底删除,结点,已建立=(1,400),
SECTIONS=(1,99,201,200,TRAILER3 =(1,200,201,200))
// CTL2CNTL DD *
INREC OVERLAY=(401:117,4,111,2,114,2)
SORT FIELDS=(1,99,CH,D,201,200,CH,D,401,8,CH,A)
彻底删除,结点,已建立=(1,400),
SECTIONS=(1,99,201,200,TRAILER3 =(1,200,201,200)) |
谢谢,
阿伦 |
|
回到顶部 |
|
 |
阿伦·拉吉(Arun Raj)
主持人
已加入:2006年10月17日 帖子:2481 位置:@我的办公桌
|
|
|
|
你好
不便之处,敬请原谅,
请忽略我以前的文章中的jcl,并按以下方式阅读。某些文件位置错误 .
码: |
// TOOLIN DD *
SORT FROM(IN) TO(T1) USING(CTL1)
SORT FROM(IN) TO(T1) USING(CTL2)
SPLICE FROM(T1) TO(OUT) ON(1,99,CH) ON(121,280,CH) WITH(111,10)
// CTL1CNTL DD *
INREC OVERLAY=(401:106,4,100,2,103,2)
SORT FIELDS=(1,99,CH,D,121,280,CH,D,401,8,CH,D)
彻底删除,结点,已建立=(1,400),
SECTIONS=(1,99,121,80,201,200,TRAILER3 =(1,200,201,200))
// CTL2CNTL DD *
INREC OVERLAY=(401:117,4,111,2,114,2)
SORT FIELDS=(1,99,CH,D,121,280,CH,D,401,8,CH,A)
彻底删除,结点,已建立=(1,400),
SECTIONS=(1,99,121,80,201,200,TRAILER3 =(1,200,201,200)) |
谢谢,
阿伦 |
|
回到顶部 |
|
 |
siva102
新的用户
已加入:2007年11月28日 帖子:63 地点:钦奈
|
|
|
|
嗨,阿伦
感谢您对此的关注。
真的很有帮助。 |
|
回到顶部 |
|
 |
阿伦·拉吉(Arun Raj)
主持人
已加入:2006年10月17日 帖子:2481 位置:@我的办公桌
|
|
|
|
西瓦
别客气。
谢谢,
阿伦 |
|
回到顶部 |
|
 |
siva102
新的用户
已加入:2007年11月28日 帖子:63 地点:钦奈
|
|
|
|
大家好,
感谢您的所有答复。
但是对于此组合记录,我只能再面对两种无法继续进行的情况。
请帮助我。
对于上面的示例,如果条件如下所示,我需要执行以下操作:
例如:-
码: |
开始日期 End Date
01/11/2008
2008年8月28日 10/09/2008 |
上面的Sort给出了类似的输出
码: |
开始日期 End Date
10/09/2008 |
但我需要它
码: |
开始日期 End Date
2008年8月28日 10/09/2008 |
结束日期也一样。
有人可以帮我吗? |
|
回到顶部 |
|
 |
阿伦·拉吉(Arun Raj)
主持人
已加入:2006年10月17日 帖子:2481 位置:@我的办公桌
|
|
|
|
西瓦
如下修改我上一篇文章中的CTL1 / CTL2卡。
码: |
// CTL1CNTL DD *
INREC IFTHEN=(WHEN=INIT,OVERLAY=(401:8C'9')),
IFTHEN=(WHEN=(100,10,CH,NE,C' '),OVERLAY=(401:106,4,100,2,103,2))
SORT FIELDS=(1,99,CH,D,121,280,CH,D,401,8,CH,D)
彻底删除,结点,已建立=(1,400),
SECTIONS=(1,99,121,80,201,200,TRAILER3 =(1,200,201,200))
// CTL2CNTL DD *
INREC IFTHEN=(WHEN=INIT,OVERLAY=(401:8C'0')),
IFTHEN=(WHEN=(111,10,CH,NE,C' '),OVERLAY=(401:117,4,111,2,114,2))
SORT FIELDS=(1,99,CH,D,121,280,CH,D,401,8,CH,A)
彻底删除,结点,已建立=(1,400),
SECTIONS=(1,99,121,80,201,200,TRAILER3 =(1,200,201,200)) |
|
|
回到顶部 |
|
 |
siva102
新的用户
已加入:2007年11月28日 帖子:63 地点:钦奈
|
|
|
|
嗨,阿伦
感谢您的回复。
实际上,我的输入文件长度已全部更改,这次LRECL达到700。所以我将值替换为正确的值。像下面
码: |
// TOOLIN DD *
SORT FROM(IN) TO(T1) USING(CTL1)
SORT FROM(IN) TO(T1) USING(CTL2)
SPLICE FROM(T1) TO(OUT) ON(1,421,CH) ON(444,256,CH) WITH(433,10)
// CTL1CNTL DD *
INREC OVERLAY=(428,4,422,2,425,2)
SORT FIELDS=(1,421,CH,D,444,256,CH,D)
彻底删除,结点,已建立=(1,700),
// CTL2CNTL DD *
INREC OVERLAY=(439,4,433,2,436,2)
SORT FIELDS=(1,421,CH,D,444,256,CH,D)
彻底删除,结点,已建立=(1,700)
|
但是我在输出文件中什么也没得到。
您能告诉我您如何定义截面部分,以及输入文件的LRECL是否为400,而您使用 401:,不是中止吗????
就我而言,它弯曲了...
请帮我 ??? |
|
回到顶部 |
|
 |
siva102
新的用户
已加入:2007年11月28日 帖子:63 地点:钦奈
|
|
|
|
嗨,阿伦
我已经用以前的记录长度i运行过您的排序卡。 400
我得到空输出,意味着输出中没有值。
您能否检查一下并让我知道。
谢谢你的帮助。 |
|
回到顶部 |
|
 |
外籍人士
全球主持人

已加入:2007年3月14日 帖子:8794 地点:威尔士威尔士
|
|
|
|
西瓦你呢 您 检查一下并发布您尝试过的内容以及由此产生的错误。我确信阿伦不会因为花太多时间解决而获得报酬 您的 problems. |
|
回到顶部 |
|
 |
阿伦·拉吉(Arun Raj)
主持人
已加入:2006年10月17日 帖子:2481 位置:@我的办公桌
|
|
|
|
引用: |
实际上,我的输入文件长度已全部更改,这次LRECL达到700 |
我输入的jcl输入400的LRECL和您提供的日期位置对我来说很好用。相同的jcl可能不适用于所有输入的LRECL。如果没有给出结果,则需要发布使用的jcl。 |
|
回到顶部 |
|
 |
siva102
新的用户
已加入:2007年11月28日 帖子:63 地点:钦奈
|
|
|
|
嗨,外籍人士,
请不要继续我的话。
我的意思是说我在准备该排序卡时遇到问题。阿伦真的从一开始就在帮助我。
他给了我很多解决方案...我只是仔细检查了一下代码,却得到了空输出。我尽我最大的努力来找到原因,但找不到原因。所以要求阿伦请检查wts的概率?
请问有什么问题吗?
此外 抱歉 如果那伤害了你很多。 |
|
回到顶部 |
|
 |
外籍人士
全球主持人

已加入:2007年3月14日 帖子:8794 地点:威尔士威尔士
|
|
|
|
西瓦
已通过PM回复  |
|
回到顶部 |
|
 |
siva102
新的用户
已加入:2007年11月28日 帖子:63 地点:钦奈
|
|
|
|
嗨,阿伦,
感谢回复。我和外国人之间有些误会。
请在下面找到JCl,
码: |
//步 EXEC PGM=SYNCTOOL
// DFSMSG DD SYSOUT=*
//工具 DD SYSOUT=*
//在 DD DSN=Input File - length = 400
//输出 DD DSN=OUTput File - length = 400
// T1 DD DSN=&&T1,DISP=(MOD,PASS)
// TOOLIN DD *
SORT FROM(IN) TO(T1) USING(CTL1)
SORT FROM(IN) TO(T1) USING(CTL2)
SPLICE FROM(T1) TO(OUT) ON(1,99,CH) ON(201,200,CH) WITH(111,10)
// CTL1CNTL DD *
INREC IFTHEN=(WHEN=INIT,OVERLAY=(401:8C'9')),
IFTHEN=(WHEN=(100,10,CH,NE,C' '),OVERLAY=(401:106,4,100,2,103,2))
SORT FIELDS=(1,99,CH,D,121,280,CH,D,401,8,CH,D)
彻底删除,结点,已建立=(1,400),
SECTIONS=(1,99,121,80,201,200,TRAILER3 =(1,200,201,200))
//CTL2CNTL DD *
INREC IFTHEN=(WHEN=INIT,OVERLAY=(401:8C'0')),
IFTHEN=(WHEN=(111,10,CH,NE,C' '),OVERLAY=(401:117,4,111,2,114,2))
SORT FIELDS=(1,99,CH,D,121,280,CH,D,401,8,CH,A)
彻底删除,结点,已建立=(1,400),
SECTIONS=(1,99,121,80,201,200,TRAILER3 =(1,200,201,200))
/*
|
我得到的错误是
码: |
IN : RECFM=FB ; LRECL= 400; BLKSIZE= 27600
记录长度= 408
可能无法有效使用INREC |
我们一直在使用的Bcos 叠加=(401:8C'9')).
您能否建议任何其他技巧来获得输出。 |
|
回到顶部 |
|
 |
阿伦·拉吉(Arun Raj)
主持人
已加入:2006年10月17日 帖子:2481 位置:@我的办公桌
|
|
|
|
西瓦
您遇到的错误不是严重错误,而是 不 您认为空输出的原因。
您已将SPLICE语句编码为
引用: |
来自(T1) TO(OUT) ON(1,99,CH) ON(201,200,CH)WITH(111,10) |
instead of
引用: |
来自(T1) TO(OUT) ON(1,99,CH) ON(121,280,CH)WITH(111,10) |
更正此问题并重新运行您的工作 |
|
回到顶部 |
|
 |
|
 |
查看书签
所有时间均为格林尼治标准时间+ 6小时 |
|