View previous topic :: View next topic
Author
Message
kalyan.v New User Joined: 04 Feb 2008Posts: 65 Location: Hyd
Hi,
I have two files and i want to join those files using syncsort.
Here is my sort card.
Code:
//STEP050 EXEC PGM=SYNCSORT,REGION=0M
//**********************************************************************
//SYSOUT DD SYSOUT=*
//SORTJNF1 DD DSN=XXXX.SORT1,DISP=SHR
//SORTJNF2 DD DSN=XXXX.SORT2,DISP=SHR
//SORTWK01 DD UNIT=WORK,SPACE=(CYL,(10,10))
//SORTWK02 DD UNIT=WORK,SPACE=(CYL,(10,10))
//SORTWK03 DD UNIT=WORK,SPACE=(CYL,(10,10))
//SORTWK04 DD UNIT=WORK,SPACE=(CYL,(10,10))
//SORTOF01 DD DSN=XXXX.SORT3,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSID,SPACE=(CYL,(30,30),RLSE),
// DCB=(MODEL.DSCB,RECFM=FB,LRECL=54)
//SYSIN DD *
JOINKEYS FILES=F1,FIELDS=(01,02,A,4,12,A)
JOINKEYS FILES=F2,FIELDS=(01,02,A,4,12,A)
REFORMAT FIELDS=(F1:1,100,F2:1,100)
SORT FIELDS=COPY
OUTFIL FILES=01,
INCLUDE=(01,02,CH,EQ,101,02,CH,AND,04,12,CH,EQ,104,12,CH),
OUTREC=(1,2,4,12,17,8,27,12,20X)
//*
I am getting U0016 abend with message mentioned as below.
WER486A ERROR IN BOTH JNF1 AND JNF2 PROCESSING
WER046A SORT CAPACITY EXCEEDED
WER066A APROX RCD CNT 566
How could i solve this??
Thanks
Back to top
Arun Raj Moderator Joined: 17 Oct 2006Posts: 2481 Location: @my desk
kalyan.v,
The 'WER' messages indicate that you're using SyncSort and NOT DFSORT . Please be aware that Questions related to SyncSort are discussed in JCL forum.
Back to top
dick scherrer Moderator Emeritus Joined: 23 Nov 2006Posts: 19243 Location: Inside the Matrix
Hello,
Code:
//SORTJNF1 DD DSN=XXXX.SORT1,DISP=SHR
//SORTJNF2 DD DSN=XXXX.SORT2,DISP=SHR
What are the attributes of these files and how many records are in each? Hopefully, these are not partitioned datasets.
Suggest you remove the model.dscb unless there is some site-specific requirement.
There may be additonal diagnostic info in the jes output - if there is, post the message(s) as well as their id(s).
Back to top
Arun Raj Moderator Joined: 17 Oct 2006Posts: 2481 Location: @my desk
kalyan.v,
Try increasing the SORTWKnn allocations. BTW, How many records do you have in the input files?
Back to top
kalyan.v New User Joined: 04 Feb 2008Posts: 65 Location: Hyd
Hi,
I tried by increasing SORTWKnn files.But getting the same message.
I have 2,00,000 records in one file and 1,00,000 in another file.
Thanks,
Kalyan
Back to top
Aaru Senior Member Joined: 03 Jul 2007Posts: 1287 Location: Chennai, India
Kalyan,
Quote:
WER486A ERROR IN BOTH JNF1 AND JNF2 PROCESSING
The error has occured while processing the SORTJNF1 and SORTJNF2 datasets. Please refer to the SYSOUT for the exact nature of the error.
Quote:
WER046A SORT CAPACITY EXCEEDED
All available storage is exhausted including the secondary allocation. Sort processing cannot continue.
Supply more intermediate storage using SORTWK or use the MAXSORT technique.
Quote:
WER066A APROX RCD CNT 566
Sort capacity exceeded and hence sort terminated. 566 is the approx no of records processed before termination.
Back to top
Aaru Senior Member Joined: 03 Jul 2007Posts: 1287 Location: Chennai, India
Kalyan,
Quote:
I tried by increasing SORTWKnn files
Did you try increasing the space? Please post the sort work file attributes.
Back to top
dick scherrer Moderator Emeritus Joined: 23 Nov 2006Posts: 19243 Location: Inside the Matrix
Hello,
As i asked earlier - what are the attributes for the F1 and F2 files?
Suggest you check with the storage admin people and make sure the work volumes are not filled before you start.
As i also mentioned earlier there may be more diagnostic info. If there is, post it along with any message ids.
Back to top
kalyan.v New User Joined: 04 Feb 2008Posts: 65 Location: Hyd
Aaru,
I increase sortwknn files to 10.
file attributes are,
UNIT=WORK,SPACE=(CYL,(20,20))
Thanks,
Kalyan
Back to top
Aaru Senior Member Joined: 03 Jul 2007Posts: 1287 Location: Chennai, India
Kalyan,
Quote:
UNIT=WORK,SPACE=(CYL,(20,20))
You will have to use maximum no of cylinders. I think you can use MAX of 1500 cylinders primary and secondary.
Give that a try.
Also post the details which Dick had asked.
Back to top
Arun Raj Moderator Joined: 17 Oct 2006Posts: 2481 Location: @my desk
Kalyan.
Try increasing the cylinders from 20 to 100. What about these?
Quote:
As i asked earlier - what are the attributes for the F1 and F2 files?
Back to top
kalyan.v New User Joined: 04 Feb 2008Posts: 65 Location: Hyd
HI,
Here are the file attributes.
//SORTJNF1 DD DSN=XXXX.SORT1,DISP=SHR -- RECFM=FB, LRECL=100
//SORTJNF2 DD DSN=XXXX.SORT2,DISP=SHR -- RECFM=FB, LRECL=100
Thanks,
Kalyan
Back to top
Aaru Senior Member Joined: 03 Jul 2007Posts: 1287 Location: Chennai, India
Kalyan,
Did you try increasing the no of cylinders for the SORT work files? Try and let us know.
Back to top
dick scherrer Moderator Emeritus Joined: 23 Nov 2006Posts: 19243 Location: Inside the Matrix
Hello,
The space specified is more than enough for that data volume.
I suspect that there is/was limited space available for unit=work when the problem job was run.
Back to top
dick scherrer Moderator Emeritus Joined: 23 Nov 2006Posts: 19243 Location: Inside the Matrix
Hello,
Is this now working? If not:
Quote:
Did you try increasing the no of cylinders for the SORT work files? Try and let us know.
If it fails again, please post the complete informational output from the sort.
Back to top
kalyan.v New User Joined: 04 Feb 2008Posts: 65 Location: Hyd
Hi,
I didn't solved the issue using sync sort.
So i used ICETOOL.
It is executing successfully but i am not getting the output properly.
Here is my code.
Code:
//STEP050 EXEC PGM=ICETOOL
//********************************************************************
//SYSOUT DD SYSOUT=*
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN1 DD DSN=XXXX.SORT1,DISP=SHR
//IN2 DD DSN=XXXX.SORT2,DISP=SHR
//T1 DD DSN=&&T1,DISP=(MOD,PASS),SPACE=(CYL,(10,10),RLSE)
//OUT DD DSN=XXXX.SORTE,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSID,SPACE=(CYL,(30,30),RLSE),
// DCB=(MODEL.DSCB,RECFM=FB,LRECL=70)
//TOOLIN DD *
COPY FROM(IN2) TO(T1) USING(CTL1)
COPY FROM(IN1) TO(T1) USING(CTL2)
SPLICE FROM(T1) TO(OUT) ON(1,15,CH) WITH(16,40)
/*
//CTL1CNTL DD *
OUTREC BUILD=(1,2,X,4,12,32X,17,8)
/*
//CTL2CNTL DD *
OUTREC BUILD=(1,2,X,4,12,16,22,40,8)
/*
The inputs are like below.
Code:
IN1:
17(6) 24(15) 40(8)
BC AA0029 750004 XXXXXXXXXXXXX 1
BC AA0060 760005 YYYYYYYYYYYYYYY 2
BC AA0413 038239 ZZZZZZZZZZZZZ 1
BC AA0415 019151 XXXXXXXYYYYYYY 2
IN2:
17(8) 26(12)
BC AA0060 5 +00000039842
BC AA0415 5 +00000011177
BC AA0582 1 +00000000000
BC AA0687 11 +00000031013
OUTPUT :
BC AA0060 760005 YYYYYYYYYYYYYYY 2 5 +00000039842
BC AA0415 019151 XXXXXXXYYYYYYY 2 5 +00000011177
I need Output like above only matching fields from IN2.
I am getting the output like below.
BC AA0060 760005 YYYYYYYYYYYYYYY 2..........8549 010800
BC AA0415 019151 XXXXXXXYYYYYYY 2..........POS/FSPPO I.E.
<----Junk Data--------->
After 45th byte i am getting Junk values.
How can i get the exact output.
Thanks,
Kalyan
Back to top
Aaru Senior Member Joined: 03 Jul 2007Posts: 1287 Location: Chennai, India
Kalyan,
Quote:
I didn't solved the issue using sync sort.
OK.
Quote:
So i used ICETOOL.
You should have used SYNCTOOL instead of ICETOOL. ICETOOL is shipped with DFSORT and SYNCTOOL with SYNCSORT.
Quote:
Here is my code using DFSORT.
Do you have both SYNCSORT and DFSORT installed in your shop?
Are your output error messages starting with WER or ICE??
Back to top
dick scherrer Moderator Emeritus Joined: 23 Nov 2006Posts: 19243 Location: Inside the Matrix
Hello,
Quote:
please post the complete informational output from the sort.
Make sure to include the message ids as well as the message text.
Back to top
kalyan.v New User Joined: 04 Feb 2008Posts: 65 Location: Hyd
Hi ,
I got the result in expected format using below sort card. But i am getting only matched records from both files.I need all records from IN2.(In IN2 some are matched with IN1.)
Code:
//TOOLIN DD *
COPY FROM(IN2) TO(T1) USING(CTL1)
COPY FROM(IN1) TO(T1)
SPLICE FROM(T1) TO(OUT) ON(1,15,CH) WITH(1,47)
/*
//CTL1CNTL DD *
INREC BUILD=(1:1,15,50:17,21)
/*
What can i do to get that??
Thanks,
Kalyan
Back to top
kalyan.v New User Joined: 04 Feb 2008Posts: 65 Location: Hyd
Hi,
If i am trying for exact output explained above using below sort card, again i am getting error as SORT CAPACITY EXCEEDED.The message is here.
WER162B 0 PREALLOCATED SORTWORK TRACKS, 0 DYNAMICALLY ALLOCATED,
WER162B 0 ACQUIRED IN SECONDARY EXTENTS, 0 RELEASED, TOTAL OF 0 TRACKS USED
WER407I UNUSABLE SORTWORK DEVICE ALLOCATED, UNIT=VIO
WER046A SORT CAPACITY EXCEEDED
WER055I INSERT 0, DELETE 0
WER211B SYNCSMF CALLED BY SYNCSORT; RC=0000
WER066A APROX RCD CNT 20
My code is below
Code:
//STEP050 EXEC PGM=ICETOOL
//*********************************************************************
//SYSOUT DD SYSOUT=*
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN1 DD DSN=XXXX.SORTA,DISP=SHR
//IN2 DD DSN=XXXX.SORTC,DISP=SHR
//T1 DD DSN=&&T1,DISP=(MOD,PASS),SPACE=(CYL,(300,300),RLSE)
//OUT DD DSN=XXXX.SORTE,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSID,SPACE=(CYL,(30,30),RLSE),
// DCB=(MODEL.DSCB,RECFM=FB,LRECL=72)
//TOOLIN DD *
COPY FROM(IN2) TO(T1) USING(CTL1)
COPY FROM(IN1) TO(T1)
SPLICE FROM(T1) TO(OUT) ON(1,15,CH) WITH(1,47) USING(CTL2)
/*
//CTL1CNTL DD *
INREC BUILD=(1:1,15,50:17,21,72:C'2')
/*
//CTL2CNTL DD *
OUTFIL FNAMES=OUT,INCLUDE=(72,1,CH,EQ,C'2')
/*
So what can i do??
Thanks,
Kalyan
Back to top
Arun Raj Moderator Joined: 17 Oct 2006Posts: 2481 Location: @my desk
Kalyan,
The real problem is not with the JOIN. I would suggest you to go back to the JOIN as it offers more performance than the SPLICE you used above which involves multiple passes of data.
Quote:
WER162B 0 PREALLOCATED SORTWORK TRACKS, 0 DYNAMICALLY ALLOCATED,
WER162B 0 ACQUIRED IN SECONDARY EXTENTS, 0 RELEASED, TOTAL OF 0 TRACKS USED
WER407I UNUSABLE SORTWORK DEVICE ALLOCATED , UNIT=VIO
WER046A SORT CAPACITY EXCEEDED
You are tying to use an unusable UNIT parameter and you have ZERO tracks available for sorting. Correct this and try again.
Back to top
dick scherrer Moderator Emeritus Joined: 23 Nov 2006Posts: 19243 Location: Inside the Matrix
Hello,
Quote:
I didn't solved the issue using sync sort.
So i used ICETOOL.
Your system uses the Syncproducts, so that is what you will use. In your environment, ICETOOL actually invokes Synctool (*it is done with alias).
Suggest you make the modifications Arun posted and we can proceed from there if there are any problems/surprises.
Back to top
kalyan.v New User Joined: 04 Feb 2008Posts: 65 Location: Hyd
Hi,
I solved the issue using syncsort.
Thanks to all for help.
Thanks,
Kalyan
Back to top
dick scherrer Moderator Emeritus Joined: 23 Nov 2006Posts: 19243 Location: Inside the Matrix
You're welcome - good to hear it is working
Thank you for letting us know,
d
Back to top
Please enable JavaScript!