File Comparison using ICETOOL
Posted: Thu Aug 30, 2012 4:37 pm
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:
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:
It gave this error:
So I splitted the control card like this:
It gave this error:
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.
//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
/*
//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
/*
When the control card is like this:
//TOOLIN DD *
SELECT FROM(SORTIN) TO(OUTPUT) ON(1,7000,CH) NODUPS
/*
SELECT FROM(SORTIN) TO(OUTPUT) ON(1,7000,CH) NODUPS
/*
SELECT FROM(SORTIN) TO(OUTPUT) ON(1,7000,CH) NODUPS
$
ICE619A 0 INVALID LENGTH, FORMAT, OR COMBINATION FOR SELECT OPERATION
$
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
/*
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
/*
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
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.