Page 1 of 1

SPLICE

PostPosted: Tue Feb 03, 2009 3:13 am
by sheepskinjacket
I'm trying to do the following in SORT/ICETOOL with SPLICE but I'm not sure if its possible:

Input File:
AAAAAAAA111
AAAAAAAA222
BBBBBBBB111
BBBBBBBB222
BBBBBBBB333

Desired Output File:
AAAAAAAA111222
BBBBBBBB111222333

Would be grateful for any help.

Re: SPLICE

PostPosted: Tue Feb 03, 2009 4:15 am
by Frank Yaeger
For each "key" in positions 1-8, you want to build one record with positions 9-11 from each record with that key? Is that correct?

What is the maximum number of records for a key?

What is the RECFM and LRECL of the input file and output file?

Re: SPLICE

PostPosted: Tue Feb 03, 2009 1:00 pm
by sheepskinjacket
Yes, thats correct. For each key(position 1 to 8) I want to build one record with positions 9 to 11 from each record with that key.
The maximum number of records for a key is ten.
The RECFM of the input and output file is VB and the LRECL is 100. However I can change both these parameters easily if need be.

Re: SPLICE

PostPosted: Wed Feb 04, 2009 12:32 am
by Frank Yaeger
Here's a DFSORT/ICETOOL job that will do what you asked for:

//S1   EXEC  PGM=ICETOOL
//TOOLMSG   DD  SYSOUT=*
//DFSMSG    DD  SYSOUT=*
//IN DD DSN=...  input file (VB/100)
//OUT DD DSN=...  output file (VB/100)
//TOOLIN DD *
SPLICE FROM(IN) TO(OUT) ON(7,8,CH) WITHEACH VLENMAX USING(CTL1) -
  WITH(18,3) WITH(21,3) WITH(24,3) WITH(27,3) WITH(30,3) -
  WITH(33,3) WITH(36,3) WITH(39,3) WITH(42,3)
/*
//CTL1CNTL DD *
  INREC IFTHEN=(WHEN=INIT,
    BUILD=(1,4,5:SEQNUM,2,ZD,RESTART=(5,8),7:5)),
   IFTHEN=(WHEN=(5,2,ZD,EQ,2),OVERLAY=(18:15,3)),
   IFTHEN=(WHEN=(5,2,ZD,EQ,3),OVERLAY=(21:15,3)),
   IFTHEN=(WHEN=(5,2,ZD,EQ,4),OVERLAY=(24:15,3)),
   IFTHEN=(WHEN=(5,2,ZD,EQ,5),OVERLAY=(27:15,3)),
   IFTHEN=(WHEN=(5,2,ZD,EQ,6),OVERLAY=(30:15,3)),
   IFTHEN=(WHEN=(5,2,ZD,EQ,7),OVERLAY=(33:15,3)),
   IFTHEN=(WHEN=(5,2,ZD,EQ,8),OVERLAY=(36:15,3)),
   IFTHEN=(WHEN=(5,2,ZD,EQ,9),OVERLAY=(39:15,3)),
   IFTHEN=(WHEN=(5,2,ZD,EQ,10),OVERLAY=(42:15,3))
  OUTFIL FNAMES=OUT,BUILD=(1,4,5:7)
/*