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

Query:Coding DCB=*.SYSUT1 for SYSUT2,where SYSUT2 is DASD.


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

Superior Member


Joined: 22 Apr 2006
Posts: 6248
Location: Mumbai, India

PostPosted: Wed Aug 01, 2007 4:54 pm
Reply with quote

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
Code:
//            DCB=*.SYSUT1

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
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19243
Location: Inside the Matrix

PostPosted: Wed Aug 01, 2007 6:08 pm
Reply with quote

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
View user's profile Send private message
expat

Global Moderator


Joined: 14 Mar 2007
Posts: 8796
Location: Welsh Wales

PostPosted: Wed Aug 01, 2007 7:20 pm
Reply with quote

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
View user's profile Send private message
Anuj Dhawan

Superior Member


Joined: 22 Apr 2006
Posts: 6248
Location: Mumbai, India

PostPosted: Thu Aug 02, 2007 11:58 am
Reply with quote

Thanks Dick.

Thanks expat, now that's a typical expat explanation icon_smile.gif. 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
View user's profile Send private message
expat

Global Moderator


Joined: 14 Mar 2007
Posts: 8796
Location: Welsh Wales

PostPosted: Thu Aug 02, 2007 2:54 pm
Reply with quote

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 icon_eek.gif

I am impressed - this means that some of you actually read what I put here icon_biggrin.gif
Back to top
View user's profile Send private message
expat

Global Moderator


Joined: 14 Mar 2007
Posts: 8796
Location: Welsh Wales

PostPosted: Thu Aug 02, 2007 3:17 pm
Reply with quote

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
View user's profile Send private message
Anuj Dhawan

Superior Member


Joined: 22 Apr 2006
Posts: 6248
Location: Mumbai, India

PostPosted: Thu Aug 02, 2007 3:36 pm
Reply with quote

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 icon_smile.gif

expat wrote:
I am impressed
Thanks for the kind words.

expat wrote:
this means that some of you actually read what I put here icon_biggrin.gif
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. icon_wink.gif

Thanks again for being here.
Back to top
View user's profile Send private message
expat

Global Moderator


Joined: 14 Mar 2007
Posts: 8796
Location: Welsh Wales

PostPosted: Thu Aug 02, 2007 6:28 pm
Reply with quote

Quote:
..a lot of my queris get solved without any dollor-cheque.


Invoice in the post icon_biggrin.gif
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19243
Location: Inside the Matrix

PostPosted: Thu Aug 02, 2007 7:04 pm
Reply with quote

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. . . icon_wink.gif
Back to top
View user's profile Send private message
Anuj Dhawan

Superior Member


Joined: 22 Apr 2006
Posts: 6248
Location: Mumbai, India

PostPosted: Fri Aug 03, 2007 5:04 pm
Reply with quote

expat wrote:
Invoice in the post icon_biggrin.gif
icon_smile.gif

dick scherrer wrote:
We're just setting you up for a really big bill later. . . icon_wink.gif
Ah..aa.. icon_smile.gif I am ready for big bills if you guys gonna be around till I pay my bills. icon_wink.gif
Back to top
View user's profile Send private message
mmwife

Super Moderator


Joined: 30 May 2003
Posts: 1592

PostPosted: Sun Aug 05, 2007 3:29 am
Reply with quote

Hi Anju,

Give "DCB=*.SYSUT1,BLKSIZE=0" a try, it should o'ride the tape blksize.
Back to top
View user's profile Send private message
Anuj Dhawan

Superior Member


Joined: 22 Apr 2006
Posts: 6248
Location: Mumbai, India

PostPosted: Mon Jul 21, 2008 1:25 pm
Reply with quote

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
Code:
DCB=*.SYSUT1       
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
View user's profile Send private message
gcicchet

Senior Member


Joined: 28 Jul 2006
Posts: 1702
Location: Australia

PostPosted: Tue Jul 22, 2008 12:16 pm
Reply with quote

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
View user's profile Send private message
Anuj Dhawan

Superior Member


Joined: 22 Apr 2006
Posts: 6248
Location: Mumbai, India

PostPosted: Tue Jul 22, 2008 4:39 pm
Reply with quote

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.. icon_smile.gif

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
View user's profile Send private message
gcicchet

Senior Member


Joined: 28 Jul 2006
Posts: 1702
Location: Australia

PostPosted: Tue Jul 22, 2008 4:46 pm
Reply with quote

Hi Anuj,

what was the blocksize when written to tape ?

Gerry
Back to top
View user's profile Send private message
Anuj Dhawan

Superior Member


Joined: 22 Apr 2006
Posts: 6248
Location: Mumbai, India

PostPosted: Tue Jul 22, 2008 4:51 pm
Reply with quote

Hi Gerry,
gcicchet wrote:
what was the blocksize when written to tape ?
It was 27920.
Back to top
View user's profile Send private message
gcicchet

Senior Member


Joined: 28 Jul 2006
Posts: 1702
Location: Australia

PostPosted: Tue Jul 22, 2008 4:55 pm
Reply with quote

Hi Anuj,

I should have been clearer, what is the blocksize on the tape ?


Gerry
Back to top
View user's profile Send private message
Anuj Dhawan

Superior Member


Joined: 22 Apr 2006
Posts: 6248
Location: Mumbai, India

PostPosted: Tue Jul 22, 2008 5:10 pm
Reply with quote

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
View user's profile Send private message
gcicchet

Senior Member


Joined: 28 Jul 2006
Posts: 1702
Location: Australia

PostPosted: Tue Jul 22, 2008 5:35 pm
Reply with quote

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
View user's profile Send private message
Anuj Dhawan

Superior Member


Joined: 22 Apr 2006
Posts: 6248
Location: Mumbai, India

PostPosted: Tue Jul 22, 2008 5:41 pm
Reply with quote

Hi Gerry,

I'll give some more tries & get back to you, probably by tomorrow. Thanks for your patience.
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19243
Location: Inside the Matrix

PostPosted: Tue Jul 22, 2008 7:06 pm
Reply with quote

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
View user's profile Send private message
UmeySan

Active Member


Joined: 22 Aug 2006
Posts: 771
Location: Germany

PostPosted: Tue Jul 22, 2008 8:42 pm
Reply with quote

Hi Gerry !

We're also using IEBGENER with SYSIN DD * and ICEGENER is excecuting in background. It depends on installation.
Back to top
View user's profile Send private message
gcicchet

Senior Member


Joined: 28 Jul 2006
Posts: 1702
Location: Australia

PostPosted: Wed Jul 23, 2008 4:28 am
Reply with quote

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
View user's profile Send private message
Anuj Dhawan

Superior Member


Joined: 22 Apr 2006
Posts: 6248
Location: Mumbai, India

PostPosted: Wed Jul 23, 2008 11:04 am
Reply with quote

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
View user's profile Send private message
gcicchet

Senior Member


Joined: 28 Jul 2006
Posts: 1702
Location: Australia

PostPosted: Wed Jul 23, 2008 11:15 am
Reply with quote

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
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 Goto page 1, 2  Next

 


Similar Topics
Topic Forum Replies
No new posts Need help with ADABAS query (COBOL-AD... All Other Mainframe Topics 0
No new posts RC query -Time column CA Products 3
No new posts Dynamically pass table name to a sele... DB2 2
No new posts Query on edit primary command CLIST & REXX 5
No new posts Query on edit primary command CLIST & REXX 1
Search our Forums:

Back to Top