Previous Topic: 10.2.3 Parameter-Related ExitsNext Topic: 10.3 Program Modifications to the Assembler Routines


10.2.4 Output Exits

Output exits are invoked just prior to adding the observation
to the DETAIL timespan of the file.  These exits can be used
to modify the value of elements or prevent selected
observations from being added.


+-----------------+
| _ U S R S f f f |
+-----------------+

DESCRIPTION:
   The _USRSfff exit provides the ability to modify or select
   observations immediately prior to output.  The files
   available (fff) are:

          ISY             _IA
          ISU             IAC
          _IS             INC
          IAU             IDB

INVOCATION:
   These exits are invoked in the information area processing
   phase of the DYIMSFM1 or #fffDSUM routines immediately
   before output of the file.  See Chapter 9 of this guide
   for more information.

ACCOUNTING INTERFACE:
   No interface is provided.

USES:
   The exit allows elements to be modified and observations
   to be excluded from processing.

ELEMENTS AVAILABLE:
   All elements in the file are available.

CODING RESTRICTIONS:
   See the System Modification Guide, Section 4.3.2.2.


+-----------------+
| _ U S R D f f f |
+-----------------+

DESCRIPTION:
   The _USRDfff exit provides the ability to calculate the
   cost data elements immediately prior to output.  The files
   and elements available are:

          File      Element
          ----      -------
          ISU       ISUCOST
          _IS       ISUCOST
          IAC       IACCOST

INVOCATION:
   These exits are invoked in the information area processing
   phase of the #fffDSUM routine immediately before output of
   the file.  See Chapter 9 of this guide for more
   information.

ACCOUNTING INTERFACE:
   No interface is provided.

USES:
   The exit allows the ISUCOST and IACCOST data elements to
   be calculated.

ELEMENTS AVAILABLE:
   All elements in the file are available.  Only the value of
   the fffCOST data element may be modified.

CODING RESTRICTIONS:
   See the System Modification Guide, Section 4.3.2.2.


+-----------------+
| _ U S R R L I   |
+-----------------+

This exit is obsolete.  The IMSRLRT exit is available at the
same invocation point and should contain any logic previously
held in _USRRLI.


+-----------------+
| _ U S R X f f f |
+-----------------+

DESCRIPTION:
   CA MICS does not support the DETAIL timespan directly for
   files that can have many observations.  These files are:

     ISU, _IS, IAU, _IA, IAC, IDB

   In the _USRXfff macro, user exits can be coded to retain
   detail observations when detail data is needed.  Detail
   data for these files can be written to the DETAIL timespan
   or to a separate user-defined data set on DASD or on tape.

*************************************************************
*                                                           *
*  NOTE:  If Incremental Update is active, be sure to       *
*         review the special considerations in Section      *
*         10.1.6.1 of this guide before invoking            *
*         USRXfff exits.                                    *
*                                                           *
*************************************************************

AUXILIARY MACROS FOR USE WITH USRXfff MACROS:
   Since there is such a large amount of data that is needed
   when processing the detail level observations, the IMS
   Analyzer divides the observations into two work files:

   o  The IMSISF work file contains only Fastpath (FP)
      EMH-scheduled transaction data for non-BMC MAINVIEW for
      IMS Online systems.

   o  The IMSISW work file contains full function (FF) and
      mixed (MM) transaction data for non-BMC MAINVIEW for
      IMS Online systems.  It contains all transaction data
      for non-BMC MAINVIEW for IMS Online systems.

   In each example given in the checklist below, the %WRKMERG
   macro is used in the SET statement with values ISF or ISW
   assigned to WRK for the work files IMSISF or IMSISW.

INVOCATION:
   To write DETAIL level data to the DETAIL timespan, use the
   checklist below.

   ___ 1.  If the detail level file is to be created in each
           IMS unit for the complex, then expand the macro in
           sharedprefix.MICS.SOURCE(#IMSEXIT).  If the detail
           level file is to be written only in some IMS
           units, then code the macro in the #IMSEXIT member
           of each prefix.MICS.USER.SOURCE library that
           requires it.  In these cases the macro should be
           coded after the %INCLUDE SOURCE(#IMSEXIT) call.

           In each example given below, the detail level file
           is written to the DETAIL timespan with the ddname
           "&IMSX.".  However, the detail level file can be
           written to a user-defined file on DASD or on tape,
           requiring a special ddname in place of "&IMSX."
           and a corresponding DD statement in the JCL.

   ___ 2.  Make backup copies of the #IMSEXIT members to be
           modified.

   ___ 3.  Review the descriptions of the FILE statement as
           provided in Section 4.2.4.2 of the System
           Modification Guide (SMG).

   ___ 4.  In sharedprefix.MICS.GENLIB(IMSGENIN), update the
           FILE statement for each file to be activated in
           the DETAIL timespan.  Change the file status from
           "N" to "Y".  See the System Modification Guide
           (SMG), Section 6.2.2.2.  To write the file to a
           user-defined library, code "N" in the DETAIL
           timespan and "E" for the DAYS timespan.

              NOTE: To write detail observations for any of
              the files, IMSIAC, IMSIAU, IMSISU, IMS_IA, or
              IMS_IS, the DAYS timespan must be active for
              that file.  The DAYS timespan can be made
              active by coding an "E" in the DAYS position of
              the FILE statement.

   ___ 5.  Update the NAME/NAMX statements in the IMSGENIN
           member of sharedprefix.MICS.GENLIB to activate or
           deactivate data elements in the DETAIL timespan of
           each file that will be activated.  Elements that
           are in the IMSISU file but not in the IMSIAU and/
           or IMSIAC files can be added to either of these
           files by copying the NAME or NAMX statements that
           follow the IMSISU file statement to a position
           under the File statement for IMSIAU or IMSIAC.
           The prefix of the element name will need to be IAU
           or IAC, depending on where the element is to be
           placed.  Thus, the ISUINCH element would become
           IACINCH in the IMSIAC file.  In the same way,
           elements under the File IMSISF can be defined in
           the IMS_IA (with prefix IAU) or under IMS_IS (with
           prefix ISU).

           For elements to be active at the detail level of
           IMSIAC or IMSIAU, they must be active in the DAYS
           timespan of the same file, and the corresponding
           elements must be active in the DAYS timespan of
           the IMSISW file.  Also, for elements to be active
           in the detail timespan of IMS_IA, they must be
           active in the DAYS timespan of IMS_IA and IMSISF.

           When an element is not active in the IMSISU file
           and its corresponding elements in the IMSIAC and
           IMSIAU files are not active, then it should be
           deactivated under the IMSISW file statement to
           save DASD space.  When an element is not active in
           the IMS_IS or IMS_IA files, then its corresponding
           element should be turned off under the IMSISF file
           to save DASD space.  Also, by turning off such
           summarizing elements as averages, minima, maxima,
           and response time distributions at the detail
           level, additional DASD space can be saved.

   ___ 6.  Submit shareprefix.MICS.CNTL(IMSCGEN).

   ___ 7.  To write to the DETAIL.IMSISU file on disk, use
           one of the following examples as a model for the
           code to be inserted within the _USRXISU macro in
           #IMSEXIT from sharedprefix.MICS.SOURCE or from
           prefix.MICS.USER.SOURCE.

      /*****************************************************/
      /***               EXAMPLE ONE                     ***/
      /***                                               ***/
      /*** This will write the file in compressed format ***/
      /*** (if compression is on) and will use the KEEP  ***/
      /*** macro for the IMSISW file.                    ***/
      /*****************************************************/

      MACRO _USRXISU
      /*       CREATE DETAIL USER ACTIVITY FILE - FF       */
      DATA &IMSX..IMSISU00(KEEP=%%ISWKEEP(TS=DETAIL)
                           COMPRESS=%%INTRST(CCC=IMS)
                           LABEL="&ISUSFDF");
        SET %%WRKMERG(WRK=ISW,CCC=IMS);
        BY %%ISUSEQ(TS=DETAIL);
        %%ISULEN(TS=DETAIL);
        %%ISUFMT(TS=DETAIL);
        %%ISULBL;
        RUN;
        %

      /*****************************************************/
      /***               EXAMPLE TWO                     ***/
      /***                                               ***/
      /*** Write DETAIL.IMSISU to disk forcing the       ***/
      /*** output to compressed format regardless of the ***/
      /*** compression option and still using the KEEP   ***/
      /*** macro for the IMSISW file.  If compression is ***/
      /*** not desired, then change YES to NO for the    ***/
      /*** COMPRESS keyword or eliminate the COMPRESS    ***/
      /*** keyword altogether.                           ***/
      /*****************************************************/

      MACRO _USRXISU
      /*       CREATE DETAIL USER ACTIVITY FILE - FF       */
      DATA &IMSX..IMSISU00(KEEP=%%ISWKEEP(TS=DETAIL)
                           COMPRESS=YES LABEL="&ISUSFDF");
        SET %%WRKMERG(WRK=ISW,CCC=IMS);
        BY %%ISUSEQ(TS=DETAIL);
        %%ISULEN(TS=DETAIL);
        %%ISUFMT(TS=DETAIL);
        %%ISULBL;
        RUN;
        %

      /*****************************************************/
      /***               EXAMPLE THREE                   ***/
      /***                                               ***/
      /***     CREATE DETAIL USER ACTIVITY FILE - FF     ***/
      /*** Write DETAIL.IMSISU to disk providing a       ***/
      /*** user-written KEEP list, again using file      ***/
      /*** compression.  Any elements in the KEEP list   ***/
      /*** must be active in the IMSISW file.  To turn   ***/
      /*** off compression, code COMPRESS=NO.            ***/
      /*****************************************************/

      MACRO _USRXISU
      /*       CREATE DETAIL USER ACTIVITY FILE - FF       */
      DATA &IMSX..IMSISU00
           (KEEP=IMSID PSBNAME TRANSACT STARTTS ENDTS
                 ISUTRSTM ISUTRANS ISUCPUTM COMPRESS=YES
                 LABEL="&ISUSFDF");
        SET %%WRKMERG(WRK=ISW,CCC=IMS);
        BY %%ISUSEQ(TS=DETAIL);
        %%ISULEN(TS=DETAIL);
        %%ISUFMT(TS=DETAIL);
        %%ISULBL;
        RUN;
        %

   ___ 8.  Use the following as a model for the code to write
           the IMS_IS00 file at the detail level. (Techniques
           from Step 7 could be used to enhance this macro.)

      MACRO _USRX_IS
      /*       CREATE DETAIL USER ACTIVITY FILE - FP       */
      DATA &IMSX..IMS_IS00(%%_ISFILE(OP=FILEOPTS,TS=DETAIL)
                           LABEL="&_ISSFDF");
        SET %%WRKMERG(WRK=ISF,CCC=IMS);
        BY %%_ISSEQ(TS=DETAIL);
        %%_ISLEN(TS=DETAIL);
        %%_ISFMT(TS=DETAIL);
        %%_ISLBL;
        RUN;
        %

   ___ 9.  Code the _USRXIAU macro to write the detail data
           for IMSIAU00 as follows.  (Techniques from Step 7
           could be used to enhance this macro.)

      MACRO _USRXIAU
      /*         CREATE DETAIL APPL UNIT FILE - FF         */
      DATA &IMSX..IMSIAU00(%%IAUFILE(OP=FILEOPTS,TS=DETAIL)
                           LABEL="&IAUSFDF");
        SET %%WRKMERG(WRK=ISW,CCC=IMS,R=IAUREN);
        BY %%IAUSEQ(TS=DETAIL);
        %%IAULEN(TS=DETAIL);
        %%IAUFMT(TS=DETAIL);
        %%IAULBL;
        RUN;
        %

   ___ 10. Code the _USRX_IA macro to write the detail data
           for IMS_IA00 as follows.  (Techniques from Step 7
           could be used to enhance this macro.)

      MACRO _USRX_IA
      /*         CREATE DETAIL APPL UNIT FILE - FP         */
      DATA &IMSX..IMS_IA00(%%_IAFILE(OP=FILEOPTS,TS=DETAIL)
                           LABEL="&_IASFDF");
        SET %%WRKMERG(WRK=ISF,CCC=IMS,R=IAUREN);
        BY %%_IASEQ(TS=DETAIL);
        %%_IALEN(TS=DETAIL);
        %%_IAFMT(TS=DETAIL);
        %%_IALBL;
        RUN;
        %

   ___ 11. To write detail level data for IMSIAC00, code the
           _USRXIAC macro as follows.  (Techniques from Step
           7 could be used to enhance this macro.)

      MACRO _USRXIAC
      /*          CREATE DETAIL USER APPL COUNT            */
      DATA &IMSX..IMSIAC00(%%IACFILE(OP=FILEOPTS,TS=DETAIL)
                           LABEL="&IACSFDF");
        SET %%WRKMERG(WRK=ISW,CCC=IMS,R=IACREN)
            %%WRKMERG(WRK=ISF,CCC=IMS,R=IACREN);
        BY %%IACSEQ(TS=DETAIL);
        %%IACLEN(TS=DETAIL);
        %%IACFMT(TS=DETAIL);
        %%IACLBL;
        RUN;
        %

   ___ 12. Code the _USRXIDB macro to write detail level data
           for the IMSIDB00 file.  (Techniques from Step 7
           could be used to enhance this macro.)

      MACRO _USRXIDB
      /*         CREATE DETAIL DATABASE ACTIVITY           */
      DATA &IMSX..IMSIDB00(%%IDBFILE(OP=FILEOPTS,TS=DETAIL)
                           LABEL="&IDBSFDF");
        SET %%WRKMERG(WRK=IDB,CCC=IMS);
        BY %%IDBSEQ(TS=DETAIL);
        %%IDBLEN(TS=DETAIL);
        %%IDBFMT(TS=DETAIL);
        %%IDBLBL;
        RUN;
        %

      ****************************************************
      *  Repeat the following steps for each database    *
      *  unit containing the IMS Analyzer.               *
      ****************************************************

   ___ 13. Adjust the retention values for the DETAIL cycle
           for each IMS file in prefix.MICS.PARMS(DBMODEL) so
           that the right number of cycles will be retained.
           If the detail cycle is to be written to a user-
           defined SAS data library, then 00 should be coded
           for the detail cycle.  See Section 7.3.8.

   ___ 14. Submit the job in prefix.MICS.CNTL(CYCLEGEN).

ACCOUNTING INTERFACE:
   No interface is provided.

USES:
   The exits allow the DETAIL fff files to be created along
   with specialized data selection to be done. (See SELECTION
   CONSIDERATIONS below.)

ELEMENTS AVAILABLE:
   All elements in the files are available.

CODING RESTRICTIONS:
   See the System Modification Guide,  Section  4.3.1.

SELECTION CONSIDERATIONS:
   The %ISWSET macro may be called by user exits to reduce
   the summarized versions of the IMSISU, IMSIAC, or IMSIAU
   files by reducing the IMSISW work file first.  Likewise,
   the %ISFSET macro can subset the IMSISF work file to
   reduce the number of transactions in the summarized
   timespans of the IMS_IS, IMSIAC, or IMS_IA files.  After
   the transactions in the work file are reduced, they will
   be reduced in each summary file that is populated from it.
   Here is the processing order for the files populated from
   IMSISW:

     first      - IMSIAC (subset in the _USRXIAC exit)
     second     - IMSISU (subset in the _USRXISU exit)
     third      - IMSIAU (subset in the _USRXIAU exit)
     last       - IMSISY

   The processing order for files populated from IMSISF is:

     first      - IMSIAC (subset in the _USRXIAC exit)
     second     - IMS_IS (subset in the _USRX_IS exit)
     third      - IMS_IA (subset in the _USRX_IA exit)
     last       - IMSISY

   If subsetting (deleting observations from the IMSISW file)
   is done in the _USRXIAC exit, then all the files IMSIAC,
   IMSISU, and IMSIAU will have a reduced number of
   observations.  However, if subsetting takes place in the
   _USRXIAU macro, then the IMSIAC and IMSISU files will have
   all the observations while the IMSIAU file will have a
   reduced number of observations.  This same logic applies
   to the IMSISF work file selection as well.

   Furthermore, the transaction-related fields in the IMSISY
   file are populated from a summarization of either the
   DAYS.IMS_IS file (if it exists) or the DAYS.IMS_IA file
   (if the DAYS.IMSISU file does not exist).

   The indirect exit method as explained in the CA MICS
   System Modification Guide, Section 4.3.1.2, activates the
   selection logic for the %ISWSET and %ISFSET macros.  The
   exit identifier is ISWSEL for %ISWSET and ISFSEL for
   %ISFSET.  The following examples show how they are used:

   Example 1. Code this in prefix.MICS.USER.SOURCE(#IMSEXIT):

        MACRO _USRXIAU
          %%ISWSET;
        %
        %LET ISWSEL = USRSEL1;

     USRSEL1 is the name of a member of the same library and
     contains conditional logic such as the following:

        IF IMSAPU NE TESTAPPL;

   Example 2. Code this in prefix.MICS.USER.SOURCE(#IMSEXIT):

        MACRO _USRX_IA
          %%ISFSET;
        %
        %LET ISFSEL = USRSEL2;

     USRSEL2 is the name of a member of the same library and
     contains conditional logic such as the following:

        IF IMSAPU NE TESTAPPL;