|
View previous topic :: View next topic
|
| Author |
Message |
snammi
New User
Joined: 18 Mar 2009 Posts: 11 Location: Bangalore
|
|
|
|
Hi All,
I am trying to split input file dynamically into 3 files using DFSORT. I came across an example in the DFSORT PDF file which matches my requirment. I altered my test jcl accordingly but its failing with Userabend16 when I submit. below is the code and error log. Please review and let me know what I am missing in the jcl. I changed and tried different combinations to resolve the error.
Thank you.
| Code: |
//STEPICE EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//*
//IN DD DSN=XXX.CSC916.EXTR.AUG21.SORT,DISP=SHR
//T1 DD DSN=&&T1,UNIT=SYSDA,SPACE=(TRK,(1,1)),DISP=(NEW,PASS)
//C1 DD DSN=&&C1,UNIT=SYSDA,SPACE=(TRK,(1,1)),DISP=(NEW,PASS)
//CTL3CNTL DD *
OUTFIL FNAMES=(OUT01,OUT02,OUT03),
// DD DSN=*.C1,VOL=REF=*.C1,DISP=(OLD,PASS)
//OUT01 DD DSN=USR204T.XXX.EXTR1,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,
// SPACE=(CYL,(200,60),RLSE),
// RECFM=FB,LRECL=600,BLKSIZE=0
//OUT02 DD DSN=USR204T.XXX.EXTR2,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,
// SPACE=(CYL,(200,60),RLSE),
// RECFM=FB,LRECL=600,BLKSIZE=0
//OUT03 DD DSN=USR204T.XXX.EXTR3,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,
// SPACE=(CYL,(200,60),RLSE),
// RECFM=FB,LRECL=600,BLKSIZE=0
//TOOLIN DD *
COPY FROM(IN) USING(CTL1)
COPY FROM(T1) TO(C1) USING(CTL2)
COPY FROM(IN) USING(CTL3)
/*
//CTL1CNTL DD *
OUTFIL FNAMES=T1,REMOVECC,NODETAIL,
TRAILER1=(COUNT=(M11,LENGTH=8))
/*
//CTL2CNTL DD *
OUTREC IFOUTLEN=80,
IFTHEN=(WHEN=INIT,BUILD=(1:1,8,ZD,DIV,+03,TO=ZD,LENGTH=8)),
IFTHEN=(WHEN=(1,8,ZD,GT,+0),
BUILD=(2X,C'SPLIT1R=',1,8)),
IFTHEN=(WHEN=NONE,
BUILD=(2X,C'SPLIT1R=1'))
/*
//
|
Error Log
| Code: |
WER416B TOTAL OF 2 EXCP'S ISSUED FOR COPYING
WER054I RCD IN 1, OUT 1
WER169I RELEASE 1.4 BATCH 0525 TPF LEVEL 1.0
WER052I END SYNCSORT - YRP246H,STEPICE,,DIAG=C200,404E,EA82,0066,8A7E,6DC2,2AC
SYNCSORT FOR Z/OS 1.4.1.0RI U.S. PATENTS: 4210961, 5117495 (C) 2010 SYNCSO
ROADWAY z/OS 1.13.0
SYNCSORT LICENSED FOR CPU SERIAL NUMBER 27943, MODEL 2094 503 LICEN
CTL3CNTL :
OUTFIL FNAMES=(OUT01,OUT02,OUT03),
SPLIT1R=0004265C
*
WER428I CALLER-PROVIDED IDENTIFIER IS "0003"
WER268A OUTFIL STATEMENT : SYNTAX ERROR
WER211B SYNCSMF CALLED BY SYNCSORT; RC=0000
WER449I SYNCSORT GLOBAL DSM SUBSYSTEM ACTIVE
******************************* BOTTOM OF DATA ******************************** |
|
|
| Back to top |
|
 |
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
Well, you may be trying to do it with DFSORT, but you are using SyncSORT.
Do you have 42653 records on your file?
Why don't you use ICETOOL's COUNT operator?
You'd be better without the LRECL on your outputs. Why so much SPACE allocated?
From your input DSN, why don't you out a "count" while you're already processing that data elsewhere? |
|
| Back to top |
|
 |
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
| The answer to why you got the C is TO=ZD. If you change that to TO=ZDF your long-winded approach should work. Note, M11 is SyncSORT's default edit mask, so needn't be provided. |
|
| Back to top |
|
 |
PeterHolland
Global Moderator

Joined: 27 Oct 2009 Posts: 2481 Location: Netherlands, Amstelveen
|
|
|
|
| Quote: |
| Code: |
//CTL3CNTL DD *
OUTFIL FNAMES=(OUT01,OUT02,OUT03),
// DD DSN=*.C1,VOL=REF=*.C1,DISP=(OLD,PASS)
|
|
Maybe you look at that. |
|
| Back to top |
|
 |
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
DSN=*.C1 contains the problem, but isn't what caused the problem.
The division will produce a signed result for positives when TO=ZD is specified. To get the "unsigned" result for positives, TO=ZDF is required. |
|
| Back to top |
|
 |
snammi
New User
Joined: 18 Mar 2009 Posts: 11 Location: Bangalore
|
|
|
|
Hi Bill,
My input file contains more than 120000 on any given day and it would be emailed in subsequent steps. Due to size of the file, email program is giving out error so we have decided to split the file into 3 equal parts and email them individually. Since I do not know the size of input file prior, I have defined extra space for the output files. The input file mentioned in the above code has 127961 records and 127961/3 is 42653.6 and when commented out the
| Code: |
| // DD DSN=*.C1,VOL=REF=*.C1,DISP=(OLD,PASS) |
and removed the coma it wrote all records into 3 output files instead of splitting the records equally.
I am not processing the file else where if that was the case, I would have used 3 output files and split the records programattically.
Thank you for your replies. |
|
| Back to top |
|
 |
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
| Did you do what I suggested, and change the TO=ZD to TO=ZDF? |
|
| Back to top |
|
 |
snammi
New User
Joined: 18 Mar 2009 Posts: 11 Location: Bangalore
|
|
|
|
Yes Bill. I just did that change and it worked. Thank You  |
|
| Back to top |
|
 |
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
120,000 records is under 90 cylinders. You're chopping that in three, because 120,000 records (or 90 cylinders) is too big for the email attachment - yet you have defined primary space for the chopped-down as... 200 cylinders, in case it grows?
You should be able to establish pretty accurately how much data is "too much" for the email attachment. Then limit your split outputs to that, no secondary space, and talk to your Production Control to check that running out of space will cause an abend.
If you know there is something that is not going to work, there's no point in allowing for it, is there? That'll just waste time.
| Quote: |
I am not processing the file else where if that was the case, I would have used 3 output files and split the records programattically. |
Really? Why is this the DSN?
| Code: |
| XXX.CSC916.EXTR.AUG21.SORT |
I'd imagine something had extracted data for logical-date Aug 21 and then SORTed it before it got to you. Even if that was one SORT step, the count or the split could have been done there.
I don't know why you thought that removing your concatenation and the comma would do anything other than exactly what you stated it did. Did you read what I wrote?
| Quote: |
DSN=*.C1 contains the problem, but isn't what caused the problem.
The division will produce a signed result for positives when TO=ZD is specified. To get the "unsigned" result for positives, TO=ZDF is required. |
|
|
| Back to top |
|
 |
|
|
 |
All times are GMT + 6 Hours |
|