Sort CSV file -> ICE024A 6 RECORD LENGTH VALUE ERROR

In this Mainframe Forum - You can post your queries on DFSORT, ICETOOL , SyncSort & JCL Utilities

Moderators: Frank Yaeger, Moderator Group

Post Reply
res63
Member
Posts: 2
Joined: Fri Mar 20, 2009 12:27 am

Sort CSV file -> ICE024A 6 RECORD LENGTH VALUE ERROR

Post by res63 » Fri Mar 20, 2009 12:44 am

Maybe somebody can help me...
I try to sort a dataset with variable record length. It contains a delimited (coldel ';' and chardel '"') unload of a DB2-table. In the definition I try to copy the to be sorted key-columns in front of the variable length string as fixed length columns.
I use following definitions:
//SYMNAMES DD *
RDW,1,4
DATA,*
F01,%00
F02,%01
F03,%02
SEMI,';'
Tmp_RDW,1,4
Tmp_F01,*,4,CH
Tmp_F02,*,4,CH
Tmp_F03,*,100,CH
Tmp_DATA,*
//*
//SYSIN DD *
INREC PARSE=(F01=(FIXLEN=004,ENDBEFR=SEMI),
F02=(FIXLEN=004,ENDBEFR=SEMI),
F03=(FIXLEN=100,ENDBEFR=SEMI)),
BUILD=(RDW,F01,F02,F03,
DATA)
SORT FIELDS=(Tmp_F01,A,Tmp_F02,A,Tmp_F03,A)
OUTREC BUILD=(Tmp_RDW,
Tmp_DATA)
//*

But I get allways a RC 16 with error 'ICE024A 6 RECORD LENGTH VALUE ERROR'

ICE280I 1 ORIGINAL STATEMENTS FROM SYSIN FOLLOW
INREC PARSE=(F01=(FIXLEN=004,ENDBEFR=SEMI),
F02=(FIXLEN=004,ENDBEFR=SEMI),
F03=(FIXLEN=100,ENDBEFR=SEMI)),
BUILD=(RDW,F01,F02,F03,
DATA)
SORT FIELDS=(Tmp_F01,A,Tmp_F02,A,Tmp_F03,A)
OUTREC BUILD=(Tmp_RDW,
Tmp_DATA)
ICE282I 0 PERFORMING SYMBOL SUBSTITUTION AS NEEDED
ICE143I 0 BLOCKSET SORT TECHNIQUE SELECTED
ICE250I 0 VISIT http://www.ibm.com/storage/dfsort FOR DFSORT PAPERS, EXAMPLES AN
ICE000I 1 - CONTROL STATEMENTS FOR 5694-A01, Z/OS DFSORT V1R5 - 14:18 ON TUE MAR
INREC PARSE=(%00=(FIXLEN=004,ENDBEFR=C';'),%01=(FIXLEN=004,ENDBEFR=C'
'),%02=(FIXLEN=100,ENDBEFR=C';')),BUILD=(1,4,%00,%01,%0
,5)
SORT FIELDS=(5,4,CH,A,9,4,CH,A,13,100,CH,A)
OUTREC BUILD=(1,4,113)
ICE201I E RECORD TYPE IS V - DATA STARTS IN POSITION 5
ICE024A 6 RECORD LENGTH VALUE ERROR
ICE751I 0 C5-K26318 C6-K90007 C7-K90000 C8-K23476 E7-K24705
ICE052I 3 END OF DFSORT


Any idea what should be changed to avoid this RECORD LENGTH VALUE ERROR?
Thanks a lot for any help.
Regards
Andreas

User avatar
Frank Yaeger
Moderator
Posts: 812
Joined: Sat Feb 18, 2006 5:45 am
Location: San Jose, CA
Contact:

Post by Frank Yaeger » Fri Mar 20, 2009 2:00 am

You didn't give the RECFM and LRECL of your input file, but I suspect the LRECL is in the 32K range.

Your INREC build adds 108 bytes to each record so DFSORT sets the maximum INREC record length to the original LRECL + 108 bytes which is larger than the allowed record length of 32756 for VB records (32767 for VBS records).

For example, if your input file has RECFM=VB and LRECL=32756, the maximum INREC length would be 32756+108 = 32864 which is invalid.

You can't add fields at the front of records that large. You need to ensure that the INREC record is not larger than the maximum record length allowed.
Frank Yaeger - DFSORT Development Team (IBM) - yaeger@us.ibm.com
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
=> DFSORT/MVS is on the Web at http://www.ibm.com/storage/dfsort

res63
Member
Posts: 2
Joined: Fri Mar 20, 2009 12:27 am

Post by res63 » Fri Mar 20, 2009 2:35 am

Thanks a lot, Frank!
I think this is it! The LRECL is in fact 32756 (VB) even only may be first 1000 chars are really used.
Will look to get a dataset with a more appropriate LRECL.
Rgds Andreas

Post Reply

FREE TUTORIALS

Tutorials
Free tutorials from mainframegurukul
  • JCL Tutorial
    Covers all important JCL concepts.
  • Cobol Tutorial
    This tutorials covers all Cobol Topics from STRING to COMP-3.
  • DB2 Tutorial
    DB2 Tutorial focuses on DB2 COBOL Programming.
  • SORT Tutorial
    This Tutorial covers all important aspects of DFSORT with examples
  • CICS Tutorial
    This CICS tutorial covers CICS concepts and CICS Basics, CICS COBOL Programming.
Interview
Mainframe Interview questions



Other References
Mainframe Tools and others