View previous topic :: View next topic
|
Author |
Message |
Anuj Dhawan
Superior Member
Joined: 22 Apr 2006 Posts: 6248 Location: Mumbai, India
|
|
|
|
Hi,
I got one query to ask for the below JCL, which can be used to copy file from tape to DASD.
Code: |
//STEP1OF1 EXEC PGM=IEBGENER
//STATOUT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSOUD DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD DUMMY
//SYSUT1 DD DISP=SHR,DSN=TAPE FILE
//SYSUT2 DD DSN=DASD FILE
// DISP=(NEW,CATLG,DELETE),
// UNIT=(SYSDA,3),
// SPACE=(TRK,(15,30),RLSE),
// DCB=*.SYSUT1 <--- DCB CHARACTERISCS OF INPUT |
This JCL is with IEBGENER which make use of
where SYSUT1 is for Tape file & above DCB is coded for DASD file(DD name SYSUT2). From the posts of experinced Mainframees, I learn that this is a bad coding habit, as coding this will make system to use the BLKSIZE of the tape dataset & I'll waste a lot of DASD space by bad blocking.
I would like to know the physical significance of the line
Quote: |
I'll waste a hell of a lot of DASD space by bad blocking. |
My query is, what actually happens at system level when one use such a code?
I hope, my query is clear. Please advise. |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
|
|
|
|
Hello Anuj,
When creating a dasd file, it is more efficient to let the system determine the block size. When your dasd is upgraded, the system will automatically consider the dasd device and select the "best" blocksize.
When copying a file and the dcb for SYSUT2 is not specified and the devices are the same, the dcb from the input is used for the output (there is a message in the sysout saying the input dcb was used). I'm not sure what happens when the devices are different, but it would not be hard to test. |
|
Back to top |
|
|
expat
Global Moderator
Joined: 14 Mar 2007 Posts: 8796 Location: Welsh Wales
|
|
|
|
The optimum blocksize for tape is 32760, whilst for 3390 is 27998.
Using 27998 each track will contain 2 blocks.
An example using FB, 80
For tape the blksize will be 32720, with each block containing 409 records.
For 3390 the blksize should be 27920, with each block containing 349 records. 2 blocks per track = 2 * 349 = 698 records per track.
Code DCB=*.SYSUT1 you will then use BLKSIZE=32720 and you only get one block per track with 409 records, instead of 698 when you use BLKSIZE=27920.
(189 / 698) * 100 = 27%. Therefor you are only utilising 73% of the available DASD capacity. Which means that you need to allocate 27% more DASD to store the same number of records. |
|
Back to top |
|
|
Anuj Dhawan
Superior Member
Joined: 22 Apr 2006 Posts: 6248 Location: Mumbai, India
|
|
|
|
Thanks Dick.
Thanks expat, now that's a typical expat explanation . But, now I've got some queris to ask about, listed below:
expat wrote: |
Using 27998 each track will contain 2 blocks. |
Please let me know, what is the number of blocks per track for tape?
expat wrote: |
(189 / 698) * 100 = 27%. |
I think in this calculaiton, numerator should be 289.[= (no. of records per track in DASD) - ( no. of records per track on tape)= (2*349)- (409)=698 - 409 = 289]
Am I right with the calculations, if yes, then the code DCB=*.SYSUT1 will waste (289/698)*100 ~= 42% of DASD. Please advise. |
|
Back to top |
|
|
expat
Global Moderator
Joined: 14 Mar 2007 Posts: 8796 Location: Welsh Wales
|
|
|
|
anuj_model
Good spot, well done, yes it is 42%.
Damn, I am getting old now that I need to use CALCULATOR for simple sums
I am impressed - this means that some of you actually read what I put here |
|
Back to top |
|
|
expat
Global Moderator
Joined: 14 Mar 2007 Posts: 8796 Location: Welsh Wales
|
|
|
|
Quote: |
Please let me know, what is the number of blocks per track for tape? |
Tapes don't work like that. They just get written on, but like DASD, the bigger the block size the less inter block gaps there are, so the higher the media utilisation is. |
|
Back to top |
|
|
Anuj Dhawan
Superior Member
Joined: 22 Apr 2006 Posts: 6248 Location: Mumbai, India
|
|
|
|
expat wrote: |
Damn, I am getting old now |
No expat, this is not that way, actually you are getting more & more experienced, and Youths like me can look up to you
expat wrote: |
I am impressed |
Thanks for the kind words.
expat wrote: |
this means that some of you actually read what I put here |
Yes, some member are very experinced, techie & humble at the same time. What else do I need to have..a lot of my queris get solved without any dollor-cheque.
Thanks again for being here. |
|
Back to top |
|
|
expat
Global Moderator
Joined: 14 Mar 2007 Posts: 8796 Location: Welsh Wales
|
|
|
|
Quote: |
..a lot of my queris get solved without any dollor-cheque. |
Invoice in the post |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
|
|
|
|
Quote: |
What else do I need to have..a lot of my queris get solved without any dollor-cheque. |
We're just setting you up for a really big bill later. . . |
|
Back to top |
|
|
Anuj Dhawan
Superior Member
Joined: 22 Apr 2006 Posts: 6248 Location: Mumbai, India
|
|
|
|
expat wrote: |
Invoice in the post |
dick scherrer wrote: |
We're just setting you up for a really big bill later. . . |
Ah..aa.. I am ready for big bills if you guys gonna be around till I pay my bills. |
|
Back to top |
|
|
mmwife
Super Moderator
Joined: 30 May 2003 Posts: 1592
|
|
|
|
Hi Anju,
Give "DCB=*.SYSUT1,BLKSIZE=0" a try, it should o'ride the tape blksize. |
|
Back to top |
|
|
Anuj Dhawan
Superior Member
Joined: 22 Apr 2006 Posts: 6248 Location: Mumbai, India
|
|
|
|
Hi,
Tried this way
Code: |
//STEP1OF1 EXEC PGM=IEBGENER
//SYSIN DD DUMMY
//SYSUT1 DD DISP=SHR,DSN=TAPE FILE
//SYSUT2 DD DSN=HLQ.FILE.ON.DASD.BLKSIZE.ZERO,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,
// SPACE=(TRK,(15,30),RLSE),
// BLKSIZE=0 |
And
Code: |
//STEP1OF1 EXEC PGM=IEBGENER
//SYSIN DD DUMMY
//SYSUT1 DD DISP=SHR,DSN=TAPE FILE
//SYSUT2 DD DSN=HLQ.FILE.ON.DASD.SYSUT1
// DISP=(NEW,CATLG,DELETE),
// UNIT=(SYSDA,3),
// SPACE=(TRK,(15,30),RLSE),
// DCB=*.SYSUT1 |
in both the cases the DCB of SYSUT2 file were
Code: |
General Data Current Allocation
Management class . . : TPS035 Allocated cylinders : 1
Storage class . . . : DEFAULT Allocated extents . : 1
Volume serial . . . : MIZABD
Device type . . . . : 3390
Data class . . . . . : NONSTD Current Utilization
Organization . . . : PS Used cylinders . . : 1
Record format . . . : FB Used extents . . . : 1
Record length . . . : 80
Block size . . . . : 27920
1st extent cylinders: 1
Secondary cylinders : 3
Data set name type : __________ SMS Compressible : NO
Creation date . . . : 2008/07/21 Referenced date . . : 2008/07/21
Expiration date . . : ***None***
|
Might be I'm reaching to my conclusion rather fast, but does this
really wastes DASD's space ? I need to experiment with some more TAPE files I think, however, please provide some direction if someone has experimented earlier .. |
|
Back to top |
|
|
gcicchet
Senior Member
Joined: 28 Jul 2006 Posts: 1702 Location: Australia
|
|
|
|
Hi Anuj,
I think you will find that when you invoke IEBGENER with SYSIN DD DUMMY, you are actually running DFSORT, DFSORT appears to be a little smarter than some of the other utilities and depending on whether it's sysda or cart, it uses the most efficient blocking factor.
If use FILEAID or IEBGENER with SYSIN DD * it will use the input blocksize when using DCB=*.input ddname or
DCB=*.input-ddname,BLKSIZE=80
IEBGENER with SYSIN DD * invokes the IBM utility IEBGENER.
Gerry |
|
Back to top |
|
|
Anuj Dhawan
Superior Member
Joined: 22 Apr 2006 Posts: 6248 Location: Mumbai, India
|
|
|
|
Hi Gerry,
Quote: |
I think you will find that when you invoke IEBGENER with SYSIN DD DUMMY, you are actually running DFSORT, DFSORT appears to be a little smarter than some of the other utilities and depending on whether it's sysda or cart, it uses the most efficient blocking factor. |
It was something new & great knowledge point for me, Thanks..
I used IEBGENER with SYSIN DD * but still got the same attibutes as posted in previous post.
I think, I'm on little worng track; first I allocate a file with LRECL 80 & then I copy it to TAPE, might be due to this when I copy it back to the DASD it takes the optimum BLKSIZE ? |
|
Back to top |
|
|
gcicchet
Senior Member
Joined: 28 Jul 2006 Posts: 1702 Location: Australia
|
|
|
|
Hi Anuj,
what was the blocksize when written to tape ?
Gerry |
|
Back to top |
|
|
Anuj Dhawan
Superior Member
Joined: 22 Apr 2006 Posts: 6248 Location: Mumbai, India
|
|
|
|
Hi Gerry,
gcicchet wrote: |
what was the blocksize when written to tape ? |
It was 27920. |
|
Back to top |
|
|
gcicchet
Senior Member
Joined: 28 Jul 2006 Posts: 1702 Location: Australia
|
|
|
|
Hi Anuj,
I should have been clearer, what is the blocksize on the tape ?
Gerry |
|
Back to top |
|
|
Anuj Dhawan
Superior Member
Joined: 22 Apr 2006 Posts: 6248 Location: Mumbai, India
|
|
|
|
Hi Gerry,
gcicchet wrote: |
I should have been clearer, what is the blocksize on the tape ? |
You caught me, did you want me to run something like -
Code: |
//STEP010 EXEC PGM=SYNCTOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//DD01 DD DSN=HLQ.FIRST.FILE.TAPEC,
// DISP=SHR
//TOOLIN DD *
COUNT FROM(DD01)
/* |
where HLQ.FIRST.FILE.TAPEC is my tape file. If so message in DFSMSG is -
Code: |
DD01 : RECFM=FB ; LRECL= 80; BLKSIZE= 27920 |
|
|
Back to top |
|
|
gcicchet
Senior Member
Joined: 28 Jul 2006 Posts: 1702 Location: Australia
|
|
|
|
Hi Anuj,
you need to copy from tape containing a blocksize greater than 27998 to prove whether the optimum blocksize is used when copying to dasd.
Gerry |
|
Back to top |
|
|
Anuj Dhawan
Superior Member
Joined: 22 Apr 2006 Posts: 6248 Location: Mumbai, India
|
|
|
|
Hi Gerry,
I'll give some more tries & get back to you, probably by tomorrow. Thanks for your patience. |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
|
|
|
|
Hello,
FWIW, Several of the sites i've supported (using both DFSORT and Syncsort) invoke the sort product for IEBGENER executions.
If the process is other than a simple copy operation, the sort product then invokes IEBGENER. |
|
Back to top |
|
|
UmeySan
Active Member
Joined: 22 Aug 2006 Posts: 771 Location: Germany
|
|
|
|
Hi Gerry !
We're also using IEBGENER with SYSIN DD * and ICEGENER is excecuting in background. It depends on installation. |
|
Back to top |
|
|
gcicchet
Senior Member
Joined: 28 Jul 2006 Posts: 1702 Location: Australia
|
|
|
|
Hi,
in my shop it assumes that SYSIN DD * will have IEBGENER parameters hence IEBGENER is invoked.
If you have a SYSIN DD DSN= what will it invoke ?
Gerry |
|
Back to top |
|
|
Anuj Dhawan
Superior Member
Joined: 22 Apr 2006 Posts: 6248 Location: Mumbai, India
|
|
|
|
Hi,
Below are the statistics of SYSPRINT with different SYSIN parameters, does that convey something meaningful ? My shop uses SyncSort.
1. //SYSIN DD *
Code: |
DATA SET UTILITY - GENERATE
IEB352I WARNING: ONE OR MORE OF THE OUTPUT DCB PARMS COPIED FROM INPUT
PROCESSING ENDED AT EOD |
2. //SYSIN DD DUMMY
Code: |
DATA SET UTILITY - GENERATE
WER901I **WARNING** SYNCSORT 1.2.3.0 WILL EXPIRE IN 18 DAYS
WER276B SYSDIAG= 4048092, 8503163, 8503163, 6064567
WER164B 4,992K BYTES OF VIRTUAL STORAGE AVAILABLE, MAX REQUESTED,
WER164B 44K BYTES RESERVE REQUESTED, 4,196K BYTES USED
WER146B 4K BYTES OF EMERGENCY SPACE ALLOCATED
WER108I SYSUT1 : RECFM=FB ; LRECL= 80; BLKSIZE= 27920
WER110I SYSUT2 : RECFM=FB ; LRECL= 80; BLKSIZE= 27920
WER410B 3,960K BYTES OF VIRTUAL STORAGE AVAILABLE ABOVE THE 16MEG LINE,
WER410B 0 BYTES RESERVE REQUESTED, 3,952K BYTES USED
WER211B SYNCSMF CALLED BY SYNCSORT; RC=0000
WER449I SYNCSORT GLOBAL DSM SUBSYSTEM ACTIVE
WER416B SYSUT1 : EXCP'S=2,UNIT=3490,DEV=30D8,CHP=35B575F5
WER416B SYSUT2 : EXCP'S=1,UNIT=3390,DEV=BB1F,CHP=(151719959799,2),VOL=MIZAB5
WER416B TOTAL OF 3 EXCP'S ISSUED FOR COPYING
WER054I RCD IN 5, OUT 5
WER169I RELEASE 1.2 BATCH 0453 TPF LEVEL 3.0
WER052I END SYNCSORT - PU2317AU,STEP1OF1,,DIAG=C000,D303,E8BD,ECF5,8952,6CAB,A
SYNCSORT COPY FEATURE CALLED - RC = 0 |
|
|
Back to top |
|
|
gcicchet
Senior Member
Joined: 28 Jul 2006 Posts: 1702 Location: Australia
|
|
|
|
Hi Anuj,
the SYSIN DD * is using IEBGENER and SYSIN DD DUMMY is using the SYNCSORT program.
When SYSIN DD DUMMY is coded it knows that it's a straight copy so it uses the SYNCSORT program which is more efficient than IEBGENER.
When SYSIN DD * is coded it thinks you may be passing IEBGENER SYSIN parameters so IEBGENER is used.
Gerry |
|
Back to top |
|
|
|