View previous topic :: View next topic
Author
Message
manuwankenobi New User Joined: 02 Mar 2006Posts: 32 Location: FRANCE
Hi all,
I need to splice records :
My input file is like this :
KEY01 DATA01
KEY01 DATA02
KEY01 DATAnn
KEY02 DATA01
KEY02 DATAnn
(....)
I need an output file like this :
KEY01 DATA01DATA02...DATAnn
KEY02 DATA01DATA02...DATAnn
We can do this with SPLICE, but I have more than 50 DATAnn and the number of with keyword is limited to 50.
Any suggestion ?
Regards
Back to top
Frank Yaeger DFSORT Developer Joined: 15 Feb 2005Posts: 7129 Location: San Jose, CA
Use multiple SPLICE operators, each with 50 WITH operands.
Back to top
manuwankenobi New User Joined: 02 Mar 2006Posts: 32 Location: FRANCE
Thank you for the answer, I tried this :
Code:
SPLICE FROM(TEMP) TO(OUTDD) ON(1,170,CH) KEEPNODUPS -
WITHEACH -
WITH(280,109) WITH(389,109) WITH(498,109) WITH(607,109) -
WITH(716,109) WITH(825,109) WITH(934,109) WITH(1043,109) -
WITH(1152,109) WITH(1261,109) WITH(1370,109) WITH(1479,109) -
WITH(1588,109) WITH(1697,109) WITH(1806,109) WITH(1915,109) -
WITH(2024,109) WITH(2133,109) WITH(2242,109) WITH(2351,109) -
WITH(2460,109) WITH(2569,109) WITH(2678,109) WITH(2787,109) -
WITH(2896,109) WITH(3005,109) WITH(3114,109) WITH(3223,109) -
WITH(3332,109) WITH(3441,109) WITH(3550,109) WITH(3659,109) -
WITH(3768,109) WITH(3877,109) WITH(3986,109) WITH(4095,109) -
WITH(4204,109) WITH(4313,109) WITH(4422,109) WITH(4531,109) -
WITH(4640,109) WITH(4749,109) WITH(4858,109) WITH(4967,109) -
WITH(5076,109) WITH(5185,109) WITH(5294,109) WITH(5403,109) -
WITH(5512,109)
SPLICE FROM(TEMP) TO(OUTDD) ON(1,170,CH) KEEPNODUPS -
WITHEACH -
WITH(5621,109) WITH(5730,109) WITH(5839,109) -
WITH(5948,109) WITH(6057,109) WITH(6166,109) WITH(6275,109) -
WITH(6384,109) WITH(6493,109) WITH(6602,109) WITH(6711,109) -
WITH(6820,109) WITH(6929,109) WITH(7038,109) WITH(7147,109) -
WITH(7256,109) WITH(7365,109) WITH(7474,109) WITH(7583,109) -
WITH(7692,109) WITH(7801,109) WITH(7910,109) WITH(8019,109)
But the result is bad, I'm certainly doing somethiong wrong ?
Regards
Back to top
dick scherrer Moderator Emeritus Joined: 23 Nov 2006Posts: 19244 Location: Inside the Matrix
Hello,
Quote:
But the result is bad
Define "bad". . .
Back to top
manuwankenobi New User Joined: 02 Mar 2006Posts: 32 Location: FRANCE
Hello,
Result is bad = result not expected, I get only first occurence of 'DATAnn'
Back to top
Frank Yaeger DFSORT Developer Joined: 15 Feb 2005Posts: 7129 Location: San Jose, CA
I don't see a USING for either SPLICE, so I'm guessing you don't have the IFTHEN clauses to put the field from each input record in the right place for SPLICEing so they correspond with the WITH operands, e.g.
Code:
INREC IFTHEN=(WHEN=INIT,OVERLAY=(8129:SEQNUM,8,ZD)),
IFTHEN=(WHEN=(8129,8,ZD,EQ,1),BUILD=(1,170,280:171,109)),
...
or something like that depending on what your input records really look like and the RECFM and LRECL.
Also, you're using the same files for FROM and TO for both SPLICE operators, so you're just overwriting the first with the second. You need to have a temporary file as the output fo the first SPLICE and as the input of the second SPLICE.
Code:
SPLICE FROM(TEMP) TO(T1) ON(1,170,CH) KEEPNODUPS -
...
SPLICE FROM(T1) TO(OUTDD) ON(1,170,CH) KEEPNODUPS -
...
If you need me to set up the job for you, then you have to give me all of the details. RECFM and LRECL of the input file. Layout of the input records. Layout of the output records. Maximum number of records with the same key.
Back to top
dick scherrer Moderator Emeritus Joined: 23 Nov 2006Posts: 19244 Location: Inside the Matrix
Hello,
Quote:
Result is bad = result not expected, I get only first occurence of 'DATAnn'
Yes, i suspect that everyone who read this understood that some unexpected result occurred. It should not have been necessary to request a better definition.
Something you need to learn about getting help whether it is from this forum, some vendor support call, or even your co-workers, it that you need to clearly describe the problem. Providing "it didn't work" is just a waste of everyone's time - especially your own. The more quickly you post a clear, complete problem description, the more quickly someone may be able to help.
Back to top
manuwankenobi New User Joined: 02 Mar 2006Posts: 32 Location: FRANCE
Hello,
I apologize for my bad explanations and/or poor english.
My input file is FB,279 with KEY=170 bytes, data=109 bytes.
For 1 key I can have from 1 to 73 records(same key, different data), the output file will have 1 record for each key and the concatenation of all the datas found for that key.
The input file is already sorted on the key.
Below is the code that I tried, I got an error on the number of "WITH" Keyword, so I'm looking for a way to "bypass" this limit.
Code:
//TOOL EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//*-----------------------------------------------------------
//*- INDD : Fichier @ traiter -
//*-----------------------------------------------------------
//INDD DD DISP=SHR,DSN=A500.UNLRAP22.DATA
//*-----------------------------------------------------------
//*- TEMP : Fichier interm{diaire -
//*-----------------------------------------------------------
//TEMP DD DISP=(,DELETE),DSN=&&TEMP,SPACE=(CYL,(500,50),RLSE)
//*-----------------------------------------------------------
//*- OUTDD: Fichier reformat{ -
//*-----------------------------------------------------------
//OUTDD DD DISP=(,CATLG,DELETE),DSN=XPF.UNLRAP22.DATA.REFORMAT.BIS,
// SPACE=(CYL,(500,50),RLSE),UNIT=3390
//TOOLIN DD *
SORT FROM(INDD) USING(CTL1)
SPLICE FROM(TEMP) TO(OUTDD) ON(1,170,CH) KEEPNODUPS -
WITHEACH -
WITH(280,109) WITH(389,109) WITH(498,109) WITH(607,109) -
WITH(716,109) WITH(825,109) WITH(934,109) WITH(1043,109) -
WITH(1152,109) WITH(1261,109) WITH(1370,109) WITH(1479,109) -
WITH(1588,109) WITH(1697,109) WITH(1806,109) WITH(1915,109) -
WITH(2024,109) WITH(2133,109) WITH(2242,109) WITH(2351,109) -
WITH(2460,109) WITH(2569,109) WITH(2678,109) WITH(2787,109) -
WITH(2896,109) WITH(3005,109) WITH(3114,109) WITH(3223,109) -
WITH(3332,109) WITH(3441,109) WITH(3550,109) WITH(3659,109) -
WITH(3768,109) WITH(3877,109) WITH(3986,109) WITH(4095,109) -
WITH(4204,109) WITH(4313,109) WITH(4422,109) WITH(4531,109) -
WITH(4640,109) WITH(4749,109) WITH(4858,109) WITH(4967,109) -
WITH(5076,109) WITH(5185,109) WITH(5294,109) WITH(5403,109) -
WITH(5512,109) WITH(5621,109) WITH(5730,109) WITH(5839,109) -
WITH(5948,109) WITH(6057,109) WITH(6166,109) WITH(6275,109) -
WITH(6384,109) WITH(6493,109) WITH(6602,109) WITH(6711,109) -
WITH(6820,109) WITH(6929,109) WITH(7038,109) WITH(7147,109) -
WITH(7256,109) WITH(7365,109) WITH(7474,109) WITH(7583,109) -
WITH(7692,109) WITH(7801,109) WITH(7910,109) WITH(8019,109)
//CTL1CNTL DD *
OPTION EQUALS
SORT FIELDS=COPY
OUTREC IFTHEN=(WHEN=INIT,OVERLAY=(280:SEQNUM,8,ZD,RESTART=(1,170))),
IFTHEN=(WHEN=(280,8,ZD,EQ,01),BUILD=(1,170,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,02),BUILD=(1,170,0109X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,03),BUILD=(1,170,0218X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,04),BUILD=(1,170,0327X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,05),BUILD=(1,170,0436X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,06),BUILD=(1,170,0545X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,07),BUILD=(1,170,0654X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,08),BUILD=(1,170,0763X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,09),BUILD=(1,170,0872X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,10),BUILD=(1,170,0981X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,11),BUILD=(1,170,1090X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,12),BUILD=(1,170,1199X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,13),BUILD=(1,170,1308X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,14),BUILD=(1,170,1417X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,15),BUILD=(1,170,1526X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,16),BUILD=(1,170,1635X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,17),BUILD=(1,170,1744X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,18),BUILD=(1,170,1853X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,19),BUILD=(1,170,1962X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,20),BUILD=(1,170,2071X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,21),BUILD=(1,170,2180X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,22),BUILD=(1,170,2289X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,23),BUILD=(1,170,2398X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,24),BUILD=(1,170,2507X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,25),BUILD=(1,170,2616X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,26),BUILD=(1,170,2725X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,27),BUILD=(1,170,2834X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,28),BUILD=(1,170,2943X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,29),BUILD=(1,170,3052X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,30),BUILD=(1,170,3161X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,31),BUILD=(1,170,3270X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,32),BUILD=(1,170,3379X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,33),BUILD=(1,170,3488X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,34),BUILD=(1,170,3597X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,35),BUILD=(1,170,3706X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,36),BUILD=(1,170,3815X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,37),BUILD=(1,170,3924X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,38),BUILD=(1,170,4033X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,39),BUILD=(1,170,4033X,0109X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,40),BUILD=(1,170,4033X,0218X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,41),BUILD=(1,170,4033X,0327X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,42),BUILD=(1,170,4033X,0436X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,43),BUILD=(1,170,4033X,0545X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,44),BUILD=(1,170,4033X,0654X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,45),BUILD=(1,170,4033X,0763X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,46),BUILD=(1,170,4033X,0872X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,47),BUILD=(1,170,4033X,0981X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,48),BUILD=(1,170,4033X,1090X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,49),BUILD=(1,170,4033X,1199X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,50),BUILD=(1,170,4033X,1308X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,51),BUILD=(1,170,4033X,1417X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,52),BUILD=(1,170,4033X,1526X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,53),BUILD=(1,170,4033X,1635X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,54),BUILD=(1,170,4033X,1744X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,55),BUILD=(1,170,4033X,1853X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,56),BUILD=(1,170,4033X,1962X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,57),BUILD=(1,170,4033X,2071X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,58),BUILD=(1,170,4033X,2180X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,59),BUILD=(1,170,4033X,2289X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,60),BUILD=(1,170,4033X,2398X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,61),BUILD=(1,170,4033X,2507X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,62),BUILD=(1,170,4033X,2616X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,63),BUILD=(1,170,4033X,2725X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,64),BUILD=(1,170,4033X,2834X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,65),BUILD=(1,170,4033X,2943X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,66),BUILD=(1,170,4033X,3052X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,67),BUILD=(1,170,4033X,3161X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,68),BUILD=(1,170,4033X,3270X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,69),BUILD=(1,170,4033X,3379X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,70),BUILD=(1,170,4033X,3488X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,71),BUILD=(1,170,4033X,3597X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,72),BUILD=(1,170,4033X,3706X,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,73),BUILD=(1,170,4033X,3815X,171,109))
OUTFIL FNAMES=TEMP
/*
Thanks for your help.
Back to top
Frank Yaeger DFSORT Developer Joined: 15 Feb 2005Posts: 7129 Location: San Jose, CA
I believe this DFSORT/ICETOOL job will do what you asked for:
Code:
//S1 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//INDD DD DISP=SHR,DSN=A500.UNLRAP22.DATA
//T1 DD DISP=(,PASS),DSN=&&T1,SPACE=(CYL,(500,50),RLSE)
//T2 DD DISP=(,PASS),DSN=&&T2,SPACE=(CYL,(500,50),RLSE)
//T3 DD DISP=(MOD,PASS),DSN=&&T3,SPACE=(CYL,(500,50),RLSE)
//OUTDD DD DISP=(,CATLG,DELETE),DSN=XPF.UNLRAP22.DATA.REFORMAT.BIS,
// SPACE=(CYL,(500,50),RLSE),UNIT=3390
//TOOLIN DD *
COPY FROM(INDD) USING(CTL1)
SPLICE FROM(T1) TO(T3) ON(1,170,CH) KEEPNODUPS -
WITHEACH -
WITH(280,109) WITH(389,109) WITH(498,109) WITH(607,109) -
WITH(716,109) WITH(825,109) WITH(934,109) WITH(1043,109) -
WITH(1152,109) WITH(1261,109) WITH(1370,109) WITH(1479,109) -
WITH(1588,109) WITH(1697,109) WITH(1806,109) WITH(1915,109) -
WITH(2024,109) WITH(2133,109) WITH(2242,109) WITH(2351,109) -
WITH(2460,109) WITH(2569,109) WITH(2678,109) WITH(2787,109) -
WITH(2896,109) WITH(3005,109) WITH(3114,109) WITH(3223,109) -
WITH(3332,109) WITH(3441,109) WITH(3550,109) WITH(3659,109) -
WITH(3768,109) WITH(3877,109) WITH(3986,109) WITH(4095,109) -
WITH(4204,109) WITH(4313,109) WITH(4422,109) WITH(4531,109) -
WITH(4640,109) WITH(4749,109) WITH(4858,109) WITH(4967,109) -
WITH(5076,109) WITH(5185,109) WITH(5294,109) WITH(5403,109) -
WITH(5512,109) WITH(5621,109)
COPY FROM(T2) TO(T3)
SPLICE FROM(T3) TO(OUTDD) ON(1,170,CH) KEEPNODUPS -
WITHEACH -
WITH(5730,109) WITH(5839,109) -
WITH(5948,109) WITH(6057,109) WITH(6166,109) WITH(6275,109) -
WITH(6384,109) WITH(6493,109) WITH(6602,109) WITH(6711,109) -
WITH(6820,109) WITH(6929,109) WITH(7038,109) WITH(7147,109) -
WITH(7256,109) WITH(7365,109) WITH(7474,109) WITH(7583,109) -
WITH(7692,109) WITH(7801,109) WITH(7910,109) WITH(8019,109)
/*
//CTL1CNTL DD *
INREC IFTHEN=(WHEN=INIT,
OVERLAY=(280:SEQNUM,8,ZD,RESTART=(1,170),8127:X))
OUTFIL FNAMES=T1,
INCLUDE=(280,8,ZD,LE,51),
IFTHEN=(WHEN=(280,8,ZD,EQ,01),BUILD=(1,170,171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,02),BUILD=(1,170,280:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,03),BUILD=(1,170,389:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,04),BUILD=(1,170,498:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,05),BUILD=(1,170,607:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,06),BUILD=(1,170,716:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,07),BUILD=(1,170,825:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,08),BUILD=(1,170,934:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,09),BUILD=(1,170,1043:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,10),BUILD=(1,170,1152:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,11),BUILD=(1,170,1261:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,12),BUILD=(1,170,1370:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,13),BUILD=(1,170,1479:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,14),BUILD=(1,170,1588:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,15),BUILD=(1,170,1697:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,16),BUILD=(1,170,1806:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,17),BUILD=(1,170,1915:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,18),BUILD=(1,170,2024:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,19),BUILD=(1,170,2133:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,20),BUILD=(1,170,2242:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,21),BUILD=(1,170,2351:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,22),BUILD=(1,170,2460:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,23),BUILD=(1,170,2569:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,24),BUILD=(1,170,2678:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,25),BUILD=(1,170,2787:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,26),BUILD=(1,170,2896:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,27),BUILD=(1,170,3005:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,28),BUILD=(1,170,3114:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,29),BUILD=(1,170,3223:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,30),BUILD=(1,170,3332:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,31),BUILD=(1,170,3441:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,32),BUILD=(1,170,3550:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,33),BUILD=(1,170,3659:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,34),BUILD=(1,170,3768:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,35),BUILD=(1,170,3877:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,36),BUILD=(1,170,3986:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,37),BUILD=(1,170,4095:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,38),BUILD=(1,170,4204:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,39),BUILD=(1,170,4313:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,40),BUILD=(1,170,4422:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,41),BUILD=(1,170,4531:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,42),BUILD=(1,170,4640:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,43),BUILD=(1,170,4749:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,44),BUILD=(1,170,4858:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,45),BUILD=(1,170,4967:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,46),BUILD=(1,170,5076:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,47),BUILD=(1,170,5185:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,48),BUILD=(1,170,5294:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,49),BUILD=(1,170,5403:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,50),BUILD=(1,170,5512:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,51),BUILD=(1,170,5621:171,109))
OUTFIL FNAMES=T2,
INCLUDE=(280,8,ZD,GT,51),
IFTHEN=(WHEN=(280,8,ZD,EQ,52),BUILD=(1,170,5730:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,53),BUILD=(1,170,5839:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,54),BUILD=(1,170,5948:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,55),BUILD=(1,170,6057:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,56),BUILD=(1,170,6166:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,57),BUILD=(1,170,6275:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,58),BUILD=(1,170,6384:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,59),BUILD=(1,170,6493:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,60),BUILD=(1,170,6602:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,61),BUILD=(1,170,6711:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,62),BUILD=(1,170,6820:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,63),BUILD=(1,170,6929:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,64),BUILD=(1,170,7038:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,65),BUILD=(1,170,7147:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,66),BUILD=(1,170,7256:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,67),BUILD=(1,170,7365:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,68),BUILD=(1,170,7474:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,69),BUILD=(1,170,7583:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,70),BUILD=(1,170,7692:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,71),BUILD=(1,170,7801:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,72),BUILD=(1,170,7910:171,109)),
IFTHEN=(WHEN=(280,8,ZD,EQ,73),BUILD=(1,170,8019:171,109))
/*
Back to top
Skolusu Senior Member Joined: 07 Dec 2007Posts: 2205 Location: San Jose
manuwankenobi,
You really don't need a splice to get the desired results. You can very easily club all the data into a single record using the new WHEN=GROUP function of DFSORT available with z/OS DFSORT V1R5 PTF UK90013 (July, 2008) like this:
Code:
//STEP0100 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD DSN=&&T1,DISP=SHR
//OUT DD SYSOUT=*
//TOOLIN DD *
SELECT FROM(IN) TO(OUT) ON(1,170,CH) LAST USING(CTL1)
//CTL1CNTL DD *
INREC IFTHEN=(WHEN=INIT,
OVERLAY=(8128:171,109,SEQNUM,8,ZD,RESTART=(1,170))),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,01),
RECORDS=73,PUSH=(0171:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,02),
RECORDS=72,PUSH=(0280:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,03),
RECORDS=71,PUSH=(0389:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,04),
RECORDS=70,PUSH=(0498:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,05),
RECORDS=69,PUSH=(0607:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,06),
RECORDS=68,PUSH=(0716:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,07),
RECORDS=67,PUSH=(0825:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,08),
RECORDS=66,PUSH=(0934:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,09),
RECORDS=65,PUSH=(1043:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,10),
RECORDS=64,PUSH=(1152:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,11),
RECORDS=63,PUSH=(1261:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,12),
RECORDS=62,PUSH=(1370:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,13),
RECORDS=61,PUSH=(1479:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,14),
RECORDS=60,PUSH=(1588:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,15),
RECORDS=59,PUSH=(1697:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,16),
RECORDS=58,PUSH=(1806:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,17),
RECORDS=57,PUSH=(1915:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,18),
RECORDS=56,PUSH=(2024:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,19),
RECORDS=55,PUSH=(2133:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,20),
RECORDS=54,PUSH=(2242:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,21),
RECORDS=53,PUSH=(2351:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,22),
RECORDS=52,PUSH=(2460:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,23),
RECORDS=51,PUSH=(2569:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,24),
RECORDS=50,PUSH=(2678:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,25),
RECORDS=49,PUSH=(2787:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,26),
RECORDS=48,PUSH=(2896:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,27),
RECORDS=47,PUSH=(3005:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,28),
RECORDS=46,PUSH=(3114:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,29),
RECORDS=45,PUSH=(3223:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,30),
RECORDS=44,PUSH=(3332:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,31),
RECORDS=43,PUSH=(3441:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,32),
RECORDS=42,PUSH=(3550:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,33),
RECORDS=41,PUSH=(3659:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,34),
RECORDS=40,PUSH=(3768:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,35),
RECORDS=39,PUSH=(3877:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,36),
RECORDS=38,PUSH=(3986:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,37),
RECORDS=37,PUSH=(4095:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,38),
RECORDS=36,PUSH=(4204:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,39),
RECORDS=35,PUSH=(4313:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,40),
RECORDS=34,PUSH=(4422:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,41),
RECORDS=33,PUSH=(4531:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,42),
RECORDS=32,PUSH=(4640:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,43),
RECORDS=31,PUSH=(4749:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,44),
RECORDS=30,PUSH=(4858:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,45),
RECORDS=29,PUSH=(4967:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,46),
RECORDS=28,PUSH=(5076:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,47),
RECORDS=27,PUSH=(5185:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,48),
RECORDS=26,PUSH=(5294:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,49),
RECORDS=25,PUSH=(5403:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,50),
RECORDS=24,PUSH=(5512:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,51),
RECORDS=23,PUSH=(5621:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,52),
RECORDS=22,PUSH=(5730:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,53),
RECORDS=21,PUSH=(5839:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,54),
RECORDS=20,PUSH=(5948:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,55),
RECORDS=19,PUSH=(6057:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,56),
RECORDS=18,PUSH=(6166:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,57),
RECORDS=17,PUSH=(6275:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,58),
RECORDS=16,PUSH=(6384:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,59),
RECORDS=15,PUSH=(6493:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,60),
RECORDS=14,PUSH=(6602:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,61),
RECORDS=13,PUSH=(6711:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,62),
RECORDS=12,PUSH=(6820:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,63),
RECORDS=11,PUSH=(6929:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,64),
RECORDS=10,PUSH=(7038:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,65),
RECORDS=09,PUSH=(7147:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,66),
RECORDS=08,PUSH=(7256:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,67),
RECORDS=07,PUSH=(7365:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,68),
RECORDS=06,PUSH=(7474:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,69),
RECORDS=05,PUSH=(7583:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,70),
RECORDS=04,PUSH=(7692:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,71),
RECORDS=03,PUSH=(7801:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,72),
RECORDS=02,PUSH=(7910:8128,109)),
IFTHEN=(WHEN=GROUP,BEGIN=(8237,8,ZD,EQ,73),
RECORDS=01,PUSH=(8019:8128,109))
OUTFIL BUILD=(1,8127)
//*
If you don't have the July, 2008 PTF installed, ask your System Programmer to install it (it's free).
For complete details on the new WHEN=GROUP and the other new functions available with PTF UK90013, see:
Use [URL] BBCode for External Links
Back to top
dick scherrer Moderator Emeritus Joined: 23 Nov 2006Posts: 19244 Location: Inside the Matrix
Hello,
Quote:
I apologize for my bad explanations and/or poor english.
Not to worry - we can help with the English
With practice, the explanations will also improve
Both will be to your long-term advantage.
Good luck,
d
Back to top
manuwankenobi New User Joined: 02 Mar 2006Posts: 32 Location: FRANCE
Hello,
Skolusu : I don't have the PTF, I will have it later
Franck : Great !
Dick : I keep your remarks in mind
A last remark : as T1,T2,T3 are FB files, as my input file is 580,000,000 records I calculate that the sum of T1 + T2 + T3 will be about 4,8 Terabytes !!!
Could T1,T2,T3 be VB ?
Would the solution from Skolusu need less space ?
Thanks for all.
Regards
Back to top
Frank Yaeger DFSORT Developer Joined: 15 Feb 2005Posts: 7129 Location: San Jose, CA
Kolusu's solution does NOT use any intermediate files (no T1, T2 or T3) so it would need less space.
Back to top
manuwankenobi New User Joined: 02 Mar 2006Posts: 32 Location: FRANCE
Hello,
As we got the magic PTF this summer, I could test Kolusu's solution, it works fine with less disk space used.
Sorry to reactivate this old thread, but I think it is important to inform about working solutions.
Thanks for all.
Back to top
dick scherrer Moderator Emeritus Joined: 23 Nov 2006Posts: 19244 Location: Inside the Matrix
Good to hear it is working - thanks for letting us know
d
Back to top
Please enable JavaScript!