Previous Topic: 7.2.2.3 Spool Level Account Code Specification

Next Topic: 7.2.4 Analyzer Definition Statements (SMFGENIN)

7.2.3 APPC/MVS Account Code Exit Routine (APPCRTE)


The ACCTRTE account code exit routine that you coded as
described in Section 7.2.2 is used to populate the ACCTNOx
values for all Batch Information Area Files that support
account routines, except one.  The APPC/MVS Transaction file
(BATATP) is built directly from the SMF type 33 TP Accounting
records.  The other SMF record types that are merged to
produce the BATPGM, BAT_ST, BAT_TS, BAT_TP, BATJOB and BAT_JS
files are not present when the BATATP file is produced.

If your site supports APPC/MVS ASCH-scheduled TPs, you need
to code an APPC/MVS account code exit routine.  You will be
populating the same ACCTNOx values as in your ACCTRTE exit.
For example, if the ACCOUNT member defines three account code
levels, and the ACCTRTE exit routine builds the elements
ACCTNO1, ACCTNO2, and ACCTNO3, you will want to populate the
same three ACCTNOx values in APPCRTE.

Code the account code exit routine in SAS and verify that it
is correct.  A sample APPCRTE member is provided in
sharedprefix.MICS.PARMS(APPCRTE).  Refer to Section 2.3.1.5,
Notes on Coding CA MICS Parameters, in the PIOM for coding
help.  Figure 7-3 provides a worksheet for coding your
routine.

PREPARATION

The CA MICS Batch and Operations Analyzer provides a sample
APPC/MVS account code exit routine.

The APPCRTE routine is invoked by CA MICS at the point just
prior to the creation of each BATATP file DETAIL timespan
record.  The only SMF record present when this exit is
invoked is the SMF type 33 APPC/MVS TP Accounting record.

DATA ELEMENTS FOR APPC/MVS ACCOUNT CODE ROUTINE

Section 6.10 in this guide explains APPC/MVS and the
information it provides.  BATATP observations are only
created for TPs scheduled by the APPC scheduler, ASCH.  Any
LU6.2 program can use APPC/MVS services to communicate with
other TPs, but only ASCH-scheduled TPs produce the SMF type
33 APPC/MVS TP Accounting records that are used to create
BATATP observations.  Each BATATP observation contains the
resource utilization consumed by the APPC/MVS ASCH-scheduled
TP.  ASCH TPs are not submitted like batch jobs, but are
scheduled by ASCH to execute when another TP requests a
conversation with them.  The ACCTNOx values should be set so
that the requesting transaction program is held accountable
for the resources used.  The SMF type 33 record provides good
accountability back to the requesting partner TP.

Each of the data elements in the APPC/MVS Transaction file
(BATATP) is available to the APPC/MVS account code routine.
These elements are documented in the CA MICS Data
Dictionary.  In addition, some data elements, such as
ACTFLD1-5, are not in the BATATP file, but exist during the
processing of the CA MICS program that contains the exit. The
data elements most often used to determine the account code
values are shown below:

    ACTFLD1-5 - The first five SMF accounting fields from the
                partner TP that requested a conversation with
                the TP represented by this record.
    ATPCLASS  - TP Class
    ATPLLU    - Local LU Name
    ATPNAME   - TP Name
    ATPNETID  - Partner LU Network ID
    ATPPLU    - Partner LU Name
    ATPPROF   - Profile Name
    ATPTYPE   - TP Schedule Type (STP/MTP/MSH)
    RACFUSID  - Partner TP RACF User ID
    RACFGRID  - Partner TP RACF Group ID

    Note:  ATPAPU is already carried as a sort/sequence data
           element in the BATATP files and should therefore
           not be used as an ACCTNOx value.

Internal Fields

There are no internal fields analogous to those used in the
ACCTRTE exit to determine the age of the observation or which
SMF record types are present.  BATATP observations are not
suspended.  They are written to the CA MICS database in the
same update that reads the raw SMF data file containing SMF
type 33 APPC/MVS TP Accounting records.

Coding Considerations

In coding the APPCRTE, you should consider the following:

   o  Do NOT use statements such as this one in the APPCRTE
      because these data elements are not defined in the code
      that creates the BATATP observations:

      IF I_AUDIT='I' or J_AUDIT='J' ;

   o  When ATPTYPE='MSH', indicating that the current BATATP
      observation represents execution of the shell portion
      of a multi-trans TP, the ACCTNOx values should be set
      to your data center's overhead account.  The execution
      of the shell portion of a multi-trans TP cannot be
      attributed to an individual user.  An exception to this
      would be if the multi-trans TP was set up exclusively
      for the use of one group within your enterprise.  The
      ACTFLDx values found in SMF type 33 record for a
      multi-trans shell come from the TP profile defining the
      TP and not from a requesting partner.

   o  Make sure that you assign default data center overhead
      ACCTNOx values if the appropriate values cannot be set
      from the fields available.  As with the ACCTRTE exit
      described in Section 7.2.2, it is very important to
      make sure your APPCRTE is coded so that invalid values
      do not end up in the ACCTNOx data elements.

      Note:  Allowing invalid account codes into the CA MICS
             database will increase the number of records
             and therefore the DASD space requirements of the
             Batch Information Area files.  This could result
             in unnecessarily large DASD requirements.

EXAMPLE

The following example assumes that the data center has three
account code levels, and that the only valid division codes
are DEV, PRD, and TST.

    ACCTNO1 is set from the ACTFLD1 value passed from the
            requesting partner TP.  The ACTFLD1 value is
            checked against the valid division codes, and if
            invalid, ACCTNO1 is set to '***'.

    ACCTNO2 is set from the first three characters of the TP
            Name.  A user defined SAS format, $TPNCHK, is
            maintained with all valid projects.  Valid
            projects return a value of 'OK' when PUT with SAS
            format $TPNCHK.  If not 'OK', then ACCTNO2 is set
            to '***'.

    ACCTNO3 is set equal to the RACFUSID field of the
            requesting partner TP.  No validation is
            performed because APPC/MVS has been implemented
            with User ID Verification.  This means that
            APPC/MVS ASCH-scheduled TP requests are only
            satisfied when the requesting partner TP presents
            APPC with a valid userid/password.

    In all cases, ACCTNO1-3 are set to overhead values when
    the ATPTYPE is 'MSH', meaning that the record represents
    the execution of the shell portion of a multi-trans TP.

The ACCOUNT member for the account definition above is:

    1 3  'DIVISION'
    2 5  'PROJECT'
    3 8  'USER'
    4 1  'Unused 4'
    5 1  'Unused 5'
    6 1  'Unused 6'
    7 1  'Unused 7'
    8 1  'Unused 8'
    9 1  'Unused 9'

The following exit routine implements the above
specifications:

* ABC'S ACCOUNT CODE DERIVATION EXIT
*
*   DIVISION IS BUILT FROM POSITIONS 1-3 OF ACTFLD1.
*
*   PROJECT IS TAKEN FROM THE FIRST THREE CHARACTERS OF TP
*           NAME (ATPNAME) AND VERIFIED WITH SAS FORMAT
*           $TPNCHK.
*
*   USER NAME IS SET TO THE RACFUSID OF THE REQUESTING TP
*
*   MULTI-TRANS TP SHELLS ARE ASSIGNED TO OVERHEAD ACCOUNT
*   AS ARE NON-SHELL TPS WITH INVALID DIVISION OR PROJECTS
* ;

   /* SAMPLE APPCRTE ROUTINE EXIT CODE                  */
   /*                                                   */
   /* SET OVERHEAD VALUES                               */
   /*                                                   */
     ACCTNO1='***' ;
     ACCTNO2='*****';
     ACCTNO3='********';
     ACCTNO4=' ' ;
     ACCTNO5=' ' ;
     ACCTNO6=' ' ;
     ACCTNO7=' ' ;
     ACCTNO8=' ' ;
     ACCTNO9=' ' ;
    IF ATPTYPE='MSH' THEN GOTO ACCTRTEX ; /* use defaults */
    ELSE DO ;
      ACCTNO1=SUBSTR(ACTFLD1,1,3) ;
      IF ACCTNO1 NE 'DEV' AND ACCTNO1 NE 'PRD'
                          AND ACCTNO1 NE 'TST' THEN DO ;
         ACCTNO1='***' ;
      END ;
      ACCTNO2=SUBSTR(ATPNAME,1,3) ;
      IF PUT(ACCTNO2,$TPNCHK.) NE 'OK' THEN ACCTNO2='***' ;
      ACCTNO3=RACFUSID ;
      GOTO ACCTRTEX ;
    END;
    ACCTRTEX:

Use the worksheet in Figure 7-3 to code your account code
exit routine (ACCTRTE).

+--------------------------------------------------------------------------+ | INSTALLATION PREPARATION WORKSHEET: APPC/MVS Account Code Routine | | | | PARMS Library Member is APPCRTE | | Reference: Section 7.2.3, CA MICS Batch and Operations Analyzer Guide | +--------------------------------------------------------------------------+ | | | ________________________________________________________________________ | | | | ________________________________________________________________________ | | | | ________________________________________________________________________ | | | | ________________________________________________________________________ | | | | ________________________________________________________________________ | | | | ________________________________________________________________________ | | | | ________________________________________________________________________ | | | | ________________________________________________________________________ | | | | ________________________________________________________________________ | | | | ________________________________________________________________________ | | | | ________________________________________________________________________ | | | | ________________________________________________________________________ | | | | ________________________________________________________________________ | | | | ________________________________________________________________________ | +--------------------------------------------------------------------------+ | ....5...10...15...20...25...30...35...40...45...50...55...60...65...70.. | +--------------------------------------------------------------------------+


 Figure 7-3.  APPC Account Code Exit Routine Worksheet