View previous topic :: View next topic
Author
Message
rohit4u New User Joined: 06 Oct 2006Posts: 6
Hi,
My requirement is I have to change the key length value in VSAM file.
the key length is 36. I want to change the value of the field starting from 24th place to another value.And writes the output to sequential file.
I am giving the SORT condition like this.
The total record length of the input file is 1036.
The input file is VB file and we are writing it to sequential VB file.
SORT FIELDS=COPY
OUTREC BUILD=(1,4,5:1,23,24,8,CHANGE=(8,C'ABCMN006',C'LOCAL '),
32:32,1000)
We are getting the error "OUTREC HAS OVERLAPPING COLUMNS SPECIFIED ".
Any help on this is highly appreciated.
Regards,
Rohit.
Back to top
enrico-sorichetti Superior Member Joined: 14 Mar 2007Posts: 10873 Location: italy
Do You really think that posting THREE times will give You more answers ??
Back to top
rohit4u New User Joined: 06 Oct 2006Posts: 6
Since the question is same.....i wont mind if i get different answers..
Back to top
superk Global Moderator Joined: 26 Apr 2004Posts: 4652 Location: Raleigh, NC, USA
Ah-ha! The keyword is the "SYNCSORT" in the Subject. Now it's in the correct forum.
Back to top
Aaru Senior Member Joined: 03 Jul 2007Posts: 1287 Location: Chennai, India
rohit4u,
Quote:
OUTREC BUILD=(1,4,5:1,23,24,8,CHANGE=(8,C'ABCMN006',C'LOCAL '),
32:32,1000)
In your outrec build,first u r copying the first 4 bytes from the input file and then in the 5th position again you are copying from the first byte till 23. Here overlapping columns are specified and hence the error.
Back to top
Alissa Margulies SYNCSORT Support Joined: 25 Jul 2007Posts: 496 Location: USA
If you do not want to write the RDW to the output twice, then you can simply code:
Code:
//SYSIN DD *
SORT FIELDS=COPY
OUTREC BUILD=(1,23,24,8,CHANGE=(8,C'ABCMN006',C'LOCAL '),
32:32,1000)
However, if you have some reason why it is necessary, then you can modify the last field position as follows:
Code:
//SYSIN DD *
SORT FIELDS=COPY
OUTREC BUILD=(1,4,5:1,23,24,8,CHANGE=(8,C'ABCMN006',C'LOCAL '),
36:32,1000)
If neither of these provide the desired output, then please post the new error message produced.
Back to top
rohit4u New User Joined: 06 Oct 2006Posts: 6
Hi Alissa,
Thanks for your reply. I tried the way what you have mentioend and got the following error.
OUTREC BUILD=(1,4,5:1,23,24,8,CHANGE=(8,C'CORMN006',C'LOCAL '),
36:32,1000)
8,944K BYTES OF VIRTUAL STORAGE AVAILABLE, MAX REQUESTED,
0 BYTES RESERVE REQUESTED, 3,425,768 BYTES USED
20K BYTES OF EMERGENCY SPACE ALLOCATED
SORTIN : RECFM=V ; LRECL= 1036; CISIZE = 8192
OUTREC RECORD LENGTH = 1035
SORTOUT : RECFM=V ; LRECL= 1036; BLKSIZE= 1040
5,868K BYTES OF VIRTUAL STORAGE AVAILABLE ABOVE THE 16MEG LINE,
0 BYTES RESERVE REQUESTED, 300K BYTES USED
OUTREC - SHORT RECORD
Back to top
Aaru Senior Member Joined: 03 Jul 2007Posts: 1287 Location: Chennai, India
rohit,
Code:
OUTREC - SHORT RECORD
This clearly states that the record length of few records in your VB file is less than the condition specified in your OUTREC BUILD.
Back to top
Aaru Senior Member Joined: 03 Jul 2007Posts: 1287 Location: Chennai, India
rohit,
Search this forum for VLSHRT and use that parameter in your sort card.
Back to top
Alissa Margulies SYNCSORT Support Joined: 25 Jul 2007Posts: 496 Location: USA
rohit4u wrote:
The input file is VB file and we are writing it to sequential VB file.
Sorry - I missed that in your original post.
Try this:
Code:
//SYSIN DD *
SORT FIELDS=COPY
OUTREC BUILD=(1,4,5:1,23,24,8,CHANGE=(8,C'ABCMN006',C'LOCAL '),
36:32)
Back to top
Please enable JavaScript!