Dear Experts,
I have to compare two file and write the non matching records in file 3.The two input files are 2000 lenght each.
While runnning this first time with the temp dataset size as 5,5 I got s837 error then I increased the size to 20,20 but I got a retun code of 12 with following msg
Code:
SELECT FROM(T1) TO(OUT) ON(1,2000,CH) NODUPS USING(CTL3)
$
ICE619A 0 INVALID LENGTH, FORMAT, OR COMBINATION FOR SELECT OPERATION
ICE602I 0 OPERATION RETURN CODE: 12
I am using the following card to get this done but getting the error
There are no specific key for the file hence I want to do the file compare on the full record and the file size is 500 mb.Please suggest whats wrong happening or I need to furnish any more details
Joined: 15 Feb 2005 Posts: 7129 Location: San Jose, CA
The limit for the length of a CH ON field is 1500 - that's why you get the error message when you use a length of 2000. You can use two ON fields instead - one with a length of 1500 and the other with a length of 500 like this:
Frank Thanks for your input,I splitted the select as you suggested and it worked.But this time again S837 error occured is there any limit of the team dataset size I can use also Is there any link in terms of whole multipla.I meant is the temp dataset size is linked with the output dataset LRECL?
Joined: 15 Feb 2005 Posts: 7129 Location: San Jose, CA
I'm not really sure what you're asking. It sounds like the SPACE parameters you used for one of the data sets is too small for the number of records it needs to contain.
The //T1 data set has to be big enough to contain the total of the records from the IN1 and IN2 data sets. The //OUT data set has to be big enough to contain all of the non-duplicate records. The LRECL certainly has an effect on the size of the data sets (a data set with 1000 200-byte records obviously takes less space than a data set with 1000 2000-byte records.
COPY FROM(IN1) TO(T1) USING(CTL1)
ICE606I 0 DFSORT CALL 0001 FOR COPY FROM IN1 TO T1 USING CTL1CNTL COM
ICE602I 0 OPERATION RETURN CODE: 00
COPY FROM(IN2) TO(T1) USING(CTL2)
ICE606I 0 DFSORT CALL 0002 FOR COPY FROM IN2 TO T1 USING CTL2CNTL COM
ICE602I 0 OPERATION RETURN CODE: 00
SELECT FROM(T1) TO(OUT) ON(1,1500,CH) ON(1501,500,CH) -
NODUPS USING(CTL3)
ICE606I 0 DFSORT CALL 0003 FOR SORT FROM T1 TO OUT USING CTL3CNTL TER
ICE602I 0 OPERATION RETURN CODE: 16
I got the reason of 16 I was not increasing the lrecl of the work dataset which was supposed to be of 2001 lenght as its not temp and I was defining and using this in program.
Now I am going to check next if I am getting the desired output..,thanks and I am sorry as that was my mistake
You have a hardcoded LRECL value of 2000 for the temp dataset T1 and you are checking the byte 2001 in CTL3CNTL while writing out. Remove the DCB parameter from JCL for the T1 dataset. DFSORT automatically calculates the DCB parameters.