Page 1 of 1

To find BUFL of a dataset.

PostPosted: Thu Feb 01, 2018 3:14 pm
by Shanthi_Palani
Hello Experts,
Please can you let me know on how to check/view the BUFL attribute of a dataset.

Thank you,
Shanthi.

Re: To find BUFL of a dataset.

PostPosted: Thu Feb 01, 2018 6:14 pm
by steve-myers
For at least the millionth time. JCL cannotdisplay or "find" anything.

"BUFL" has a number of interpretations.

Now this job -
//RUNTSO  EXEC PGM=IKJEFT01,PARM='LISTD ''SYS1.MACLIB'''
//SYSTSPRT DD  SYSOUT=*
//SYSTSIN  DD  DUMMY

When it is run after adding a valid JOB JCL statement will display something like this in the data set specified by the SYSTSPRT DD statement.
SYS1.MACLIB
--RECFM-LRECL-BLKSIZE-DSORG
  FB    80    6160    PO
--VOLUMES--
  Z6RES1

Now get this through your head. The JCL is directing the system to run a program called IKJEFT01. The PARM is directing IKJEFT01 to run a program called LISTD that produced the output. The number under BLKSIZE is probably for BUFL.

Re: To find BUFL of a dataset.

PostPosted: Thu Feb 01, 2018 6:18 pm
by Robert Sample
In general, there is NEVER a reason to find the BUFL of a dataset -- buffering is controlled by the operating system and hence you have no reason to know it. Nor is there any reason for you to check it.

Usually (as in, exceptions used to occur but they've pretty much gone by the wayside) the BUFL will be the block size of the data set. Find the block size, find the BUFL.

Re: To find BUFL of a dataset.

PostPosted: Fri Feb 02, 2018 3:12 pm
by Shanthi_Palani
Hi Robert,
Thanks.
I was checking for the BUFL, because I had an error while trying REPRO a PS dataset with BLKSIZE=0.
So when browsing about the error message I got,
It said no.of reasons.1 such reason is that the input dataset had BLKSIZE and BUFL as zero.the system determined that it had to obtain buffers but was unable to do so. I knew my file had BLKSIZE as zero but didn't know the BUFL size. Hence I posted this query to confirm my suspect.

Error msg : IEC14I 013-34,IGG0191A.

I tried to confirm it by a test repro with a BLKSIZE=0 file., And yeah I faced the same error.

Re: To find BUFL of a dataset.

PostPosted: Fri Feb 02, 2018 6:29 pm
by Robert Sample
BLKSIZE=0 has been used for quite a few years to specify that the system will determine the block size rather than the user calculating it. The error message is telling you that the system never assigned a block size (either because it is an output data set or because the input data set has never been opened for output to set the block size). You do NOT need to think about BUFL unless you are a system programmer. Another possible reason for the error is the lack of memory -- what is the REGION set to for the job?

Re: To find BUFL of a dataset.

PostPosted: Fri Feb 02, 2018 9:20 pm
by steve-myers
In the VTOC, the data set BLKSIZE is taken from a field with label DS1BLKL.
DS1BLKL  DS    XL2                 BLOCK LENGTH (TYPE F RECORDS),  @L3C
*                                  OR MAX BLKSIZE (U OR V RECORDS) @L3A
The usual copy utilities seldom have a problem with an output BLKSIZE=0, they usually copy the input BLKSIZE to the output BLKSIZE or they let system determined BLKSIZE populate the field. Obviously they will have a problem with input BLKSIZE=0. It is easy to recreate this problem with JCL like this.
//A       EXEC PGM=IEFBR14
//INPUT    DD  DISP=(MOD,PASS),SPACE=(TRK,(1,1)),
//             DCB=(RECFM=FB,LRECL=0)
//B       EXEC PGM=aprogram
//INPUT    DD  DISP=(OLD,PASS),DSN=*.A.INPUT
I'm sure many of us can deduce how to recreate this in real world situations.