SPLIT1R error



Support for NetApp SyncSort for z/OS, Visual SyncSort, SYNCINIT, SYNCLIST and SYNCTOOL

Re: SPLIT1R error

Postby BillyBoyo » Sat Jun 29, 2013 3:10 am

Your OUTFIL is missing a comma. SPLIT1R is an OUTFIL optional parameter.
BillyBoyo
Global moderator
 
Posts: 3804
Joined: Tue Jan 25, 2011 12:02 am
Has thanked: 22 times
Been thanked: 265 times

Re: SPLIT1R error

Postby luckyboyroh » Sat Jun 29, 2013 10:48 am

Thanks Billyboyo. The comma mistake is not corrected. I changed it now. But still getting same abend :( really sorry for disturbance. but im struggling with this

new changed parm:
OUTFIL FNAMES=(OUT01,OUT02,OUT03,OUT04,OUT05),

Still getting the same error
SYT000I  SYNCTOOL RELEASE 1.6.2 - COPYRIGHT 2007  SYNCSORT INC.
SYT001I  INITIAL PROCESSING MODE IS "STOP"
SYT002I  "TOOLIN" INTERFACE BEING USED

           COPY FROM(IN) USING(CTL1)
SYT020I  SYNCSORT CALLED WITH IDENTIFIER "0001"
SYT030I  OPERATION COMPLETED WITH RETURN CODE 0

           COPY FROM(T1) TO(C1) USING(CTL2)
SYT020I  SYNCSORT CALLED WITH IDENTIFIER "0002"
SYT030I  OPERATION COMPLETED WITH RETURN CODE 0

           COPY FROM(IN) USING(CTL3)
SYT020I  SYNCSORT CALLED WITH IDENTIFIER "0003"


WER276B  SYSDIAG= 9296132, 11942819, 11942819, 2633250
WER164B  6,884K BYTES OF VIRTUAL STORAGE AVAILABLE, MAX REQUESTED,
WER164B     0 BYTES RESERVE REQUESTED, 1,098,096 BYTES USED
WER146B  32K BYTES OF EMERGENCY SPACE ALLOCATED
WER108I  T1       : RECFM=VB   ; LRECL=  2004; BLKSIZE= 27998
WER237I  OUTREC RECORD LENGTH =   100
[u][i][b]WER110I  C1       : RECFM=VB   ; LRECL=   100; BLKSIZE= 27998[/b][/i][/u]
WER410B  5,856K BYTES OF VIRTUAL STORAGE AVAILABLE ABOVE THE 16MEG LINE,
WER410B     0 BYTES RESERVE REQUESTED, 108,416 BYTES USED
WER211B  SYNCSMF  CALLED BY SYNCSORT; RC=0000
WER449I  SYNCSORT GLOBAL DSM SUBSYSTEM ACTIVE
WER416B  T1       : EXCP'S=1,UNIT=(VIO)
WER416B  C1       : EXCP'S=1,UNIT=(VIO)
WER416B  TOTAL OF 2 EXCP'S ISSUED FOR COPYING
WER054I  RCD IN          1, OUT          1
WER169I  RELEASE 1.3 BATCH 0506 TPF LEVEL 2.1
WER052I  END SYNCSORT - P46CCRB2,STEP001,,DIAG=E200,6004,CAAA,0046,AA56,4C8
SYNCSORT FOR Z/OS  1.3.2.1RI   U.S. PATENTS: 4210961, 5117495   (C) 2007 SY
                                                      z/OS   1.12.0
SYNCSORT LICENSED FOR CPU SERIAL NUMBER 60BE0, MODEL 2817 752             L
CTL3CNTL :
  OUTFIL FNAMES=(OUT01,OUT02,OUT03,OUT04,OUT05),                        000
      SPLIT1R=1480000000
*
WER428I  CALLER-PROVIDED IDENTIFIER IS "0003"
WER001A  COL 1 OR 1-15 NOT BLANK
WER211B  SYNCSMF  CALLED BY SYNCSORT; RC=0000
WER449I  SYNCSORT GLOBAL DSM SUBSYSTEM ACTIVE



is it because the c1 is defined with lrecl 100? please help . myy input dataset is of lrecl20004(vb) and output also should be same.

please help. thanks
luckyboyroh
 
Posts: 35
Joined: Wed Jan 16, 2013 4:05 pm
Has thanked: 3 times
Been thanked: 0 time

Re: SPLIT1R error

Postby luckyboyroh » Sat Jun 29, 2013 11:14 am

i changed the parm to make c1 also with LRECL=2004. but still getting error.

changed parm
 OUTREC BUILD=(1,4,2X,C'SPLIT1R=',1,10,ZD,DIV,+5,EDIT=(TTTTTTTTTT),
 2004:X)


error:
WER276B  SYSDIAG= 9299070, 11945757, 11945757, 2633250
WER164B  6,884K BYTES OF VIRTUAL STORAGE AVAILABLE, MAX REQUESTED,
WER164B     0 BYTES RESERVE REQUESTED, 1,098,096 BYTES USED
WER146B  32K BYTES OF EMERGENCY SPACE ALLOCATED
WER108I  T1       : RECFM=VB   ; LRECL=  2004; BLKSIZE= 27998
WER237I  OUTREC RECORD LENGTH =  2004
WER110I  C1       : RECFM=VB   ; LRECL=  2004; BLKSIZE= 27998
WER410B  5,856K BYTES OF VIRTUAL STORAGE AVAILABLE ABOVE THE 16MEG LINE,
WER410B     0 BYTES RESERVE REQUESTED, 108,416 BYTES USED
WER211B  SYNCSMF  CALLED BY SYNCSORT; RC=0000
WER449I  SYNCSORT GLOBAL DSM SUBSYSTEM ACTIVE
WER416B  T1       : EXCP'S=1,UNIT=(VIO)
WER416B  C1       : EXCP'S=1,UNIT=(VIO)
WER416B  TOTAL OF 2 EXCP'S ISSUED FOR COPYING
WER054I  RCD IN          1, OUT          1
WER169I  RELEASE 1.3 BATCH 0506 TPF LEVEL 2.1
WER052I  END SYNCSORT - P46CCRB2,STEP001,,DIAG=EC00,6288,C022,00CC,A4DE,48A3,8
SYNCSORT FOR Z/OS  1.3.2.1RI   U.S. PATENTS: 4210961, 5117495   (C) 2007 SYNCS
                                                      z/OS   1.12.0
SYNCSORT LICENSED FOR CPU SERIAL NUMBER 60BE0, MODEL 2817 752             LICE
CTL3CNTL :
  OUTFIL FNAMES=(OUT01,OUT02,OUT03,OUT04,OUT05),                        000100
 M    SPLIT1R=1480000000
*
WER428I  CALLER-PROVIDED IDENTIFIER IS "0003"
WER001A  COL 1 OR 1-15 NOT BLANK
WER211B  SYNCSMF  CALLED BY SYNCSORT; RC=0000
WER449I  SYNCSORT GLOBAL DSM SUBSYSTEM ACTIVE


I am not sure how that 'M' IS GETTING GENERATED IN OUTFIL STATEMENT.
luckyboyroh
 
Posts: 35
Joined: Wed Jan 16, 2013 4:05 pm
Has thanked: 3 times
Been thanked: 0 time

Re: SPLIT1R error

Postby luckyboyroh » Sat Jun 29, 2013 12:50 pm

Hi All,

I converted the input from VB to FB format and changed my parms and ran the job. it ran fine. thanks all for your help. but still wondering why VB is not working. please let me know if anyone came thru same case.
luckyboyroh
 
Posts: 35
Joined: Wed Jan 16, 2013 4:05 pm
Has thanked: 3 times
Been thanked: 0 time

Re: SPLIT1R error

Postby BillyBoyo » Sat Jun 29, 2013 3:44 pm

Your generated control card should always have been a fixed-length of 80.

It looks like, once you had it as "variable", SORT still read it is fixed, but treated the RDW (the first four bytes of the variable-length record) as "data". Unfortunately, in your attempts after fixing the comma, none of the values in the RDW were "displayable".

When you managed to change its length to 2004, however, that did something else. A record-length is held in a two-byte binary field. 2004 in binary (expressed as hexadecimal) is X'07D4', the X'D4' part of that, is "visible" as a letter "M". So that's where the letter M came from, as well as a "character" in "front of" and two "after" that that you can't see, and the earlier "invisible" characters giving you the problems.

There is no need for you to make the data Fixed. Did you do that? The only thing you need to be fixed is the generation of the control cards.
BillyBoyo
Global moderator
 
Posts: 3804
Joined: Tue Jan 25, 2011 12:02 am
Has thanked: 22 times
Been thanked: 265 times

Re: SPLIT1R error

Postby luckyboyroh » Sun Jun 30, 2013 9:16 am

thanks billyboyo for the detailed explanation. got your point. YES, i changed my input from vb to fb and then ran the job again it worked.

Also the conrol cards are of FB,LRECL=80(TST4.UTC.CPY)... i am not getting what u meant by generation of control cards. Should i need to change the LRECL of this to what?
thanks in advance.
luckyboyroh
 
Posts: 35
Joined: Wed Jan 16, 2013 4:05 pm
Has thanked: 3 times
Been thanked: 0 time

Re: SPLIT1R error

Postby BillyBoyo » Mon Jul 01, 2013 3:00 am

You pass your data file twice.

The first time you simply produce a record with a count of the records on the file (it would be better to use the COUNT operator for that, since it is its sole purpose).

Then, before you process the data again, you generate Sort Control Cards which take account of the number of records on your file for effecting the SPLIT1R.

Because your source for the Control Cards is the TRAILER1 from your data file, you have, without realising it, generated Control Cards which are variable-length.

With what you have, if you add BUILD=(1,10) into your first CNTL, your count will be fixed-length instead of variable-length, and thus your Control Cards will be fixed, but your data can remain variable (which may save a lot of DASD over a large amount of records).

Then you finally process the data, using the "dynamic" SPLIT1R.

Obviously you are processing your entire data file twice. If there is somewhere else, earlier, where it is read for some other purpose, that would be the best place to create the count, using TRAILER1 if it is a SORT step, or a bit of appropriate code if it is a program.
BillyBoyo
Global moderator
 
Posts: 3804
Joined: Tue Jan 25, 2011 12:02 am
Has thanked: 22 times
Been thanked: 265 times

Re: SPLIT1R error

Postby luckyboyroh » Mon Jul 01, 2013 6:06 pm

billyboyo,thanks
i am now taking the count of inp files using TRAILER in first step.
i have doubt regarding this point of urz
Then, before you process the data again, you generate Sort Control Cards which take account of the number of records on your file for effecting the SPLIT1R

could u pls help how to acheive this?u mean passing the count from prev step as parm to current step?

With what you have, if you add BUILD=(1,10) into your first CNTL, your count will be fixed-length instead of variable-length, and thus your Control Cards will be fixed, but your data can remain variable (which may save a lot of DASD over a large amount of records).

i will replace with outrec build=(1,10) and check how it works. pls clarify on second step. thanks
luckyboyroh
 
Posts: 35
Joined: Wed Jan 16, 2013 4:05 pm
Has thanked: 3 times
Been thanked: 0 time

Re: SPLIT1R error

Postby BillyBoyo » Mon Jul 01, 2013 11:19 pm

You are:

Reading your entire input dataset to get a count of how many records it contains;
Using the count obtained to generate the SPLIT1R value to append to an OUTFIL to divide your data equally between five output datasets*;
Reading your entire input dataset again to effect the split into five.

* I cannot see how you actually append the value to your CNTL file, but you got a failure, so I'm assuming you'd done it somehow, somewhere else.

The SPLIT1R value you showed is for 1.48 billion records. Implication being that your input dataset contains close to 7.5 billion records. Does it? Even if it contains only 75 million records, or 7.5 million records, it is wasteful to read the file simply to get a count. If you really have 7.5 billion records it is absurd to read the entire file just to get a count.

Best would be to source the count from "something" which is already reading all the data. Or to just go with a good estimate. Or to use a different "split" type. Choice depends on your actual requirement for the output datasets.

The generation of the OUTFIL (or part of) is trivial. There is absolutely no need for it to be jammed into the same "step" as is processing the data, it will just cause confusion and has already hidden from you what is happening, and caused you to think that you should treat your data as fixed-length instead of variable (which could be catastrophic for your DASD usage with 75 billion, or considerably fewer, records).

So, how many records are actually on your input? What is their average size?

What are the requirements for the "split" into five output datasets?

How is the third CNTL file actually getting updated? There is processing to generate &&C1, but you have not shown where it is used.
BillyBoyo
Global moderator
 
Posts: 3804
Joined: Tue Jan 25, 2011 12:02 am
Has thanked: 22 times
Been thanked: 265 times

Re: SPLIT1R error

Postby luckyboyroh » Tue Jul 02, 2013 9:16 am

thanks,
1)the number of recs that i get in the input will be around 400,000 (4 lakhs).Maximum Lrecl will be 1300. average around the same.
2)No particular requirement, it needs to be split sequentially,not round-robbin way. And the input count may vary each time ,based on input count, i need to split it into 5 equal output datasets.
Edited as not everyone knows what a 'lakh' is - hopefully I got it right - nic
luckyboyroh
 
Posts: 35
Joined: Wed Jan 16, 2013 4:05 pm
Has thanked: 3 times
Been thanked: 0 time

PreviousNext

Return to Syncsort/Synctool

 


  • Related topics
    Replies
    Views
    Last post