Paul Gilmartin wrote:
In a recent note, Ron and Jenny Hawkins said:
Date: Sat, 1 Jul 2006 09:38:04 +0800
I don't see it as counterintuitive at all. My recollection is that AVGBLK as
value for SPACE was around well before the AVGREC parm became available.
SPACE=(27998,(1000,100)) where 27998 is AVGBLK
A requirement to specify space based on number of records of a given size
was serviced by providing the AVGREC parameter, which acts as a switch to
say that the first value SPACE Parm is AVGREC instead of AVGBLK, and to use
the subparm as a multiplier for primary and secondary space requests.
SPACE=(1024,(1000,100)),AVGREC=K where 1024 is AVGREC
I've used this rather simple JCL technique for around 10 years. I have
endured nothing because it such a damn easy thing to use.
However, I do like the suggestion to use K and M shorthand for the Space
subparms, but don't you think that a switch would still be required to have
the first subparm interpreted as AVGBLK or AVGREC?
I'm still trying to grasp what records, or their size, means to
allocation. I thought records come into play only later, at access
method time.
Right. That's why there's the disconnect between LRECL and BLKSIZE
with the SPACE and AVGREC parameters. SPACE and AVGREC are used by
Allocations; LRECL, BLKSIZE, and all the other DCB related parameters
are used by Open.
So, I tried an experiment:
//
//SIZES JOB 'Account','Paul Gilmartin',
// MSGLEVEL=(1,1),REGION=0M
//*
//* Test various suboptions of SPACE=
//*
//USERC OUTPUT JESDS=ALL,DEFAULT=YES,
// CLASS=R,PAGEDEF=V0648Z,CHARS=GT12
//*
//DOIT PROC
//*
//ALC EXEC PGM=IEFBR14
//SYSUT1 DD DISP=(MOD,CATLG),UNIT=SYSALLDA,
// SPACE=(10000,&NUM)&AVG,DSN=&SYSUID..AVGALC&SUF
//*
//GEN EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=(,)
//SYSIN DD DUMMY
//SYSUT2 DD DISP=(MOD,CATLG),UNIT=SYSALLDA,
// SPACE=(10000,&NUM)&AVG,DSN=&SYSUID..AVGGEN&SUF
//SYSUT1 DD DISP=SHR,DSN=SYS1.MACLIB(GIMZPOOL)
//*
//DOIT PEND
//*
//NONE EXEC DOIT,NUM=1024,AVG=,SUF=N
//UNIT EXEC DOIT,NUM=1024,AVG=',AVGREC=U',SUF=U
//KIBI EXEC DOIT,NUM=1,AVG=',AVGREC=K',SUF=K
//*
//* :w ! submit
The results from ISPF DSLIST, without and with AVGREC=U:
Data Set Information
Data Set Name . . . : SPPG.AVGALCN
General Data Current Allocation
Volume serial . . . : TSO008 Allocated tracks . : 205
Device type . . . . : 3390 Allocated extents . : 1
Organization . . . : NONE
Record format . . . : ?
Record length . . . : 0
Block size . . . . : 0 Current Utilization
1st extent tracks . : 205 Used tracks . . . . : 0
Secondary blocks . : 0 Used extents . . . : 0
Data Set Information
Data Set Name . . . : SPPG.AVGALCU
General Data Current Allocation
Volume serial . . . : TSOCT1 Allocated tracks . : 209
Device type . . . . : 3390 Allocated extents . : 1
Organization . . . : NONE
Record format . . . : ?
Record length . . . : 0
Block size . . . . : 0 Current Utilization
1st extent tracks . : 209 Used tracks . . . . : 0
Secondary bytes . . : 0 Used extents . . . : 0
So, why do I get slightly more tracks with AVGREC=U than without?
Why is the first extent displayed in tracks when I specified a
unit of blocks or records respectively? Why is the (unused)
secondary displayed in blocks in one case, and bytes in the other?
Don't know all the answers. But I do know that allocation actually
has always converted requests to tracks if requested in blocks
or tracks.
And, when initialized by IEBGENER:
Data Set Information
Data Set Name . . . : SPPG.AVGGENN
General Data Current Allocation
Volume serial . . . : TSO032 Allocated blocks . : 410
Device type . . . . : 3390 Allocated extents . : 5
Organization . . . : PS
Record format . . . : FB
Record length . . . : 80
Block size . . . . : 27920 Current Utilization
1st extent blocks . : 70 Used blocks . . . . : 1
Secondary blocks . : 0 Used extents . . . : 1
Data Set Information
Data Set Name . . . : SPPG.AVGGENU
General Data Current Allocation
Volume serial . . . : TSO019 Allocated bytes . . : 11,670,560
Device type . . . . : 3390 Allocated extents . : 4
Organization . . . : PS
Record format . . . : FB
Record length . . . : 80
Block size . . . . : 27920 Current Utilization
1st extent bytes . : 3350400 Used bytes . . . . : 27,920
Secondary bytes . . : 0 Used extents . . . : 1
Why does it say I have 410 blocks when I asked for 1024?
Etc.
Are the formulae used published anywhere?
And, basically, this user would prefer to be able to specify:
SPACE=(BYTE,10G)
... and let the computer perform the computation.
-- gil
Well, that would be cool. But, that's not the way it is.
Kind regards,
-Steve Comstock
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html