|
View previous topic :: View next topic
|
| Author |
Message |
sudhakar1979
New User
Joined: 23 Aug 2005 Posts: 24
|
|
|
|
Hi,
I have 3 input files like this:
1st record: f1page1
---------
---------
2nd record f1page1
----------
----------
and 3 files has similar structure.
Now i want to split these 3 files into 10 different files based on f1page1. that means read the first file, if it is f1page1 then first file and if it is 25001 record then second file, if it is 50001 3rd file etc.
could you please provide me the jcl for this.
Sud |
|
| Back to top |
|
 |
Skolusu
Senior Member
Joined: 07 Dec 2007 Posts: 2205 Location: San Jose
|
|
|
|
| sudhakar1979 wrote: |
| Now i want to split these 3 files into 10 different files based on f1page1. that means read the first file, if it is f1page1 then first file and if it is 25001 record then second file, if it is 50001 3rd file etc. |
It is not clear as to what you are trying to do. Do you mean to say that would only split one file into 10 files based on the first record of each file?
Please show us a sample of input and desired output along with DCB properties of input and output files. |
|
| Back to top |
|
 |
sudhakar1979
New User
Joined: 23 Aug 2005 Posts: 24
|
|
|
|
Hi kolusu,
Here are the dcb parameters:
DCB=(PBS.MODEL,RECFM=FBA,LRECL=210,BLKSIZE=23310)
.
ok. i have changed my mind. now i want to split one file into 10 different files. the input file count may not be fixed count. it could be 50000 or 100000. i want to read the count of input file split it into 10 different file.
ex: if it is 100000 then it should be 10000 in each file.
as i showed in my earlier post
the input is
f1page1
------------
------------
------------
f1page1
------------
-----------
-----------
like this. each time we read 'f1page1' the counter needs to incremented. if 100000 file 1-10000 is file 1, 10001-20000 is file 2 like that.
Just let me know any other questions. |
|
| Back to top |
|
 |
sudhakar1979
New User
Joined: 23 Aug 2005 Posts: 24
|
|
|
|
And to be more on the input file
f1page1
------
-------- (some 100 lines)
f1page1
--------
-------- (some 90 lines)
f1page1
--------
----------( some 100 lines)
and like that. |
|
| Back to top |
|
 |
Terry Heinze
JCL Moderator
Joined: 14 Jul 2008 Posts: 1248 Location: Richfield, MN, USA
|
|
|
|
| Some people might mistakenly interpret your signature as an actual question. |
|
| Back to top |
|
 |
Skolusu
Senior Member
Joined: 07 Dec 2007 Posts: 2205 Location: San Jose
|
|
|
|
sudhakar1979,
It is still not clear as to what you want to do. Lets take a simple example.
Say you have one file and it has 12 records
| Code: |
01
02
03
04
05
06
07
08
09
10
11
12
|
Total no: of records = 12 and no: of files to be split = 10
So 12/10 = 1 (decimals are ignored)
So you can copy 1 record into each of the file but what do you want to do with the last 2 records? Do you want discard them? or do you want them in the last file?
Also what happens if the no: of records are less than 10? How do you split them? |
|
| Back to top |
|
 |
sudhakar1979
New User
Joined: 23 Aug 2005 Posts: 24
|
|
|
|
Hi Skolusu,
obviously the records should be in millions. there is no point of you know less than 10 records.
first of all is it possible to write 1st record in first file, 2nd record in second file.. etc and 11th record is again in 1st and 12th record is in 2nd file etc ? if yes, how can I acheive that.
and my file is like this.
F2PAGE1
P2PAGE1
197602958
F2PAGE1
P2PAGE1
188546625
F2PAGE1
P2PAGE1
233842522
if you see this layout the first 3 rows
F2PAGE1
P2PAGE1
197602958
should go into file-1
F2PAGE1
P2PAGE1
188546625
should go into file2
F2PAGE1
P2PAGE1
233842522
should go into file3 etc. so each time if you find 'F2PAGE1' that is the starting point for the next file record.
I hope you clear.
Thanks. |
|
| Back to top |
|
 |
Skolusu
Senior Member
Joined: 07 Dec 2007 Posts: 2205 Location: San Jose
|
|
|
|
| Quote: |
Hi Skolusu,
obviously the records should be in millions. there is no point of you know less than 10 records. |
sudhakar1979,
IMHO You need to write code which would cover all scenarios, not just your current day requirement. Just because you have million records today does not mean it will always be true. 2 years down the line you might encounter an empty file or file with just 1 record and the solution still need to function as is instead of abending. That is the reason I asked "what if?"
On the other hand I think your requirement is quite simple , you just complicated it for no reason. From your latest post I am assuming that you want to split a group of records into 10 individual files.
If that is the case then it is very easy to split using the new WHEN=GROUP function of DFSORT available with z/OS DFSORT V1R5 PTF UK90013 (July, 2008) like this:
| Code: |
//STEP0100 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=your input 210 byte file,
// DISP=SHR
//OUT01 DD SYSOUT=*
//OUT02 DD SYSOUT=*
//OUT03 DD SYSOUT=*
//OUT04 DD SYSOUT=*
//OUT05 DD SYSOUT=*
//OUT06 DD SYSOUT=*
//OUT07 DD SYSOUT=*
//OUT08 DD SYSOUT=*
//OUT09 DD SYSOUT=*
//OUT10 DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
INREC IFTHEN=(WHEN=GROUP,BEGIN=(1,7,CH,EQ,C'F2PAGE1'),
PUSH=(211:ID=1))
OUTFIL FNAMES=OUT01,BUILD=(1,210),INCLUDE=(211,1,ZD,EQ,1)
OUTFIL FNAMES=OUT02,BUILD=(1,210),INCLUDE=(211,1,ZD,EQ,2)
OUTFIL FNAMES=OUT03,BUILD=(1,210),INCLUDE=(211,1,ZD,EQ,3)
OUTFIL FNAMES=OUT04,BUILD=(1,210),INCLUDE=(211,1,ZD,EQ,4)
OUTFIL FNAMES=OUT05,BUILD=(1,210),INCLUDE=(211,1,ZD,EQ,5)
OUTFIL FNAMES=OUT06,BUILD=(1,210),INCLUDE=(211,1,ZD,EQ,6)
OUTFIL FNAMES=OUT07,BUILD=(1,210),INCLUDE=(211,1,ZD,EQ,7)
OUTFIL FNAMES=OUT08,BUILD=(1,210),INCLUDE=(211,1,ZD,EQ,8)
OUTFIL FNAMES=OUT09,BUILD=(1,210),INCLUDE=(211,1,ZD,EQ,9)
OUTFIL FNAMES=OUT10,BUILD=(1,210),INCLUDE=(211,1,ZD,EQ,0)
/* |
If you don't have the July, 2008 PTF installed, ask your System Programmer to install it (it's free).
For complete details on the new WHEN=GROUP and the other new functions available with PTF UK90013, see:
Use [URL] BBCode for External Links |
|
| Back to top |
|
 |
sudhakar1979
New User
Joined: 23 Aug 2005 Posts: 24
|
|
|
|
Hi Skolusu,
what a super man you are. unfortunately as you said i am getting syntax error. trying to resolve with system people. Is there any other way? just curious.
Thanks,
Sudhakar. |
|
| Back to top |
|
 |
Skolusu
Senior Member
Joined: 07 Dec 2007 Posts: 2205 Location: San Jose
|
|
|
|
| sudhakar1979 wrote: |
| as you said i am getting syntax error. trying to resolve with system people. Is there any other way? |
sudhakar1979,
run this step and show me the sysout.
| Code: |
//STEP0100 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD *
DUMMY RECORD
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
/* |
|
|
| Back to top |
|
 |
sudhakar1979
New User
Joined: 23 Aug 2005 Posts: 24
|
|
|
|
Hi Skolusu,
Here is the sysout.
| Code: |
SYNCSORT 1.3.0.0 IS NOT LICENSED FOR SERIAL 78921, TYPE 2097 611, LPAR
PRODUCT WILL STOP WORKING IN 41 DAYS UNLESS A VALID KEY IS INSTALLED.
SYSDIAG= 115634, 1368960, 1368960, 2015106
6,912K BYTES OF VIRTUAL STORAGE AVAILABLE, MAX REQUESTED,
64K BYTES RESERVE REQUESTED, 272K BYTES USED
4K BYTES OF EMERGENCY SPACE ALLOCATED
SORTIN : RECFM=FB ; LRECL= 80; BLKSIZE= 80
SORTOUT : RECFM=FB ; LRECL= 80; BLKSIZE= 80
4,860K BYTES OF VIRTUAL STORAGE AVAILABLE ABOVE THE 16MEG LINE,
0 BYTES RESERVE REQUESTED, 156K BYTES USED
SYNCSMF CALLED BY SYNCSORT; RC=0000
SYNCSORT GLOBAL DSM SUBSYSTEM ACTIVE
BSAM WAS USED FOR SORTIN
BSAM WAS USED FOR SORTOUT
RCD IN 1, OUT 1
RELEASE 1.3 BATCH 0485 TPF LEVEL 0.0
END SYNCSORT -
,STEP0100,,DIAG=A200,600A,8AAC,0046,EA52,4CA3,0 |
|
|
| Back to top |
|
 |
Terry Heinze
JCL Moderator
Joined: 14 Jul 2008 Posts: 1248 Location: Richfield, MN, USA
|
|
|
|
Ahhhhhhhhhh, the truth finally comes out!  |
|
| Back to top |
|
 |
Skolusu
Senior Member
Joined: 07 Dec 2007 Posts: 2205 Location: San Jose
|
|
|
|
Sudhakar1979,
From your sysout messages it is evident that you are using syncsort. I'm a DFSORT developer. DFSORT and Syncsort are competitive products. I'm happy to answer questions on DFSORT and DFSORT's ICETOOL, but I don't answer questions on Syncsort. |
|
| Back to top |
|
 |
sudhakar1979
New User
Joined: 23 Aug 2005 Posts: 24
|
|
|
|
| Not a problem. i have written a cobol problem to handle this, thanks for all replies and your time. |
|
| Back to top |
|
 |
|
|
 |
All times are GMT + 6 Hours |
|