I'm afraid I disagree. What it proves is not that the DCB on DASD was overwritten by the one in the JCL, but that the DCB in the JCL was incorrect/incompatible with the one on DASD.

If I allocate SYSUT1 with DCB=(RECFM=FBA,LRECL=121,BLKSIZE=16093) and SYSUT2 with DCB=(REFM=FBA,LRECL=133,BLKSIZE=16093), where 121*133=16093, then both the physical RECFM and data block lengths are the same for SYSUT1 and SYSUT2. If I specify:

//IEBGENER EXEC PGM=IEBGENER
//SYSPRINT  DD SYSOUT=*
//SYSIN     DD DUMMY
//*
//SYSUT1    DD DISP=SHR,DSN=SYS1.RECFMFBA.LRECL121.BLK16093,
//* cannot override dataset's DCB on DASD via JCL, for INPUT:
//             DCB=(RECFM=FBA,LRECL=133,BLKSIZE=16093)
//* //SYSUT2 DD DISP=SHR,DSN=SYS1.RECFMFBA.LRECL133.BLK16093,
//             DCB=(RECFM=FBA,LRECL=133,BLKSIZE=16093)
//*
<etc.>

I then still hit I/O errors without IEBGENER issuing message "IEB311I CONFLICTING DCB PARAMETERS" and the DCB BLKSIZEs are compatible, i.e. the physical data block size is not larger than the DCB BLKSIZE in the JCL's override.

If instead I allocate SYSUT1 with DCB=(RECFM=FBA,LRECL=121,BLKSIZE=16093) and SYSUT2 with DCB=(REFM=FBA,LRECL=133,BLKSIZE=27930) and specify

//IEBGENER EXEC PGM=IEBGENER
//SYSPRINT  DD SYSOUT=*
//SYSIN     DD DUMMY
//*
//SYSUT1    DD DISP=SHR,DSN=SYS1.RECFMFBA.LRECL121.BLK16093,
//* cannot override dataset's DCB on DASD via JCL, for INPUT:
//             DCB=(RECFM=FBA,LRECL=133,BLKSIZE=27930)
//* //SYSUT2 DD DISP=SHR,DSN=SYS1.RECFMFBA.LRECL133.BLK16093,
//             DCB=(RECFM=FBA,LRECL=133,BLKSIZE=27930)
//*
<etc.>

I then still hit I/O errors without IEBGENER issuing message "IEB311I CONFLICTING DCB PARAMETERS" and the JCL's DCB BLKSIZE override for SYSUT1 is now greater than its physical data block size on DASD (hence there is enough buffer space allocated via the JCL DCB's override to read in a SYSUT1's complete physical data block from DASD).

Hence your "For example, if your override was for a - larger - blocksize it would have worked fine (other than perhaps IDCAMS/IEBGENER) warnings about different block sizes." is not correct. An equal or larger blocksize override in the JCL makes no difference.

What you are implicitly suggesting is that the I/O error has nothing to do with the JCL or program DCB being in error. But if so, is it then the one on DASD that is incorrect? I am saying that the DCB on DASD can be overridden only during OUTPUT, not INPUT.

That the JCL or program DCB specifies a 'round hole' override into which the DASD's 'square peg' DCB cannot fit does not imply that the JCL or program DCB has successfully overridden the one on DASD, but rather that the program or JCL DCB is wrong and cannot override the one on DASD.

Thanks anyway.

Chris Poncelet


Binyamin Dissen wrote:

On Sat, 30 Jul 2011 22:31:57 +0100 CM Poncelet <ponce...@bcs.org.uk> wrote:

:>What I am saying is that, on INPUT, a dataset's physical DCB attributes :>from its DSCB on DASD cannot be overriden by a JCL or program DCB.

:>Consider the following JCL where
:>SYS1.RECFMVBA.LRECL137.BLK27998 has physical :>DCB=(RECFM=VBA,LRECL=137,BLKSIZE=27998,DSORG=PS) :>SYS1.RECFMFBA.LRECL137.BLK27948 has physical :>DCB=(RECFM=FBA,LRECL=137,BLKSIZE=27948,DSORG=PS):

:>//IEBGENER EXEC PGM=IEBGENER
:>//SYSPRINT  DD SYSOUT=*
:>//SYSIN     DD DUMMY
:>//*
:>//SYSUT1    DD DISP=SHR,DSN=SYS1.RECFMVBA.LRECL137.BLK27998,
:>//* cannot override dataset's DCB on DASD via JCL, for INPUT:
:>//             DCB=(RECFM=FBA,LRECL=137,BLKSIZE=27948)
:>//* :>//SYSUT2 DD DISP=SHR,DSN=SYS1.RECFMFBA.LRECL137.BLK27948,
:>//             DCB=(RECFM=FBA,LRECL=137,BLKSIZE=27948)
:>//*
:>//IDCAMS  EXEC PGM=IDCAMS
:>//SYSPRINT  DD SYSOUT=*
:>//*
:>//SYSUT1    DD DISP=SHR,DSN=SYS1.RECFMVBA.LRECL137.BLK27998,
:>//* cannot override dataset's DCB on DASD via JCL, for INPUT:
:>//             DCB=(RECFM=FBA,LRECL=137,BLKSIZE=27948)
:>//* :>//SYSUT2 DD DISP=SHR,DSN=SYS1.RECFMFBA.LRECL137.BLK27948,
:>//             DCB=(RECFM=FBA,LRECL=137,BLKSIZE=27948)
:>//SYSIN     DD *
:>  REPRO   INFILE(SYSUT1) +
:>         OUTFILE(SYSUT2)
:>//*

:>According to you, the DCB=(RECFM=FBA,LRECL=137,BLKSIZE=27948) on SYSUT1 :>(opened for input) should override the dataset's :>DCB=(RECFM=VBA,LRECL=137,BLKSIZE=27998,DSORG=PS) on DASD. But that is :>not the case.

:>If you set up and run the jobsteps above, both IEBGENER and IDCAMS :>report "IEB351I I/O ERROR <etc.> SYSUT1, READ, WRNG.LEN.RECORD, etc." :>when reading SYSUT1. This is because the dataset's DASD DSCB/DCB :>attributes override those coded in the JCL (and would also override the :>programs's DCB, if hard-coded), for INPUT.

Not at all. It proves that the DCB - was - overridden.

Of course, the DCB override does not affect the physical data. If the actual
data block length is longer than the DCB block length there will be an I/O
error.

For example, if your override was for a - larger - blocksize it would have
worked fine (other than perhaps IDCAMS/IEBGENER) warnings about different
block sizes.

--
Binyamin Dissen <bdis...@dissensoftware.com>
http://www.dissensoftware.com

Director, Dissen Software, Bar & Grill - Israel


Should you use the mailblocks package and expect a response from me,
you should preauthorize the dissensoftware.com domain.

I very rarely bother responding to challenge/response systems,
especially those from irresponsible companies.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html



----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to