Historically, SMF records were created as VBS in the original OS/360
implementation in 1964, because the OS developers only gave the SMF 
component 1000 bytes of the nucleus for buffer space,
 (the PCP nucleus was only 89K total!)
which the SMF team broke into two 500 byte buffers, and then used VBS,
as that was the only architecture that allowed you to write a logical
data record that contained 32756 bytes, when you only had 500 bytes
of real storage for your buffer.  The original DCB attributes
were RECFM=VBS,LRECL=32760,BLKSIZE=500!
   See my SHARE paper "The History of SMF", written in honor of the 
   Twentieth Anniversary of SMF in Newsletter FIFTEEN at
     http://www.mxg.com/Newsletters

While the "officially documented" LRECL/RDW in SMFxLEN in the
SMF header has has always been documented as 32756 bytes,
which is a maximum data length of only 32752, RDW=LRECL=32756.
many SMF record creators have read that as a data length of 32756,
and have created VBS records with LRECL=32760, and there have been
at least two instances in the past (SMF 79 subtype 1, TSO/MON) 
in which the actual data-length was 32760, which caused two physical
records to be created for that one logical record, one with the 
first 32756 bytes of data, and a second spanned record with the
remaining 4 bytes of the data in a second VBS record. 
Both of those records were corrected by their vendors when they 
were discovered.

Even recently, some new SMF records have been created with an
LRECL greater than 32760, and then corrected, otably  
    APAR PQ72222 corrects SMF type 119 (TCP/IP V3) records that had an
    invalid BLKSIZE and LRECL of 32768.  The APAR text reconfirms the
    SMF limit of 32756 bytes of data, i.e., LRECL=32760,BLKSIZE=32760.

Since QSAM has a hard limit of 32760 for both LRECL and BLKSIZE, 
the only absolutely safe DCB attributes to read an SMF VBS file
has always been RECFM=VBS,LRECL=32760,BLKSIZE=32760, which covers
records with either 32752, 35756, or 35760 bytes of real data.

But you cannot convert an SMF VBS file to VB, if it should contain
a record with RDW=LRECL=32760, i.e., with the full 32756 bytes of
data, because, unlike VBS, a VB file is required to have its RDW
value 4 bytes less than the BDW, and thus a VB file can only contain
a record with 32752 bytes of data, RDW=32756, and BLKSIZE=32760.
If you copy an LRECL=32760 VBS record to LRECL=32756 VB record,
you will loose the last four bytes of data.

Also, on DASD, VB with BLKSIZE=32760 will waste tremendous
space for those large blocks, while VBS can use BLKSIZE=0
(for half-track blocksize) to minimize space requirements.
Those half-track blocks will contain spanned records when
the LRECL exceeds the half-track blocksize.

     Okay, what about that LRECL=32767 instead of LRECL=32760 for VBS?
     The (stupid, IMO) default of IFASMFDP is LRECL=32767, although
     the records written to the VSAM file cannot exceed 32760?
     Yes, MVS currently does allow you to create a VBS file with 32767
     LRECL, but many other software products fail with 32767.
     I have sent numerous requests for IBM to change the illegitmate
     32767 back to the correct 32760, but the requests are unanswered.
     The z/OS 1.6 SMF manual for the dump program at least does state
       If you specify DCB parameters you must specify RECFM=VBS.
       You can specify LRECL=32760 instead of 32767.



A final note:  I always recommend the use of
 DCB=VBS,LRECL=32760,BLKSIZE=32760
to read any V, VB, or VBS file, since V and VB
are subsets of the VBS architecture when those
attributes are specified.  

In summary, you might well find that none of your SMF records from IBM
and other vendors exceed the data-length of 32752, LRECL of 32756, but
history suggests you'd place yourself at risk if you use those values.


Barry 
 

P.S.  SAS has always been able to handle broken VBS segments;
      in fact, after my August, 1974 presentation of how State
      Farm was using SAS to process SMF and that it would recover
      broken SMF data, a number of attendees purchased what was
      then the Statistical Analysis System, from the Statistics
      Department at North Carolina State University (for $100!!)
      solely to recover broken SMF data.
      Recall that with VBS data written to disk with a small 
      blocksize, any record with LRECL greater than BLKSIZE is
      spanned, so any system failure usually left you with a
      block with spanned data at the end, and then the next SMF
      block was the new IPL record after the failure, which
      caused IFASMFDP to die with an 002 ABEND because it cannot
      handle broken VBS segments!!


       DATA _NULL_;
        INFILE SMF;
        FILE SMFOUT DCB=SMF;
        INPUT;
        PUT _INFILE_;

      is all you need to recover that which is recoverable.

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