6. DATA SOURCES › 6.3 CA MICS SMF Requirements and Considerations › 6.3.4 SYSOUT Considerations › 6.3.4.5 Report Distribution Products › FD—6.3.4.5.5 VTAM Printer Support (VPS) SMF Type 6 Records
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.