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

Continuation of statements to next line


IBM Mainframe Forums -> JCL & VSAM
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
kaleelahamed

New User


Joined: 08 Jun 2006
Posts: 45
Location: Trumbull, CT

PostPosted: Wed Dec 12, 2007 11:02 am
Reply with quote

I am trying to run the following JCL. My requirement is like split my 32,000,000 records file into 32 parts, with 1,000,000 records in each of the OUT1 to OUT32 output files.

Code:

//SORTING  EXEC PGM=SYNCTOOL
//TOOLMSG DD SYSOUT=*                                               
//DFSMSG DD SYSOUT=*                                               
//SORTIN   DD DSN=KAHAMED.KPLL310M.STEP04B.TABFILE.WOUTINDX,DISP=SHR
//OUT1 DD DSN=WORKT.KPLL310M.STEP04B.TABFILE.WOUTIND1,             
//          UNIT=SYSDA,SPACE=(9999,(9999,9999),RLSE),               
//          DISP=(,CATLG)                             
//OUT2 DD
...
//TOOLIN    DD *                                                   
   OPTION COPY                                                     
   OUTFIL SPLIT1R=100000,FNAMES=  (OUT1,OUT2,OUT3,OUT4,OUT5,OUT6,OUT7,
       OUT8,OUT9,OUT10,OUT11,OUT12,OUT13,
       OUT14,OUT15,OUT16,OUT17,OUT18,OUT19,                         
       OUT20,OUT21,OUT22,OUT23,OUT24,OUT25,                         
       OUT26,OUT27,OUT28,OUT29,OUT30,OUT31,                         
       OUT32)                                                       
/*   


But I get error like the following.
Code:
SYT048E  STATEMENT DOES NOT BEGIN WITH A VALID OPERATOR
                                                       
                OUT8,OUT9,OUT10,OUT11,OUT12,OUT13,     
SYT048E  STATEMENT DOES NOT BEGIN WITH A VALID OPERATOR
                                                       
                OUT14,OUT15,OUT16,OUT17,OUT18,OUT19,   
SYT048E  STATEMENT DOES NOT BEGIN WITH A VALID OPERATOR
                                                       
                OUT20,OUT21,OUT22,OUT23,OUT24,OUT25,   
SYT048E  STATEMENT DOES NOT BEGIN WITH A VALID OPERATOR
                                                       
                OUT26,OUT27,OUT28,OUT29,OUT30,OUT31,   
SYT048E  STATEMENT DOES NOT BEGIN WITH A VALID OPERATOR
                                                       
                OUT32)                                 
SYT048E  STATEMENT DOES NOT BEGIN WITH A VALID OPERATOR


Can you please let me know how to continue the same statement in next line so that i can capture my 32 datasets into the expected 32 files in a single step?
Back to top
View user's profile Send private message
murmohk1

Senior Member


Joined: 29 Jun 2006
Posts: 1436
Location: Bangalore,India

PostPosted: Wed Dec 12, 2007 11:13 am
Reply with quote

Kaleel,

Quote:
//SORTING EXEC PGM=ICETOOL


Quote:
SYT048E STATEMENT DOES NOT BEGIN WITH A VALID OPERATOR


I believe your site has 'syncsort' installed not DFSORT. Replace ICETOOL with SYNCTOOL and try.
Back to top
View user's profile Send private message
shankar.v

Active User


Joined: 25 Jun 2007
Posts: 196
Location: Bangalore

PostPosted: Wed Dec 12, 2007 12:28 pm
Reply with quote

Aaru,
Quote:
Won't the SYNCSORT messages start with WER?

SYNCSORT messages starts with WER.. for SYSIN DD or ....CNTL DD cards and starts with SYT..... for TOOLMSG DD cards

kaleelahamed,

REPLACE
PGM=ICETOOL with PGM=SORT or PGM=SYNCSORT or PGM=ICEMAN ,
TOOLIN DD * with SYSIN DD * and
SPLIT1R with SPLITBY
OR
Code as follows
Code:
//TOOLIN DD *
 COPY FROM(SORTIN) TO(OUT1) USING(CTL1)
/*
//CTL1CNTL DD *
    OUTFIL SPLITBY=100000,FNAMES=(OUT1,OUT2,OUT3,OUT4,OUT5,OUT6,OUT7,
       OUT8,OUT9,OUT10,OUT11,OUT12,OUT13,                           
       OUT14,OUT15,OUT16,OUT17,OUT18,OUT19,                         
       OUT20,OUT21,OUT22,OUT23,OUT24,OUT25,                         
       OUT26,OUT27,OUT28,OUT29,OUT30,OUT31,                         
       OUT32) 

SPLIT1R is not available in SYNCSORT for Z/OS 1.2.3, so use SPLITBY.
Suppose if your file has more than 32,000,000 records, SPLITBY will do a cycle. i.e, it will append 3200001 to 3300000 records in OUT1 and 3300001 to 3400000 records in OUT2 and so on...
Suppose if your file has more than 32,000,000 records, DFSORT SPLIT1R will put 3100001 to all records in OUT32
Back to top
View user's profile Send private message
kaleelahamed

New User


Joined: 08 Jun 2006
Posts: 45
Location: Trumbull, CT

PostPosted: Wed Dec 12, 2007 2:53 pm
Reply with quote

shankar.v,

your code is working perfect. Even I dint change the PGM parameter. It ran fine with expected results by using PGM=ICETOOL itself.

Thanks once again.
Back to top
View user's profile Send private message
shankar.v

Active User


Joined: 25 Jun 2007
Posts: 196
Location: Bangalore

PostPosted: Wed Dec 12, 2007 3:40 pm
Reply with quote

kaleelahamed,
Quote:
your code is working perfect. Even I dint change the PGM parameter. It ran fine with expected results by using PGM=ICETOOL itself.

My previously posted message is for suggest you to make some modifications in PGM, TOOLIN and SPLIT1R

OR

to use the code(TOOLIN DD * and CTL1CNTL) posted.

And also while using PGM=SORT/SYNCSORT/ICEMAN, SYSOUT DD SYSOUT=* is mandatory and DFSMSG DD and TOOLMSG DD is not necessary.
Back to top
View user's profile Send private message
Frank Yaeger

DFSORT Developer


Joined: 15 Feb 2005
Posts: 7129
Location: San Jose, CA

PostPosted: Wed Dec 12, 2007 11:50 pm
Reply with quote

Quote:
SPLIT1R is not available in SYNCSORT for Z/OS 1.2.3, so use SPLITBY.


Don't assume you can use SPLITBY instead of SPLIT1R without understanding the difference between them. SPLIT1R will write contiguous records to each file because it puts any excess records (3300001-n) in the last file. SPLITBY can write non-contiguous records to a file because it starts over with the first file for any excess records.

For example, if your input file has 3300200 records, SPLIT1R will put records 3200001-3300200 in OUT32 - the records will be contiguous. SPLITBY will put records 3200001-3300000 in OUT32, but will put records 3300001-3300200 in OUT1, so OUT1 will have non-contiguous records (1-100000,3300001-3300200).

Note that DFSORT supports SPLIT1R, but Syncsort doesn't.
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 -> JCL & VSAM

 


Similar Topics
Topic Forum Replies
No new posts Write line by line from two files DFSORT/ICETOOL 7
No new posts Calling DFSORT from Cobol, using OUTF... DFSORT/ICETOOL 5
No new posts Reading dataset in Python - New Line ... All Other Mainframe Topics 22
No new posts rewrite same SAY line CLIST & REXX 8
No new posts Merge files with a key and insert a b... DFSORT/ICETOOL 6
Search our Forums:

Back to Top