Page 1 of 4

File Comparison using ICETOOL

PostPosted: Thu Aug 30, 2012 4:37 pm
by thermalchu
I'm trying to code a program which compares two sorted PS files having Record Count: 4000000, Record Length: 7000, Record Format: FB and prints non-matching records in a third file. This is the JCL I'm using:

//STEP1 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//SORTIN DD DSN=PXXXX.SORT1.PS,
// DISP=SHR
// DD DSN=PXXXX.SORT2.PS,
// DISP=SHR
//OUTPUT DD DSN=PXXXX.MISMATCH.PS,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(500,500),RLSE),UNIT=(DPERM,9),
// BLKSIZE=0,RECFM=FB,LRECL=7000,
// DATACLAS=COMPRESS
//DFSPARM DD *
OPTION DYNALLOC=(SYSDA,70),AVGRLEN=7000
/*
//TOOLIN DD *
SELECT FROM(SORTIN) TO(OUTPUT) ON(1,3000,CH) NODUPS
/*

Using this JCL I am able to compare only first 3000 bytes of records. I need to compare whole record(7000 bytes).


When the control card is like this:
//TOOLIN DD *
SELECT FROM(SORTIN) TO(OUTPUT) ON(1,7000,CH) NODUPS
/*
It gave this error:
SELECT FROM(SORTIN) TO(OUTPUT) ON(1,7000,CH) NODUPS
                                                                $
ICE619A 0 INVALID LENGTH, FORMAT, OR COMBINATION FOR SELECT OPERATION


So I splitted the control card like this:
//TOOLIN DD *
SELECT FROM(SORTIN) TO(OUTPUT) ON(1,1500,CH) ON(1501,3000,CH) -
ON(3001,4500,CH) ON(4501,6000,CH) ON(6001,7000,CH) NODUPS
/*
It gave this error:
SELECT FROM(SORTIN) TO(OUTPUT) ON(1,1500,CH) ON(1501,3000,CH) -
ON(3001,4500,CH) ON(4501,6000,CH) ON(6001,7000,CH) NODUPS
              $
ICE619A 0 INVALID LENGTH, FORMAT, OR COMBINATION FOR SELECT OPERATION


I came to know that around 4K is the limit of record length. But I needed to compare the whole record(around 7000 bytes). Is there any other option which helps to increase record length limit? Or is there any mistake in my program? Please help me.

Re: File Comparison using ICETOOL

PostPosted: Thu Aug 30, 2012 4:53 pm
by BillyBoyo
You seem to be increasing the lengths as well as the starting positions. Once over 3000....

Re: File Comparison using ICETOOL

PostPosted: Thu Aug 30, 2012 5:00 pm
by thermalchu
No, I'm not increasing starting position. I just want to get whole record from both files to be compared.
It also shows error: END OF FIELD BEYOND MAXIMUM RECORD LENGTH

Re: File Comparison using ICETOOL

PostPosted: Thu Aug 30, 2012 5:05 pm
by BillyBoyo
ON(1,1500,CH)


Here, the 1 is the start position for the comparison and the 1500 is the length.

By this point

ON(6001,7000,CH)


you are trying to compare from start position 6001 for a length of 7000 bytes.

So, 1,1500, 1501,1500, 3001,1500, 4501,1500, 6001,1000

Re: File Comparison using ICETOOL

PostPosted: Thu Aug 30, 2012 5:13 pm
by thermalchu
K, i changed as:
SELECT FROM(SORTIN) TO(OUTPUT) ON(1,1500,CH) ON(1501,1500,CH) -
ON(3001,1500,CH) ON(4501,1500,CH) ON(6001,7000,CH) NODUPS

It showed error:
BLOCKSET REQUIRED BUT COULD NOT BE USED - REASON CODE IS 63
(which is too many on conditions)

Re: File Comparison using ICETOOL

PostPosted: Thu Aug 30, 2012 5:33 pm
by thermalchu
SELECT FROM(SORTIN) TO(OUTPUT) -
ON(1,1500,1501,1500,3001,1500,4501,1500,6001,904,CH) NODUPS
$
ICE619A 0 INVALID LENGTH, FORMAT, OR COMBINATION FOR SELECT OPERATION

Re: File Comparison using ICETOOL

PostPosted: Thu Aug 30, 2012 5:37 pm
by BillyBoyo
It is an odd sort of a comparison anyway :-)

Have you tried your standard file comparison software at your site? Why is that no use here?

Have you looked at JOINKEYS in Sort?

Re: File Comparison using ICETOOL

PostPosted: Thu Aug 30, 2012 5:48 pm
by thermalchu
SUPERC tool showed timeout error!
And I didnt understood JOINKEYS control card..

Re: File Comparison using ICETOOL

PostPosted: Thu Aug 30, 2012 6:06 pm
by BillyBoyo
Google for "joinkeys compare files" or similar. Compare alongside your documentation. Follow any examples in your documentation.

Get it working in minor (DD * input, a few records) and get to understand it. Then go for one for a test version of your big files.

Re: File Comparison using ICETOOL

PostPosted: Thu Aug 30, 2012 6:24 pm
by thermalchu
Ok :)