20 An OPEN macro instruction was issued for a sequential data set using queued access. BLKSIZE is not a
multiple of LRECL, or LRECL is 0 with RECFM=FB or RECFM=FBS, or BLKSIZE is not at least four bytes greater
than LRECL with RECFM=V.
Joined: 06 Jun 2008 Posts: 8337 Location: Dubuque, Iowa, USA
Talk to your site support group. You do not specify LRECL or BLKSIZE for any of the new data sets in your JCL; the default values will depend upon your site and how it uses ISMF. The DD * is usually LRECL 80 but that can vary if your site uses JES3; it appears likely that the defaults at your site for new data sets are not compatible with LRECL 80.
For the S013, DFSORT programming guide is very particular about the format of the SYMNAMES dataset (TEMP or otherwise) which you'd not adhered to at the start; so adding an '80:X' to your SYMNAMES BUILD resolves that (relevant emphasis added in the quote):
A symbol data set can be a sequential data set, a partitioned member or a DD * data set; all three types can be concatenated together for the SYMNAMES DD. Each symbol data set must contain SYMNAMES statements describing the symbols for fields and constants to be used for the DFSORT or ICETOOL application. Each symbol data set must have the following attributes: RECFM=F or RECFM=FB and LRECL=80.
For best performance, use a large block size, such as the system determined optimum block size, for all DFSORT symbol data sets.
Aside, out of plain curiosity it'd be great if you can show us the final working solution.
Reason for asking this is, from the JCL posted, the symbols generated will have only the date and no identifier to recognise this date symbol, which when substituted to the next ICETOOL step should ideally return the syntax error: ICE272A, for the condition: "The symbol starts with a number (0-9) or a hyphen (-)"
As Abid has indicated, the SYMNAMES requires an LRECL of 80.
DFSORT is perfectly capable of creating the LRECL of an output data set, it just does it from what you tell it, and you told it "eight". 80:X (put a blank at position 80, and blank-fill any intervening positions on the record) is the best way to do what you want. Now you have an actual LRECL in your JCL, if you were to want to change the lengths of the record, you'd have two places to consider instead of one.
Like Abid, I'm curious about what you have got working, because putting a date on a record and calling it SYMNAMES won't give you a sort symbol.