edkir98 Beginner

Joined: 27 Aug 2007 Posts: 102 Topics: 42 Location: Chennai
|
Posted: Wed Sep 10, 2008 7:53 am Post subject: From SYNCSORT to DFSORT |
|
|
I moved over from a group where we were using SYNCSORT and now in this new group we are using DFSORT. I wanted to use JOINKEYS utility of syncsort. I found from the forum that its equivalent in DFSORT is SPLICE. But I'm confused.
I tried executing a sample JCL from Frank's post which was quoted in http://www.mvsforums.com/helpboards/viewtopic.php?t=2951&highlight=duplicate+splice. But am getting an error. Can someone please explain the logic of how its happening?
This is the JCL I used
Code: | //S1 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN1 DD *
123456 IDSX
567015 IDSY
345678 IDSX
906615 IDSY
//IN2 DD *
123456 XXA .....
30000 ABC .....
123456 DEF......
345678 FGH......
567015 NOM......
345678 ETI......
906615 LKG......
//TEMP1 DD DSN=&&TEMP1,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(,PASS)
//TEMP2 DD DSN=&&TEMP2,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(,PASS)
//CON DD DSN=*.TEMP1,VOL=REF=*.TEMP1,DISP=(OLD,PASS)
// DD DSN=*.TEMP2,VOL=REF=*.TEMP2,DISP=(OLD,PASS)
//OUT1 DD DSN=&&O1,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(,PASS)
//OUT2 DD SYSOUT=*
//TOOLIN DD *
* IN1->T1: REFORMAT RECORDS TO:
* |KEY|.......|IDSX|...|A|...|BLANKS|
COPY FROM(IN1) TO(TEMP1) USING(CTL1)
* IN2->T2: REFORMAT RECORDS TO:
* |KEY|XXX|..................|SEQNUM|
COPY FROM(IN2) TO(TEMP2) USING(CTL2)
* T1/T2->OUT1: SPLICE TO GET:
* |KEY|XXX|...|IDSX|...|A|...|SEQNUM|
* KEY, IDSX AND A COME FROM BASE RECORDS (T1)
* XXX AND SEQNUM COME FROM OVERLAY RECORDS (T2)
SPLICE FROM(CON) TO(OUT1) ON(1,9,CH) -
WITHALL WITH(10,3) WITH(447,8) KEEPNODUPS
* SORT ON SEQNUM TO GET THE SPLICED RECORDS BACK
* IN THEIR ORIGINAL IN2 ORDER. REMOVE SEQNUM.
SORT FROM(OUT1) TO(OUT2) USING(CTL3)
/*
//CTL1CNTL DD *
OUTREC FIELDS=(1,9,156:10,6,
366:10,6,CHANGE=(1,C'IDSX ',C'I',
C'IDSY',C'J'),
NOMATCH=(C' '),
447:8X)
/*
//CTL2CNTL DD *
OUTREC FIELDS=(1,446,447:SEQNUM,8,ZD)
/*
//CTL3CNTL DD *
SORT FIELDS=(447,8,ZD,A)
OUTREC FIELDS=(1,446)
/* |
and this is the error I got
Code: | ICE201I E RECORD TYPE IS F - DATA STARTS IN POSITION 1
ICE027A 6 END OF FIELD BEYOND MAXIMUM RECORD LENGTH |
Can someone help? Also can you please explain the control card? It was a bit straightforward in SYNCSORT...
Code: | OUTREC FIELDS=(1,9,156:10,6,
366:10,6,CHANGE=(1,C'IDSX ',C'I',
C'IDSY',C'J'),
NOMATCH=(C' '),
447:8X) |
_________________ Thanks |
|