To find BUFL of a dataset.



JES, JES2, JCL utilities, IDCAMS, Compile & Run JCLs, PROCs etc...

To find BUFL of a dataset.

Postby Shanthi_Palani » Thu Feb 01, 2018 3:14 pm

Hello Experts,
Please can you let me know on how to check/view the BUFL attribute of a dataset.

Thank you,
Shanthi.
Shanthi_Palani
 
Posts: 10
Joined: Mon Oct 10, 2016 3:08 pm
Has thanked: 6 times
Been thanked: 0 time

Re: To find BUFL of a dataset.

Postby steve-myers » Thu Feb 01, 2018 6:14 pm

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.
steve-myers
Global moderator
 
Posts: 2105
Joined: Thu Jun 03, 2010 6:21 pm
Has thanked: 4 times
Been thanked: 243 times

Re: To find BUFL of a dataset.

Postby Robert Sample » Thu Feb 01, 2018 6:18 pm

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.
Robert Sample
Global moderator
 
Posts: 3719
Joined: Sat Dec 19, 2009 8:32 pm
Location: Dubuque, Iowa, USA
Has thanked: 1 time
Been thanked: 279 times

Re: To find BUFL of a dataset.

Postby Shanthi_Palani » Fri Feb 02, 2018 3:12 pm

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.
Shanthi_Palani
 
Posts: 10
Joined: Mon Oct 10, 2016 3:08 pm
Has thanked: 6 times
Been thanked: 0 time

Re: To find BUFL of a dataset.

Postby Robert Sample » Fri Feb 02, 2018 6:29 pm

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?
Robert Sample
Global moderator
 
Posts: 3719
Joined: Sat Dec 19, 2009 8:32 pm
Location: Dubuque, Iowa, USA
Has thanked: 1 time
Been thanked: 279 times

Re: To find BUFL of a dataset.

Postby steve-myers » Fri Feb 02, 2018 9:20 pm

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.
steve-myers
Global moderator
 
Posts: 2105
Joined: Thu Jun 03, 2010 6:21 pm
Has thanked: 4 times
Been thanked: 243 times


Return to JCL

 


  • Related topics
    Replies
    Views
    Last post