IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

SPLICE and number of "WITH" keyword


IBM Mainframe Forums -> DFSORT/ICETOOL
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
manuwankenobi

New User


Joined: 02 Mar 2006
Posts: 32
Location: FRANCE

PostPosted: Mon Jan 26, 2009 2:38 pm
Reply with quote

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
View user's profile Send private message
Frank Yaeger

DFSORT Developer


Joined: 15 Feb 2005
Posts: 7129
Location: San Jose, CA

PostPosted: Mon Jan 26, 2009 9:45 pm
Reply with quote

Use multiple SPLICE operators, each with 50 WITH operands.
Back to top
View user's profile Send private message
manuwankenobi

New User


Joined: 02 Mar 2006
Posts: 32
Location: FRANCE

PostPosted: Mon Jan 26, 2009 10:27 pm
Reply with quote

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
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Mon Jan 26, 2009 10:30 pm
Reply with quote

Hello,

Quote:
But the result is bad
Define "bad". . .
Back to top
View user's profile Send private message
manuwankenobi

New User


Joined: 02 Mar 2006
Posts: 32
Location: FRANCE

PostPosted: Mon Jan 26, 2009 10:32 pm
Reply with quote

Hello,

Result is bad = result not expected, I get only first occurence of 'DATAnn'
Back to top
View user's profile Send private message
Frank Yaeger

DFSORT Developer


Joined: 15 Feb 2005
Posts: 7129
Location: San Jose, CA

PostPosted: Mon Jan 26, 2009 10:56 pm
Reply with quote

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
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Tue Jan 27, 2009 3:50 am
Reply with quote

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
View user's profile Send private message
manuwankenobi

New User


Joined: 02 Mar 2006
Posts: 32
Location: FRANCE

PostPosted: Tue Jan 27, 2009 3:38 pm
Reply with quote

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
View user's profile Send private message
Frank Yaeger

DFSORT Developer


Joined: 15 Feb 2005
Posts: 7129
Location: San Jose, CA

PostPosted: Tue Jan 27, 2009 11:35 pm
Reply with quote

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
View user's profile Send private message
Skolusu

Senior Member


Joined: 07 Dec 2007
Posts: 2205
Location: San Jose

PostPosted: Tue Jan 27, 2009 11:55 pm
Reply with quote

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
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Wed Jan 28, 2009 3:13 am
Reply with quote

Hello,

Quote:
I apologize for my bad explanations and/or poor english.
Not to worry - we can help with the English icon_smile.gif

With practice, the explanations will also improve icon_wink.gif

Both will be to your long-term advantage.

Good luck,

d
Back to top
View user's profile Send private message
manuwankenobi

New User


Joined: 02 Mar 2006
Posts: 32
Location: FRANCE

PostPosted: Wed Jan 28, 2009 4:16 pm
Reply with quote

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
View user's profile Send private message
Frank Yaeger

DFSORT Developer


Joined: 15 Feb 2005
Posts: 7129
Location: San Jose, CA

PostPosted: Wed Jan 28, 2009 9:47 pm
Reply with quote

Kolusu's solution does NOT use any intermediate files (no T1, T2 or T3) so it would need less space.
Back to top
View user's profile Send private message
manuwankenobi

New User


Joined: 02 Mar 2006
Posts: 32
Location: FRANCE

PostPosted: Thu Sep 10, 2009 3:10 pm
Reply with quote

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. icon_biggrin.gif
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Thu Sep 10, 2009 7:07 pm
Reply with quote

Good to hear it is working - thanks for letting us know icon_smile.gif

d
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> DFSORT/ICETOOL

 


Similar Topics
Topic Forum Replies
No new posts Pulling a fixed number of records fro... DB2 2
No new posts Substring number between 2 characters... DFSORT/ICETOOL 2
No new posts Generate random number from range of ... COBOL Programming 3
No new posts PuTTY - "User is not a surrogate... IBM Tools 5
No new posts Increase the number of columns in the... IBM Tools 3
Search our Forums:

Back to Top