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

Reply via email to