IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

WER247A SORTOUT HAS INCOMPATIBLE LRECL


IBM Mainframe Forums -> SYNCSORT
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
mmcnary

New User


Joined: 07 Nov 2006
Posts: 3

PostPosted: Tue Apr 23, 2024 9:52 pm
Reply with quote

I have a process where I create control cards by querying a DB2 table and creating the correct layout for the card on a single line. I then use SYNCSORT to break up the line by a delimited value to create lines that will fit in an 80 byte record that can be used for another process.

I am getting the error when I run the file through a PARSE/BUILD to perform this split process, even when I do the sort in-place. The failing process is cloned from another process that does the exact same thing and executes without issue. If this was completely new process, I would keep trying to tweak it, but I copied this directly from a job that works fine.

Here is my SYNCSORT control card

Code:
 

OPTION COPY
  OUTFIL PARSE=(%01=(ENDBEFR=C'&&',FIXLEN=800),
                %02=(ENDBEFR=C'&&',FIXLEN=800),
                %03=(ENDBEFR=C'&&',FIXLEN=800),
                %04=(ENDBEFR=C'&&',FIXLEN=800),
                %05=(ENDBEFR=C'&&',FIXLEN=800),
                %06=(ENDBEFR=C'&&',FIXLEN=800),
                %07=(ENDBEFR=C'&&',FIXLEN=800),
                %08=(ENDBEFR=C'&&',FIXLEN=800),
                %09=(ENDBEFR=C'&&',FIXLEN=800),
                %10=(ENDBEFR=C'&&',FIXLEN=800)),
      BUILD=(%01,/,%02,/,%03,/,%04,/,%05,/,%06,%07,/,%08,/,%09,/,%10)


Here is the JCL step (with JEM displaying the card)

Code:

//PARSE2   EXEC PGM=SORT
//SYSOUT   DD  SYSOUT=*
//SORTIN   DD  DISP=SHR,DSN=DB2SYS.TOOLBOX.DB2D.NDMGEN.OUTPUT
//SORTOUT  DD  DISP=SHR,DSN=DB2SYS.TOOLBOX.DB2D.NDMGEN.OUTPUT
//SYSIN  DD  DISP=SHR,DSN=DB2SYS.TOOLBOX.DB2D.IBP.CTL(CRENDM04)
  ----+----1----+----2----+----3----+----4----+----5----+----6----+----7
   OPTION COPY
   OUTFIL PARSE=(%01=(ENDBEFR=C'&&',FIXLEN=800),
                 %02=(ENDBEFR=C'&&',FIXLEN=800),
                 %03=(ENDBEFR=C'&&',FIXLEN=800),
                 %04=(ENDBEFR=C'&&',FIXLEN=800),
                 %05=(ENDBEFR=C'&&',FIXLEN=800),
                 %06=(ENDBEFR=C'&&',FIXLEN=800),
                 %07=(ENDBEFR=C'&&',FIXLEN=800),
                 %08=(ENDBEFR=C'&&',FIXLEN=800),
                 %09=(ENDBEFR=C'&&',FIXLEN=800),
                 %10=(ENDBEFR=C'&&',FIXLEN=800)),
       BUILD=(%01,/,%02,/,%03,/,%04,/,%05,/,%06,%07,/,%08,/,%09,/,%10)
//


Here is the error message I am getting:

Code:


WER813I  INSTALLATION OPTIONS IN MFX LOAD LIBRARY WILL BE USED
WER276B  SYSDIAG= 3898825, 8393328, 8393328, 9559205
WER164B  6,900K BYTES OF VIRTUAL STORAGE AVAILABLE, MAX REQUESTED,
WER164B     0 BYTES RESERVE REQUESTED, 1,008K BYTES USED
WER146B  16K BYTES OF EMERGENCY SPACE ALLOCATED
WER108I  SORTIN   : RECFM=FB   ; LRECL=   800; BLKSIZE=  8000
WER073I  SORTIN   : DSNAME=DB2SYS.TOOLBOX.DB2D.NDMGEN.OUTPUT
WER110I  SORTOUT  : RECFM=FB   ; LRECL=   800; BLKSIZE=  8000
WER074I  SORTOUT  : DSNAME=DB2SYS.TOOLBOX.DB2D.NDMGEN.OUTPUT
WER247A  SORTOUT  HAS INCOMPATIBLE LRECL
WER211B  SYNCSMF  CALLED BY SYNCSORT; RC=0000
WER449I  SYNCSORT GLOBAL DSM SUBSYSTEM ACTIVE



Here is a snippet of the input data. The '&&' is the embedded delimiter character. There are 9 occurrences per line of input.

Code:


    COPY                                                  -&&        FROM (                                                -&&
    COPY                                                  -&&        FROM (                                                -&&
    COPY                                                  -&&        FROM (                                                -&&
    COPY                                                  -&&        FROM (                                                -&&

Back to top
View user's profile Send private message
Joerg.Findeisen

Senior Member


Joined: 15 Aug 2015
Posts: 1260
Location: Bamberg, Germany

PostPosted: Tue Apr 23, 2024 10:15 pm
Reply with quote

While your are having FIXLEN=800 how can it then be split to FB80 records with the method you have chosen? Add REMOVECC keyword.
Back to top
View user's profile Send private message
mmcnary

New User


Joined: 07 Nov 2006
Posts: 3

PostPosted: Wed Apr 24, 2024 12:16 am
Reply with quote

Joerg.Findeisen wrote:
While your are having FIXLEN=800 how can it then be split to FB80 records with the method you have chosen? Add REMOVECC keyword.


I am sorry, I didn't include the entire process in my original post.

There are subsequent steps in the job that will copy the resulting records into an 80 byte file and do some other cleanup before passing the file over to the end process, which will execute NDM to copy the files referenced in the control cards to a different LPAR.

I hate to code control cards by hand when I can get the machine to generate them for me. So I came up with a process to automate this CC creation.

This process was copied from one I developed that creates DCLGEN control cards from the catalog and executes them to create an entire database worth of DCLGEN members. We use it to recreate them every time we have a data model change.
Back to top
View user's profile Send private message
Rohit Umarjikar

Global Moderator


Joined: 21 Sep 2010
Posts: 3053
Location: NYC,USA

PostPosted: Wed Apr 24, 2024 5:24 am
Reply with quote

It says clearly in the error message ..
either change the sort output dcb or change the build to match output dcb
Back to top
View user's profile Send private message
Joerg.Findeisen

Senior Member


Joined: 15 Aug 2015
Posts: 1260
Location: Bamberg, Germany

PostPosted: Wed Apr 24, 2024 10:06 am
Reply with quote

Change the BUILD as follows to fix the issue.
Code:
BUILD=(%01,/,%02,/,%03,/,%04,/,%05,/,%06,/,%07,/,%08,/,%09,/,%10)
Back to top
View user's profile Send private message
mmcnary

New User


Joined: 07 Nov 2006
Posts: 3

PostPosted: Wed Apr 24, 2024 11:53 pm
Reply with quote

Joerg.Findeisen wrote:
Change the BUILD as follows to fix the issue.
Code:
BUILD=(%01,/,%02,/,%03,/,%04,/,%05,/,%06,/,%07,/,%08,/,%09,/,%10)


I see that I missed a line break in the build statement.

Unfortunately, this did not fix the issue.

I am breaking a single 800 byte record into 9 800 byte records using the PARSE and BUILD commands. And I have attempted to do this with a variety of SORTOUT files.
Back to top
View user's profile Send private message
dneufarth

Active User


Joined: 27 Apr 2005
Posts: 420
Location: Inside the SPEW (Southwest Ohio, USA)

PostPosted: Thu Apr 25, 2024 12:28 am
Reply with quote

I’m confused. 9 output records, but 10 parsed variables in BUILD? Writing SORTOUT replacing SORTIN (same DSN)?
Back to top
View user's profile Send private message
Joerg.Findeisen

Senior Member


Joined: 15 Aug 2015
Posts: 1260
Location: Bamberg, Germany

PostPosted: Thu Apr 25, 2024 7:28 am
Reply with quote

To check what's wrong, add a reasonable amount of records to the STOPAFT. Write the SORTOUT to SYSOUT=* then. SORT will tell you the expected attributes in the WER110I msg. May it be of help.

Code:
OPTION COPY,STOPAFT=100
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> SYNCSORT

 


Similar Topics
Topic Forum Replies
No new posts VB to FB - Finding LRECL SYNCSORT 4
No new posts SORT deletes the SORTOUT file DFSORT/ICETOOL 8
No new posts A command to change LRECL of an exist... JCL & VSAM 7
No new posts Puzzled about output LRECL DFSORT/ICETOOL 4
No new posts Increase the Maximum Length of LRECL ... JCL & VSAM 5
Search our Forums:

Back to Top