Bob Wright wrote:

> 
> You're welcome.  I thought that we'd bumped into something like that in 
> the course of some service aids development where we had an old DCB that 
> didn't specify DSORG, leaving that for a DCB OPEN exit to supply.  I 
> have no idea why IEBGENER would be going that route, but it certainly 
> needs to be available to OPEN before a DCB OPEN exit to implement SDB.
> 

Well, here's my theory:

Once a DD for a NEW disk data set has the following DCB attributes
1) RECFM specifying fixed-length or variable-length records,
2) LRECL more than zero
3) DSORG of PS or PO
4) BLKSIZE of zero
THEN a System-Determined Blocksize (SDB) is placed into the data set
labels during data set creation, way before OPEN happens.  In fact,
OPEN won't happen if PGM=IEFBR14, for example.

SDB will not occur unless the DSORG is known to be PS or PO.

During OPEN the DSORG _must_ be known, so SDB gets another chance to
run if BLKSIZE=0 is still true (for PS and PO).

Re IEBGENER, it seems that IEBGENER will use any valid blocksize
in the data set labels before OPEN, including an SDB set during
data set allocation, for the SYSPRINT file.

I'd guess that IEBGENER has a DCB OPEN exit on SYSPRINT which,
when it gets control, checks the BLKSIZE value in the DCB.
If it is zero then BLKSIZE is set to LRECL (ie. 121).

Logic such as this is very useful for preventing OPEN abends where
no DCB attributes are coded in the JCL for new data sets while still
allowing the BLKSIZE to be overridden by the data set labels or JCL,
especially on systems with SDB.

It may even mean that IEBGENER's SYSPRINT could be allocated to
a *real* line printer without coding any DCB parameters in the JCL,
and it would still work.  (Haven't tried this one. <g>)

(S013-34 is the usual abend for when BLKSIZE=0 persists, IIRC.)

But it does mean that SDB at OPEN-time will never occur in this case.

(I suppose the exit could be changed to check for a TAPE or DASD file,
and leave BLKSIZE=0 if it is, but the business case for this may not
be strong.  IEBGENER, being part of DFP, knows that SDB is present.
A 3rd party utility, designed for any MVS ever, would have to check
that SDB is present.  Hang on, that's another thread.  Don't mention
the PLO instruction.  I mentioned it once, but think I got away with it.)

In summary, SDB gets two opportunities to run:
1) during allocation,
2) during OPEN,
but only for TAPE or DASD when DSORG is PS or PO.

Cheers,
Greg P.

----------------------------------------------------------------------
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