Previous Topic: 6.3.4.5.4 CA View Generated SMF Type 6 Records

Next Topic: 6.3.5 Operations Information Area

FD—6.3.4.5.5 VTAM Printer Support (VPS) SMF Type 6 Records


VTAM Printer Support (VPS) is a product or subsystem that
enables print requests generated on MVS to be printed on
network (LAN) connected printers supporting Line Print Deamon
(LPD) protocol. The print requests come from IP Printway when
output datasets are transmitted from the JES spool to
VTAM-controlled printers that are defined to VTAM.

The SMF type 6 records produced by VPS are similiar to IP
Printway.  These records contain all the standard IBM SMF
type 6 record fields.  The are some exceptions with the
contents of some of the fields:

 Field SMF6SBS, subsystem identification, contains HEX '0002'
 identifying the record came from JES2.

 Field SMF6UCS, universal character set for the printer,
 contains a value of 'VPS'.

When CA MICS processes these SMF type 6 records, data element
subsystem Identifier (SUBSYSID) contains 'JES2' which is
derived from SMF6SBS. When SMF6UCS contains a value of 'VPS',
CA MICS changes the value of SUBSYSID to 'VPS'.

FD—6.3.4.5.6 - Other Nonstandard SMF Type 6 Records

CA MICS does not provide internal support for nonstandard SMF
type 6 records produced by other vendors because the format
of the records may change unexpectedly with a new release,
causing failure of the daily update step.

The following guidelines will help you customize CA MICS to
process nonstandard SMF type 6 records produced by report
distribution products other than CAs' BUNDL, CA Dispatch,
CA Deliver, and CA View.


1.  Obtain a record layout of the output writer records you
    wish to process and identify the fields you wish to read.

    When examining the record layout, you should compare it
    to the layouts of SMF type 6 output writer records in an
    IBM SMF manual.  Be aware that CA MICS will process any
    SMF type 6 record found in the SMF input files.  If the
    nonstandard record layout deviates from standards,
    CA MICS may not input all raw data fields and may even
    populate standard BATSPL data elements with invalid
    values.

    SMF type 6 records are generated by a variety of
    subsystems and CA MICS determines the subsystem by
    examining the value of the subsystem ID field found at
    offset 59.  This 2-byte field is read as a positive
    integer binary value.  The following table shows the
    hexadecimal and decimal values of SUBID that CA MICS
    currently recognizes as well as the corresponding
    SUBSYSID data element values that appear in the BATSPL
    file:

     SUBID VALUE FROM      BATSPL
        OFFSET 59          FILE
                           SUBSYSID
      HEX   DECIMAL        VALUE     DESCRIPTION

      0000       0  <--->  'XWTR'   (External Writer)
      0002       2  <--->  'JES2'   (JES2)*
      0005       5  <--->  'JES3'   (JES3)
      0007       7  <--->  'PSF '   (Print Services Facility)
      0009       9  <--->  'PWAY'   (IBM PrintWay)
      0010      16  <--->  'CADS'   (CA Dispatch)
      C2E4   49892  <--->  'BNDL'   (Bundl)
      C5C4   50628  <--->  'CADV'   (CA Deliver)
      C5E2   50658  <--->  'CAVW'   (CA View)
         other      <--->  '    '

    * Changed to 'VPS ' when UCS Image ID (SPLUCSID) is equal
    to 'VPS' for VTAM Printer Support.

    If your DETAIL time span BATSPL file contains any
    observations with a blank SUBSYSID, then nonstandard SMF
    type 6 records are being processed.  Even if you are
    unable to obtain a manual that gives the nonstandard SMF
    type 6 record layout, you can add code to the    _USRSSFW
    exit in sharedprefix.MICS.SOURCE(#SMFEXIT) to provide a
    record layout as shown below:

       MACRO _USRSSFW
    /* SYSOUT WTR INTERIM SMF FILE EXIT */
       IF SUBSYSID EQ '    ' THEN LIST ;
       %

    A hexadecimal dump of each nonstandard SMF type 6 record
    encountered during the raw SMF data input data step of
    your DAY030 daily update step will now be printed to your
    SAS log.

    NOTE:  The above code may generate many thousands of
           print lines if there are excessive numbers of
           nonstandard SMF type 6 records in your SMF input
           files.

2.  Create a LOCALMOD.CNTL member to add any new BATSPL
    elements to sharedprefix.MICS.GENLIB(SMFGENIN).  Consult
    Section 6.2.1.1 of the System Modification Guide for
    specific directions.

    You must add the new data elements to the BATSFW file for
    the raw input and suspend process, the BATSPL file, and,
    optionally, JOB level data elements to the BATJOB file if
    you want the new output-related elements summarized to
    the job level.

    Execute the job you created to add the elements to the
    appropriate files.

3.  Execute the job in sharedprefix.MICS.CNTL(SMFCGEN)
    to cause the new elements to be recognized.

4.  You must use the       _USRSSFW exit macro found in
    sharedprefix.MICS.SOURCE(#SMFEXIT) to read data element
    values from the nonstandard SMF type 6 record.  Restrict
    your code to only process records with a SUBID value
    corresponding to offset 59 in the nonstandard type 6
    records.  For example, if your nonstandard SMF type 6
    records have a HEX C5C4 at offset 59, your _USRSSFW macro
    code should begin:

      MACRO _USRSSFW
   /* SYSOUT WTR INTERIM SMF FILE EXIT */
      IF SUBID EQ 50628 THEN DO ; /* HEX C5C4 AT OFFSET 59 */
        ... code to input fields
      END ;
        %

    You should also reference the LENGTH data element before
    reading values.  LENGTH contains the record length of the
    current SMF record.  If you want to read a 4-byte binary
    field from offset 123, code your      _USRSSFW macro like
    this:

      MACRO _USRSSFW
   /* SYSOUT WTR INTERIM SMF FILE EXIT */
      IF SUBID EQ 50628 THEN DO ; /* HEX C5C4 AT OFFSET 59 */
        SUBSYSID='ED  ' ;
        IF LENGTH GE 126 THEN
          INPUT @123 SPLxxxx PIB4. @ ;
      END ;
        %

    Remember to end the INPUT statement with an "at" sign
    (@).  Refer to Section 5.2 of the System Modification
    Guide for more DOs and DON'Ts of exit implementation.

    Note that the above example created a unique value for
    SUBSYSID of 'ED '.  This will allow easy identification
    of BATSPL observations created from these nonstandard
    SMF type 6 records with a SUBID value of 50628.

    If the dump of the record produced does not show the
    presence of the Common Section which contains field
    SMF6JBID, then you must assign PGMTYPEW in this _USRSSFW
    exit.  Otherwise a warning message will be issued to the
    MICSLOG and the PGMTYPEW will default to 1 (batch).  For
    example, add the following logic:

       IF SMF6UIF =: 'whatever' THEN
          PGMTYPEW = 3;
       ELSE IF JOB=: 'something else' THEN
          PGMTYPEW = 2;
       ELSE PGMTYPEW = 1;

5.  If you want to summarize the SPL element in the BATJOB
    file, follow these steps:

    a) Add code to the _USRSINT to initialize the JOB level
       element.  This exit is invoked only once when a new
       Reader Time Stamp (RDRTS) and Job Name (JOB) are
       encountered.

           MACRO _USRSINT
        /*   FULL JOB INITIATION EXIT */
           JOBxxxx=0 ;
           %

    b) Add code to the     _USRSSPL exit to sum the SPL data
       element to the job level as shown below:

           MACRO _USRSSPL
        /*   BATCH SPOOL FILE OUTPUT EXIT */
           JOBxxxx+SPLxxxx ;
           %

       Note that the use of the SAS SUM statement of the form
       VARIABLE+EXPRESSION.  This forces an implied RETAIN of
       the JOBxxxx data element over all steps of the job.
       If you instead coded:

          JOBxxxx=JOBxxxx+PGMxxxx ;

       then you would need to add a RETAIN JOBxxxx statement
       in the _USRSINT exit.

6.  Test the modification thoroughly in either a test complex
    or a test unit.

    If a test complex is being used, make certain both test
    and production complexes are at the same maintenance
    level; otherwise, you may have different results when you
    move to the production complex.

    If a test unit is used, override the   _USRSSFW exit by
    coding it after the %INCLUDE SOURCE(#SMFEXIT) in
    prefix.MICS.USER.SOURCE(#SMFEXIT).

You should also be aware that, in general, most report
distribution products (RDPs) that generate nonstandard SMF
type 6 records do so when the sysout data sets are
transferred from their own internal data areas back to the
JES spool.  At the time of transfer, the RDPs do not know
the printer that will actually print the report.  The
nonstandard SMF type 6 records therefore do not report the
output device name, but they do generally contain the Job
Name (JOB) and Reader Time Stamp (RDRTS) of the original job
that created the report.  This makes the nonstandard SMF type
6 records useful for accounting purposes, but not for printer
utilization studies.

When the report actually prints, a standard SMF type 6 record
is produced.  It does identify the actual printer, but
generally contains the JOB and RDRTS of the report
distribution product.  These standard records are useful for
printer utilization studies, but not for accounting.

You should use the      _USRSSPL macro to identify BATSPL
observations generated from standard SMF type 6 records with
the Job Name of the report distribution product, and assign
them nonbillable or overhead ACCTNOx account code values.
Include these BATSPL observations when analyzing your printer
utilizations.  Use the BATSPL observations from the
nonstandard SMF type 6 records for accounting, but exclude
them (based on the unique SUBSYSID value you assigned in the
_USRSSFW macro) from printer utilization studies.