In the above JCl,
DDNAME - IN1 contains 5178992 records.
DDNAME - IN2 contains 411 records.
DDNAME - IN3 contains 411 records.
using CTL1,CTL2,CTL3, am getiing same number of records in
T1,T2,T3.
T1 contains 5178992 records.
T2 contains 411 records.
T3 contains 411 records.
While merging the above Three file in the DDNAME MRGIP1 using CTL4,
the total number of records just 6.5 lakh record,
remaining record are not available in the T4.
Due to that am not getting the required output..
before merging T1,T2,T3...i sorted all the three file based on match key.
After this am getting error mesage like
"ICE084I 0 EXCP ACCESS METHOD USED FOR IN1
ICE750I 0 DC 680068900 TC 0 CS DSVNN KSZ 24 VSZ 24
ICE752I 0 FSZ=5113300 RC IGN=0 E AVG=2536 0 WSP=16842332 C DYN=227660 53216
ICE046A 0 SORT CAPACITY EXCEEDED - RECORD COUNT 5054556
ICE753I 1 FWK=(0,0) SWK=(5,227660) TWK=(0,0) RWK=(0,0) TOTAL=(5,227660) BLK=532
ICE751I 1 DE-K10929 D5-K05352 C4-K90000 E8-K90000
ICE052I 0 END OF DFSORT "
what to do to get all the records of three files in output file(T4).
And one more thing i did.
if i execute directly from CTL4 by giving the dataset T1,T2,T3 as input.
am getting all the records in output file(T4) and final output is also correct.
If i execute from CTL1,then am not geting the required output.
half of the records are not available in the merged file(T4)
i got confused what to do?
i have to execute from CTl1 to get my requirements.
Joined: 31 May 2006 Posts: 200 Location: Netherlands
Quote:
ICE046A 0 SORT CAPACITY EXCEEDED - RECORD COUNT 5054556
Quote:
if i execute directly from CTL4 by giving the dataset T1,T2,T3 as input.
am getting all the records in output file(T4) and final output is also correct.
Since you are saying that it has succeeded in merging the three input files directly with the CTL4, there must be some process in CTL1/2/3 which is causing the sort limit to be exceeded. Try keeping but one of three CTLs and see which of the CTLs is causing the problem and study that CTL for the reason for abend. I think this process is bit vague but as I can not try this right now so I merely suggested.
i have to execute all the CTL...else i will not get the require output.
Only IN1 contains more record more that 51 lakh.
IN2 and In3 contains just 411 record each.
this JCl is working fine for the file which contain less umber of records.
if i give the file as a input which contains more than 50 lakh record.
am not getting the required output.
ICE046A 0 SORT CAPACITY EXCEEDED - RECORD COUNT 5054556
This you may get if
Quote:
when no more space is available in Hiperspace or on any allocated work data set.
Try this
Quote:
1. If JCL work data sets were used, increase the amount of work space available to DFSORT.
2.If appropriate, increase the amount of main storage available to
DFSORT using the options MAINSIZE/SIZE or the JCL option REGION.
Increasing the amount of main storage available to DFSORT can help
DFSORT use less intermediate storage. Avoid running a large sort in a
small amount of main storage.
Joined: 15 Feb 2005 Posts: 7129 Location: San Jose, CA
Quote:
let me know what to do?
About which problem? Your post is very unfocused.
The "losing" records problem may be a system restriction involving concatenation with referback that I've discussed here several times. See the second bullet at:
I don't know what all you're trying to do, but you seem to be doing it in a roundabout way.
Some suggestions:
Instead of using T1, T2 and T3 for the first three SORT operators, just use a MOD T1 for all three of them. Remove the TO(T1), TO(T2) and TO(T3) operands from the SORT operators and use OUTFIL FNAMES=T1 in CTL1CNTL, CTL2CNTL and CTL2CNTL.
Remove the fourth SORT operator.
Change the SPLICE operator to use FROM(T1) and USING(CTL4).
Joined: 15 Feb 2005 Posts: 7129 Location: San Jose, CA
Quote:
what to do?
I don't know what you're trying to do. I don't know what your input records look like or what you expect the output records to look like. I don't know what your JCL and control statements now look like. I don't know what messages you received. So how do you expect me to tell you what to do?
If you want me to help you, show me an example of the records in each input file (relevant fields only) and what you expect for output, and explain the "rules" for getting from input to output. Tell me the RECFM and LRECL of each input file. Tell me the starting position, length and format of each relevant field.
Problem is
if Input file contains less number of 3-4lakh records in three input file
its merging all the record in the output file (T4)
But i executed the jcl which input file contains
DDNAME - IN1 contains 5178992 records.
DDNAME - IN2 contains 411 records.
DDNAME - IN3 contains 411 records.
am getting the RC=16,
by msg
Code:
ICE084I 0 EXCP ACCESS METHOD USED FOR IN1
ICE750I 0 DC 680068900 TC 0 CS DSVNN KSZ 24 VSZ 24
ICE752I 0 FSZ=5113300 RC IGN=0 E AVG=2536 0 WSP=16842332 C DYN=227660 53216
ICE046A 0 SORT CAPACITY EXCEEDED - RECORD COUNT 5054556
ICE753I 1 FWK=(0,0) SWK=(5,227660) TWK=(0,0) RWK=(0,0) TOTAL=(5,227660) BLK=532
ICE751I 1 DE-K10929 D5-K05352 C4-K90000 E8-K90000
ICE052I 0 END OF DFSORT
no problem in the logic.
am getting the required ouput if the number of records in the input file is very less.
If the number of records exceeds more than 10 lakh records,am getting the error message like that which i mentioned in the previous reply.
Hi,
This is happening since your file IN1 is multivolume and when you try to concatenate multivolume files , only records in the first volume will be considered and the rest of the recods(in other volumes) will be dropped.this is basically a system constraint.
Please try to change your code as Frank suggested and it should work fine.
There is no need to increase the main size or dynalloc.
Joined: 15 Feb 2005 Posts: 7129 Location: San Jose, CA
Quote:
i went thr that link.but i didn'ytfind any information.
Then you didn't look very hard. Here's the relevant information from that link:
Quote:
Be aware that, in some cases, if a DD statement specifies a data set for output that is extended to a second or subsequent volume, and another DD statement within the same step requests the same data set, only the records on the first volume will be read, and incorrect output will result.
Specifically, when a new output data set is allocated with a unit count and volume count greater than one, but specifies no volume serial numbers, one volume is allocated. If a second or succeeding DD statement within the same step requests the same data set, the same volume is allocated to it. If this job step extends the output data set to more volumes, this new volume information is not available to the second or succeeding DD statement.
Thus, you should not use different DDs for a data set to be used for output and then input in the same step, unless the data set cannot be extended to a second or subsequent volume, or is allocated with the guaranteed space attribute in the storage class. See z/OS MVS JCL Reference, SA22-7597 and z/OS DFSMS Using Data Sets, SC26-7410 for more details.
RECORD TYPE IS F - DATA STARTS IN POSITION 1
RESOURCES WERE UNAVAILABLE FOR DYNAMIC ALLOCATION OF WORK DATA SETS (970C)
FWK=(0,0) SWK=(4,184428) TWK=(0,0) RWK=(0,0) TOTAL=(4,184428) BLK=53216
C5-K90007 C6-K90007 C7-K90000 C8-K90007 E9-K90007 C9-BASE E5-K10929 E6-K90000
DC 680068900 TC 0 CS DSVNN KSZ 24 VSZ 24
FSZ=5113300 RC IGN=0 E AVG=2536 0 WSP=16842332 C DYN=184428 53216
END OF DFSORT
BOTTOM OF LIST ----------------------------------------------------------------
wht 2 do?
If am using sort card as SORT FIELDS=COPY,
am getting the RC=0 with required output.
IF am sorting based on some key fields,
iam getting the error message like this which i mentioned above.
ibmmainframesyntel
1. You need not specify DCB parameters, SORT calculates itself.
2. Increase your REGION parameter in your JOB CARD.(you can give REGION=0M)
3. dont know if you can avoid
Code:
SORT FIELDS=(2501,24,CH,A)
, since you are using the same sort in all control cards.
Rather you can use COPY statement in place of first 3 SORTs( I am giving this suggestion without the knowledge of the LOGIC that you are trying to perform).
4. Also the 4th SORT may be avoided, because: SPLICE performs sorting itself.
5. Though you feel that
Quote:
no problem in the logic.
am getting the required ouput if the number of records in the input file is very less.
If the number of records exceeds more than 10 lakh records,am getting the error message like that which i mentioned in the previous reply.
you can anser to Frank's quetion
Quote:
If you want me to help you, show me an example of the records in each input file (relevant fields only) and what you expect for output, and explain the "rules" for getting from input to output. Tell me the RECFM and LRECL of each input file. Tell me the starting position, length and format of each relevant field.
So that, he can help you in buiding up an efficient SORT JCl, that can handle huge data too.
Joined: 15 Feb 2005 Posts: 7129 Location: San Jose, CA
Quote:
//S1 EXEC PGM=ICETOOL,PARM='SIZE=MAX'
This has no effect. ICETOOL ignores PARM. (The PARM would be accepted with PGM=ICEMAN but SIZE=MAX is the IBM-supplied default so it probably wouldn't have any effect.)
Quote:
RESOURCES WERE UNAVAILABLE FOR DYNAMIC ALLOCATION OF WORK DATA SETS (970C)
You're obviously having resource problems. You didn't show enough of the messages for me to even figure out which ICETOOL operator the message was issued for. And again, I don't know what you're trying to do, so I don't know if you're doing it efficiently or not.
Hi Frank,
If xxxx is not 064K:
Ensure that work data sets can be dynamically allocated.
If message ICE118I was received, specify FILSZ=En with a reasonably accurate estimate of the number of records to be sorted. If you cannot specify FILSZ=En, use DYNSPC=n to decrease the primary space allocated.
Where exactly i have to give DYNSPC=n,FILSZ=En in JCL.
In Exec statement with PARM parameter or what.
I didn't get anything.
01I E RECORD TYPE IS F - DATA STARTS IN POSITION 1
83A D RESOURCES WERE UNAVAILABLE FOR DYNAMIC ALLOCATION OF WORK DATA SETS (970C
53I 0 FWK=(0,0) SWK=(0,0) TWK=(0,0) RWK=(0,0) TOTAL=(0,0) BLK=49120
51I 0 C5-K90007 C6-K90007 C7-K90000 C8-K90007 E4-K90007 C9-BASE E5-K10929 E6-
50I 0 DC 12963262455 TC 0 CS DSVVV KSZ 25 VSZ 25
52I 0 FSZ=5113713 RC IGN=0 E AVG=2536 0 WSP=16843691 C DYN=0 49120
52I 3 END OF DFSORT
Joined: 15 Feb 2005 Posts: 7129 Location: San Jose, CA
Quote:
Where exactly i have to give DYNSPC=n,FILSZ=En in JCL.
Code:
//DFSPARM DD *
OPTION DYNSPC=n,FILSZ=En
/*
But it doesn't appear that you received ICE118I so those options won't make any difference.
There appears to be something wrong with the way the dynamically allocated work data sets were set up at your site (e.g. no usable volumes in storage pool, bad device for VIO). Contact your system programmer - they may have to open a problem to have IBM help them figure out what's wrong.
As a bypass, you could try using //SORTWKdd DD statements to avoid dynamic allocation (NOT RECOMMENDED as a permanent thing).