COPYRIGHT (C) 1984-2008 MERRILL CONSULTANTS DALLAS TEXAS USA

CHANGE 25.25

 
        MXG Version 25.25  is dated Jan 28, 2008, thru Change 25.309
First   MXG Version 25.25 was dated Jan 21, 2008, thru Change 25.302
        MXG Version 25.12 was dated Jan 21, 2008, thru Change 25.294
        MXG Version 25.11 was dated Dec  7, 2007, thru Change 25.268
First   MXG Version 25.11 was dated Nov 22, 2007, thru Change 25.256
        MXG Version 25.10 was dated Oct  7, 2007, thru Change 25.215
        MXG Version 25.09 was dated Sep 17, 2007, thru Change 25.199
        MXG Version 25.08 was dated Sep  5, 2007, thru Change 25.187
First   MXG Version 25.08 was dated Sep  4, 2007, thru Change 25.182
        MXG Version 25.07 was dated Aug 10, 2007, thru Change 25.161
        MXG Version 25.06 was dated Jul  4, 2007, thru Change 25.134
        MXG Version 25.05 was dated Jun  7, 2007, thru Change 25.107
        MXG Version 25.04 was dated May  7, 2007, thru Change 25.086
Second  MXG Version 25.03 was dated Apr 12, 2007, thru Change 25.058
First   MXG Version 25.03 was dated Apr 10, 2007, thru Change 25.057
        MXG Version 25.02 was dated Mar 10, 2007, thru Change 25.033
        MXG Version 25.01 was dated Mar  5, 2007, thru Change 25.025
        MXG Version 24.24 was dated Feb  5, 2007, thru Change 24.306
        MXG Newsletter FORTY-NINE was dated Feb 5, 2007

MXG 25.25 is the 2008 "Annual Version", dated January 28, 2008.

Instructions for ftp download of MXG 25.25 were mailed to all licensees,
but you can always request ftp download instructions using the form at
  http://www.mxg.com/ship_current_version

Contents of member CHANGES:

  Member NEWSLTRS (and the Newsletters frame at http://www.mxg.com) now
  contain the current MXG Technical Notes that used to be put in member
  CHANGES between Newsletters.  New Technical Notes are now added (and
  now dated!) in NEWSLTRS/Newsletters with each new MXG Version.

I.    Current MXG Software Version 25.25 is available upon request.
II.   Incompatibilities and Installation of MXG 25.25.
III.  Online Documentation of MXG Software.
IV.   Changes Log

=======================================================================


I.  MXG Version 25.25, now re-dated Jan 28, 2008.

    Minor cosmetic corrections in MXG 25.25, re-dated Jan 28, 2008

  TYPEXAM  25.307  Extraneous PUT from testing removed.
  ASUM70PR 25.303  Extraneous PROC PRINT from testing was removed.

    Minor enhancements in MXG 25.25, re-dated Jan 28, 2008

  TYPERMFV 25.309  Support for RMF III CPD, Channel Path Data Table.
  TYPE102  25.306  IBM SMF 102 IFCID 22 APAR PK38803 wrong, supported.
  TYPE30   25.304  Support for APAR OA23679, BLKSIZE might be wrong.
  COMPINTV 25.302  Capture/Compare ALL CPU times in 30/70/72/100/101/110

    Major enhancements added in MXG 25.25, dated Jan 21, 2008

  ADOCs    25.296  All ADOCxxxx member's CONTENTS were updated.

    Major enhancements added in MXG 25.12, dated Jan 21, 2008

  TYPEDB2  25.265  DB2TCBTM Correction for DB2 V9.1, REQUIRED.
  TYPEDB2  25.291  DB2ACCT variable QWACUDCP CPU time added in DB2TCBTM.
  TYPE122  25.287  Support for SMF 122, Tivoli Tape Allocation Manager
  TYPEITRF 25.286  Support for ITRF DCR77/DCR78 additions.
  TYPENTSM 25.282  Support for new NTSMF Objects, Database Mirroring.
  TYPEMQLG 25.280  Support for MQ V6 System Admin Accounting Queue Log.
  TYPE85   25.279  Support for subtypes 38, 39 and 40 for ID=85 OAM.
  TYPEPSYC 25.277  Support for PSYNCH/390 SMF record.
  TYPE22   25.276  Support for APAR OA20043 Dynamic Volume Expansion
  TYPE102  25.306  Support for APAR PK38803 INCOMPAT SMF 102 IFCID 22.
  TYPE50   25.269  Support for OSA-MPC VTAM SMF 50 subtype 4 record.
  TYPETIMS 25.271  Revisions for TMON/IMS support
  ASUM70PR 25.270  INTERVAL=DURSET cannot be used.
  CONFIGV9 25.267  VALIDVARNAME=V7 added to SAS CONFIGs.
  ITRMTNG  25.262  233 DDU files to create ITRM definitions for TYPETNG.

    Major enhancements added in MXG 25.11 dated Dec  7, 2007.

  TYPE111  25.241  Support for CICS CTG 7.1.0 new SMF 111 record.
  TYPE110  25.240  Full Support for CICS/TS 3.2 Compressed Data
  EXITCICS 25.240  New "CICS" INFILE EXIT for CICS compressed SMF data.
  TYPE7072 25.224  CPUTYPE tests are replaced with ZARCHMDE tests.
                    This means that with MXG 25.11 or later, a new IBM
                    CPUTYPE will NOT require a new MXG Version.
  TYPETPMX 25.239  Support for Thruput Manager SLM and DB2 data.
  TYPE82   25.257  Support for ISCF HCR7750 TKE Logging update.
  TYPEEVTA 25.255  Support for Action Software's EventAction user SMF.
  TYPE85   25.234  New variables in OAM subtype 32-35 records.
  TYPE78   25.236  Zero obs in TYPE78IO with Change 24.171 if z/OS 1.7.
  TYPEEVTA 25.255  Support for Action Sofware's EventAction SMF record.
  TYPERMFV 25.246  Updates for CPU Segmentation changes.
  TYPENTSM 25.253  Support for new NTSMF objects for MSSQL.
  TYPETNG  25.221  Support for VM Ware VSX Systems in CA NSM records.
  TYPETNG  25.235  New Solaris, AIX, and many RedHat objects added.
  VMXGSUM  25.248  New &LNSUMOUT=8 will make all output to length 8.
  UTILEXCL 25.256  Macro variable &MXGDEBUG revised for IMACEXCL plus!
  EXITCICS 25.240  MCTSSCRL now tested vs MCTMNOPN for CICS Compressed.
  TYPE110  25.240  MCTSSCRL now tested vs MCTMNOPN for CICS Compressed.
  UPRINDOC 25.226  Utility prints NAME and LABEL of all variables.
  TYPE30   25.260  MXG 25.10, INTRVLTM missing for TYPETASK='OMVS'
  ANALACTP 25.254  Sample report summarizes DB2 Package data to UOW.
  CONFIGW2 25.252  MXG updates for testing MXG Execution under WPS.

    Major enhancements added in MXG 25.10.

  TYPE7072 25.205  Support for z/OS 1.9, up to 54 CPUs per MVS, INCOMPAT
  TYPERMFV 25.204  CFI Segmentation eliminates RMF III skipped CF data.
  ANALDB2R 25.202  VARIABLE QBnTDPIO NOT FOUND error corrected.
  TYPE70   25.212  ZIPACTTM, PCTZIPBY corrected for Dedicated zIIPs.
  ASUMCELP 25.209  Duplicate observations in PDB.ASUMCELP eliminated.
  TIMEBILD 25.209  Optional SYNC59 timeshifting using TIMETABL.

    Major enhancements added in MXG 25.09.

    IMPORTANT CHANGES:

    Almost none!  Only UTILEXCL in 25.08 had an error, but these other
                  fixes/enhancements are now ready for prime time:

  UTILEXCL 25.193  MXG 25.08 ONLY: LABEL IMACICU3 NOT FOUND.
  TYPERMFV 25.191  Support for RMF Monitor III CFI table enhancements.
  TYPESRDF 25.195  Support for EMC's SRDF/A user SMF record.
  READDB2  25.189  New PDBOUT=YES, old PDBOUT= changed, writes to WORK.
  ANALDB2R 25.189  New PDBOUT=YES, old PDBOUT= changed, writes to WORK.
  RMFINTRV 25.199  SMF70GIE now reset to 00/15 if SYNC59=YES is used.
  TYPE89   25.198  SMF89HOF,SMF89DTO were incorrect due to typo.
  UTILCSV  25.197  %UTILCSV creates a CSV (or TAB) Delimited flat file.
  UTILBLDP 25.196  Large &MACKEEP string caused strange results.
  TYPE92   25.192  New ID=92 ST=14 INPUT EXCEEDED if not a RENAME.

    Major enhancements added in MXG 25.08.

    IMPORTANT CHANGES:

  TYPETNG  25.181  Support for CA NSM RedHat 4.01 Linux perf cube.
  TYPE7072 25.176  Support for APAR OA18244, Blocked Workload z/OS 1.9.
  TYPE7072 25.163  Support for Capacity Groups variables in TYPE70.
  ASUM70PR 25.163  Capacity Group summarization, PDB.ASUM70GC/ASUM70GL.
  TYPEQACS 25.178  AS400 APAR QAPMDISK with LRECL=456 added new data.
  ADOCDB2  25.172  Example to process DB2 datasets to separate DDNAMES.
  TYPEDB2  25.169  _RDB2ACC DB2 Parallel event "analysis" example.
  Many     25.179  %UPCASE,%LOWCASE,%STR,%BQUOTE,%QUOTE, etc.
  Doc      25.179  Use %LET MACxxxx= %STR( text ) ; to pass text.


    Major enhancements added in MXG 25.07.

    CRITICAL CHANGE:

  TYPE78   25.141  APAR OA21799 for HiperPAV, ABEND, SMF78HIX invalid.
                   Installing HyperPAV can create invalid RMF 78-3's
                   that cause BUILDPDB to ABEND as it reads RMF 78's.
                   Change 25.141 will detect bad records and avoid the
                   ABEND, but you will need to install the IBM PTF for
                   the APAR to correct the invalid data values.

    IMPORTANT CHANGES/ENHANCEMENTS:

  Many     25.140  Prelim z/OS 1.9 (fails if 54-CPs, See Ch 25.205)
  TYPECIMS 25.139  Support for IMF Version 4.3 (INCOMPATIBLE).
  TYPE74   25.140  APAR OA17070 supports CF Level 15 measurements.
  TYPE89   25.138  Support for APAR OA20314 new SMF89LPN/SMF89ZNA.
  TYPE80A  25.137  Support for unknown TOKDANAMs, prevents ABEND.
  UTILLPDS 25.136  Utility to count used/defined PDS Directory Blocks.
  TYPE7072 25.135  LCPUCAP/LCPUCAPC Labels include "Hard CAP".
  TYPE42   25.153  MXG 25.06 only, false INVALID TYPE42 SUBTYPE 5 error.
  TYPEVMXA 25.151  180 Error _MPRCAPC not found, DEBUG prints removed.
  ASUM70PR 25.150  ASUM70PR created PCTCPUBY GT 100%, final fix?
  ASUM70PR 25.150  ASUM70PR now supports INTERVAL/CECINTRV=SHIFT.
  ADOCITRM 25.149  Doc. Maps ITRM dataset names to MXG name.
  ADOCDB2  25.148  Doc. How to create DB2ACCTB/DB2ACCTP in separate DDs.
  ANALRMFR 25.146  ERROR: NO DATASETS TO LOOKUP correction.
  TYPERMFV 25.145  RMF III dataset ZRBLCP missing obs for many LPARs.
  UPCMEMDZ 25.144  ASCII utility to determine memory available to MXG.
  TYPE71   25.143  SWAPrates were set missing if zero, now can be zero.
  VMXGINIT 25.143  New MXGMISS macro variable changes TYPE71 SWAPrates.

    Major enhancements added in MXG 25.06.

  TYPE30   25.116  MXG 25.05, negative EXECTM, INTRVLTM, GMTOFF30 wrong.
  TYPE110  25.041  Support for CICS/TS 3.2 (INCOMPATIBLE), Uncompressed.
  TYPEBTE  25.107  Support for CA Brightstor Tape Encryption SMF.
  TYPE80A  25.131  Support for CRL PUBLISH and SET UID RACFEVNT 52, 79.
  TYPEFERT 25.133  Support for Williams Data FERRET product user SMF.
  TYPECLAR 25.130  Support for Clarion Disk Array flat files.
  TYPE119  25.119  SMF 119 from z/OS 1.8 caused INVALID DATA messages.
  TYPESYNC 25.117  INVALID ARGUMENT due to incorrect HEX4/HEX3 formats.
  ASUMUOW  25.121  Enhanced to keep each CICS segment response time.
  ASUMHSM  25.113  HSM Summary enhanced with "HSM COMPLEX" HSMPLEX.
  IHDRIDMS 25.112  CA IDMS PerfMon support enhanced with "IHDR" exit.
  TYPENMON 25.110  Support for DISKBUSYn for all NMON Disk Monitoring.
  TYPERACF 25.134  Support for IRRDBU00 record types 0560,0561,0562.
  TYPE80A  25.131  Support for TOP SECRET (INCOMPAT) '90'x,'00'x VRSN.

    MXG Version 25.05, dated Jun  7, 2007.

    Major enhancements added in MXG 25.05.

  TYPEITRF 25.103  Support for IBM OMEGAMON TRF ITRF V550 and V560.
  TYPENMON 25.104  Full support for NMON, Nigel's Monitor for AIX/unix.
  TYPEDB2  25.090  Support for PK37354 SMF 101 Subtype 4 in DB2 9.
  TYPEDB2  25.097  Variable THREADTY blank if non-DDF transaction.
  TYPE30   25.089  GMTOFF30 calculation corrections and problems.
  CONFIGV9 25.101  MEMLEAVE=10M SORTBLOCKMODE now set in CONFIGV9
  UTILBLDP 25.098  %UTILBLDP(BUILDPDB=JES3 ... enhancement.

    Major enhancements added in MXG 25.04.

  TYPE21   25.083  Fix for support for APAR OA20077 Device Bytes TYPE21.
  TYPEXAM  25.082  Support for XAM Release 3.6, many new data.
  TYPENMON 25.073  Support for LPAR and IOADAPTR Nigel's NMON data.
  SYSLOG   25.070  Support for SYSLOG file enhanced, all records output.
  TYPENDM  25.081  Support for NDM-CD type 'NM' records creates NDMNM.
  DALYTAPE 25.072  Sample tape reports from STC VTS SMF + MXGTMNT.
  TYPERMFV 25.079  ZRBLCP dataset had only first LPARs observations.
  TYPEDB2  25.064  Several QISE variables were wrong.
  TYPEDB2  25.075  QBGL variables in DB2 V8.1 now spuported, were wrong.
  TYPETMS5 25.084  FILSEQ in TMS.DSNBRECD could be wrong, mult-vol-file.
  ANALDB2R 25.068  SQL Text QW0141TX was not printed, coding error.
  UTILBLDP 25.071  Products that need deaccumulation now protected.
  UTILBLDP 25.065  Default list of ASUMxxx to be included, MXGINCL=.
  VMXGRMFI 25.069  Service Class Names can be "wild-carded"
  VMXGUSE  25.067  Revised to invoke _STY70; UTILBLDP recommended.
  FORMATS  25.063  Additional SWAP reason codes added to $MG079SR.
  Doc      25.078  List of MXG-issued USER ABEND values & source member.


    Major enhancements added in MXG 25.03.

  CONFIGV8 25.037  SORTEQUALS should NOT have been in CONFIGV8, V9 only.
  TYPE119  25.035  Support for SMF 119 for z/OS 1.8 (INCOMPATIBLE).
  TYPE1415 25.047  Support for APAR OA19502, SMF14KET Key Exchange Time
  TYPE21   25.040  Support for APAR OA20077, uncompress read/write bytes
  TYPEAIXT 25.039  Support for AIX Tapas-C performance data files.
  TYPESAMS 25.055  Support for SAMS objects 2151,2226,2229 and 2231.
  TYPETDS  25.052  Support for TDSLink Version 630 ZCOST datasets.
  TYPECSM  25.050  Support for CrossSysplexManager user SMF record.
  TYPSCOCR 25.034  Support for CopyCross (now VTF Mainframe 2.1.0) SMF.
  VMXGDUR  25.044  Interval= QUARTER, SEMIANN, ANNUAL now supported.
  TYPEHSM  25.042  Process HSM with different SMF IDs/different SYSTEMs.
  ASUMTAPE 25.040  Uncompress read/write SMF21DBR/DBW kept in ASUMTAPE.
  ASUMUOW  25.054  QWACSPCP,QWACTRET added to PDB.ASUMUOW for OTE.
  ASUMCEC  25.053  PDB.ASUMCEC, PCTCPUBY GT 100%, DURATM LT CECINTRV.
  BLDSMPDB 25.048  Corrections to BLDSMPDB, new SORTEDBY= option.

    Major enhancements added in MXG 25.02.

    MXG 25.02 was created to protect sites who set the NOSORTEQUALS
    option (i.e., changed the SORTEQUALS default). NOSORTEQUALS causes
    invalid data in ASUM70PR-built datasets.

  CONFIGV9 25.028  OPTION NOSORTEQUALS caused errors in ASUM70PR.
  VMXG70PR 25.028  OPTION NOSORTEQUALS caused errors in ASUM70PR.

        Other New Support and corrections added in MXG 25.02:

  ASMTAPEE 25.033  Support for ASMTAPEE ML-40 assembly under z/OS 1.8.
  ANALRMFR 25.032  IRD corrections to RMF reports.
  TYPE42DS 25.030  TYPE42DS had carried-forward IOCOUNT and other vars.
  TYPE70   25.028  IORATEn per-engine I/Os corrected for IRD.
  VMXGPRAL 25.028  Print All utility now compares all datasets in LIBs.
  UCOMPSOE 25.028  Utility to compare SORTEQUALS and NOSORTEQUALS output
  ANALFIOE 25.026  Divide by zero message protected.

    Major enhancements added in MXG 25.01.

    The MXG 24.24 Annual Version is VERY solid, with only these three
    relatively minor corrections:

  TYPENTSM 25.015  INCOMPAT MXG CHANGE for NTSM WEEKly requires action.
  TYPE7072 25.013  PCTMVSBY in PDB.TYPE70PR was wrong if IRD was active.
  ASUM70PR 25.001  NRICFCPU,NRIFLCPU were wrong if you have more than 1.

        Other New Support and corrections added in MXG 25.01:

  TYPEIMS7 25.006  Support for IMS Version 10 (INCOMPATIBLE) IMS log.
  TYPEBVIR 25.011  Support for TS7700 SMF records.
  TYPE7    25.025  Support for APAR OA19453 for 4-byte LOSTRECS count.
  TYPE74   25.003  NREXPOSR was wrong for HyperPAV devices.
  IMACICMR 25.007  Optional CICS CMRDATA, CMDUDATA/CMDDBCCP reversed.
  IMACICOB 25.008  Optional CICS OMDBDB2LN now spelled as OMBDB2LN.
  IMACICOM 25.008  Optional CICS OMMLN now spelled as OMMQLN.


    Please read CHANGESS for the complete list of major enhancements.

  See member NEWSLTRS or the Newsletters frame at www.mxg.com for
  current MXG Technical Notes that used to be in CHANGES.


  All of these enhancements are described in the Change Log, below.

    SAS Version requirement information:

      MXG 22.08 or later is REQUIRED for SAS V9.1.2 or V9.1.3; see
      "Major Enhancements in MXG 22.08" in CHANGES, above, for the major
      items, then search Newsletters for V9 for all of the minor items.

      MXG executes under SAS V8.2 and SAS V9.1.3, but MXG is no longer
      supported under SAS V6.  The "PDB" libraries written to by MXG
      must have been created by V8/V9 (i.e, if ENGINE=V6 is shown in the
      PROC CONTENTS output, you must convert that data library to the
      current ENGINE=BASE by PROC COPYing it under SAS V8 or V9.

       For SAS V9.1.3 on z/OS with Service Pack 4:
        There are no reported errors, and MXG's CONFIGV9 now specifies
        V9SEQ instead of V6SEQ.  As V6SEQ does not support long length
        character variables, it should not be used.

       SAS V9.1.3 with current Service Pack 4 is STRONGLY RECOMMENDED.

       For (back-level!) SAS V9.1 or V9.1.2 on z/OS:
        SN-013514 is REQUIRED to be able to read datasets that were
          created by V6SEQ (tape) engine.
        SN-012437 is REQUIRED to prevent creation of corrupt/unreadable
          datasets with tape engines V7SEQ, V8SEQ, or V9SEQ.
        Both fixes ARE included in SAS V9.1.3, but V9.1 or 9.1.2 is NOT
          SAFE without those two hot fixes, and if you do NOT have those
          two fixes on 9.1 or 9.1.2, you MUST set V6SEQ in CONFIGV9.

        With MXG 23.02 or later, V9SEQ is the default sequential engine
        specified in CONFIGV9, but if you are back at SAS V9.1 or V9.1.2
        you MUST install the two hot fixes listed above.

       For SAS Version 8.2, HotFix Bundle 82BX08 (or later) is required
         to be completely safe.  No earlier Version 8's were supported.

       Sequential Engine Status:
          V9SEQ is fixed in V9.1.3; it is now the default in CONFIGV9.
          V8SEQ was always safe under SAS V8.2, but it wasted CPU time
            by always compressing when writing in tape format.
          V6SEQ, if used under V9.1.2, requires SN-013514, but V6SEQ
                 should no longer be used, as it does not support long
                 length variables.

      MXG New-Version QA tests are executed on z/OS with SAS V9.1.3 and
      V8.2, and on Windows XP with SAS V9.1.3.  But previous QA tests
      have been run with all SAS releases on z/OS, SAS V8.2 and V9.1 on
      Linux RH8 on Intel, with V9.1 on Solaris v2.8 on Model V880, and
      V9.1 on HP-UX v11.11 model rp5470, confirming full compatibility.
      MXG should execute under SAS V9.1.3 or V8.2 on every possible SAS
      platform without errors! Each new MXG version is also tested with
      the SAS ITSV/ITRM product by the ITRM developers.

    Availability dates for the IBM products and MXG version required for
    the processing of that product's data records:

                                       Availability     MXG Version
      Product Name                     Date              Required

      MVS/ESA 4.1                      Oct 26, 1990         8.8
      MVS/ESA 4.2                      Mar 29, 1991         9.9
      MVS/ESA 4.2.2                    Aug 15, 1991         9.9
      MVS/ESA 4.3                      Mar 23, 1993        10.10
      MVS/ESA 5.1.0 - compatibility    Jun 24, 1994        12.02
      MVS/ESA 5.1.0 - Goal Mode        May  3, 1995        13.01
      MVS/ESA 5.2.0                    Jun 15, 1995        13.05
      MVS/ESA 5.2.2                    Oct 19, 1995        13.09
      OS/390  1.1.0                    Feb 22, 1996        14.01
      OS/390  1.2.0                    Sep 30, 1996        14.05
      OS/390  1.3.0 Compatibility Mode Mar 28, 1997        14.14
      OS/390  1.3.0 WLM Goal Mode      Mar 28, 1997        15.02
      OS/390  2.4.0                    Sep 28, 1997        15.06
      OS/390  2.5.0                    Feb 24, 1998        15.06
      OS/390  2.6.0                    Sep 24, 1998        16.04
      OS/390  2.7.0                    Mar 26, 1999        16.09
      OS/390  2.7.0 APAR OW41318       Mar 31, 2000        18.03
      OS/390  2.8.0                    Aug 24, 1999        16.09
      OS/390  2.8.0 FICON/SHARK        Aug 24, 1999        17.08
      OS/390  2.8.0 APAR OW41317       Mar 31, 2000        18.03
      OS/390  2.9.0                    Mar 31, 2000        18.03
      OS/390 2.10.0                    Sep 15, 2000        18.06
      OS/390  PAV                      Oct 24, 2000        18.09
      z/OS    1.1                      Mar 30, 2001        18.11
      z/OS    1.1 on 2064s             Mar 30, 2001        19.01
      z/OS    1.1 with correct MSU     Mar 30, 2001        19.02
      z/OS    1.2                      Oct 31, 2001        19.04
      z/OS    1.1,1.2 APARs to 78      Oct 31, 2001        19.05
      z/OS    1.2+ APAR OW52227        Apr 26, 2002        20.02
      z/OS    1.3+ APAR OW52227        Apr 26, 2002        20.02
      z/OS    1.2 JESNR Z2 MODE        Apr 26, 2002        20.03
      z/OS    1.3 JESNR Z2 MODE        Apr 26, 2002        20.03
      z/OS    1.4 Tolerate             Sep 27, 2002        20.03
      z/OS    1.4 Support              Sep 27, 2002        20.06
      z/OS    1.4 Over 16 CPUs/LPARs   May 29, 2003        21.02
      z/OS    1.4 DFSMS/rmm, RACF      Aug 29, 2003        21.04
      z/OS    1.5                      Mar 31, 2004        21.21
      z/OS    IRD ASUM70PR/ASUMCEC     Sep 22, 2003       *24.10
      z/OS    IRD TYPE70PR             Mar 11, 2004       *24.10
      z/OS    IRD TYPE70,RMFINTRV      Mar 22, 2002       *24.10
      z/OS    1.6 - No IFAs            Sep 30, 2004       *22.09
      z/OS    1.6 - With IFAs          Sep 30, 2004       *22.11
      z/OS    1.7 (COMPATIBLE CHANGES) Sep 30, 2005       *24.10
      z/OS    1.7 (SPLIT70 CORRECTION) Sep 30, 2005       *24.10
      z/OS    IFA data in RMF 79s      Sep 30, 2005        23.10
      z/OS    1.8 - ASMTAPEE assembly  Sep 30, 2005       *25.03
      z/OS    1.8 - SMF 119 INCOMPAT   Sep 30, 2005       *25.06
      z990 CPUs - CPUTYPE '2084'x      Aug 25, 2003        21.04
      z890 CPUs - CPUTYPE '2086'x      Jun 24, 2004        22.07
      z9   CPUs - CPUTYPE '2094'x      Jul 20, 2005       *24.24
      z9EC CPUs - CPUTYPE '2094'x:
             with 64-bit z/OS - no change required        *24.24
             with 32-bit z/OS only:    Aug 26, 2006        24.06
      z9BC CPUs - CPUTYPE '2096'x:
             with 64-bit z/OS - no change required         24.01
             with 32-bit z/OS only:    Jul 27, 2006       *24.24
      z/OS More than 32 LPARs          Jan 30, 2006       *24.24
      z/OS SPLIT RMF 70 records        Jan 30, 2006       *24.24
      z/OS Dupe SYSTEMs in a SYSPLEX   Jan 30, 2006       *24.02
      z/OS IRD errors corrected        May 15, 2006        24.03
      z/OS ASUMCEC errors corrected    May 15, 2006       *24.24
      z/OS ASUM70LP errors corrected   Jun 13, 2006       *24.24
      z/OS    zIIP Processor Support   Jun 22, 2006       *24.24
      z/OS    Dedicated zIIP Support   Oct  5, 2007        25.10
      z/OS    1.8 (COMPATIBLE CHANGES) Sep 20, 2006       *24.24
      z/OS    1.9 (INCOMPAT, 54 CPs)   Sep 27, 2007        25.10
      CICS/ESA 3.2                     Jun 28, 1991         9.9
      CICS/ESA 3.3                     Mar 28, 1992        10.01
      CICS/ESA 4.1                     Oct 27, 1994        13.09
      CICS/ESA 5.1 aka CICS/TS V1R1    Sep 10, 1996        14.07
      CICS-Transaction Server V1R1     Sep 10, 1996        14.07
      CICS-TS V1R1 with APAR UN98309   Sep 15, 1997        15.06
      CICS-TS V1R2  CICS/TS 1.2        Oct 27, 1997        15.06
      CICS-TS V1R3  CICS/TS 1.3        Mar 15, 1999        17.04
      CICS-TS for Z/OS Version 2.1     Mar 15, 2001        18.11
      CICS-TS for Z/OS Version 2.2     Jan 25, 2002        19.19
       CICSTRAN subtype 1 support only                    *19.19
       CICSTRAN subtype 2 completed                       *19.08
      CICS-TS for Z/OS Version 2.3     Dec 19, 2003
       Using UTILEXCL to create IMACEXCL:                  21.04
       Reading un-Excluded CICS with TYPE110, no IMACEXCL:*22.04
      CICS-TS for Z/OS Version 3.1     Mar 15, 2005
       Using UTILEXCL to create IMACEXCL:                  22.13
       Reading un-Excluded CICS with TYPE110, no IMACEXCL: 22.22
      CICS-TS for Z/OS Version 3.2     Jun 29, 2007        25.03
      CICS-TS/3.2 Compressed Records   Nov  3, 2007        25.11
      DB2 2.3.0                        Oct 28, 1991        10.01
      DB2 3.1.0                        Dec 17, 1993        13.02A
      DB2 4.1.0 Tolerate               Nov  7, 1995        13.07
      DB2 4.1.0 Full support           Sep 11, 1996        14.07
      DB2 5.1.0 Tolerate               Jun 27, 1997        14.14
      DB2 5.1.0 Full support           Jun 27, 1997        15.02
      DB2 6.1.0 initial support        Mar 15, 1999        16.09
      DB2 6.1.0 all buffer pools       Mar 15, 1999        18.01
      DB2 6.1.0 parallel DB2           Mar 15, 1999        19.19
      DB2 7.1.0 parallel DB2           Mar 31, 2001        19.19
      DB2 7.1.0 corrections            Mar 31, 2001        20.06
      DB2 8.1 Tolerate, no packages    Mar 31, 2004        20.20
      DB2 8.1 New Data Packages wrong  Mar 31, 2004        21.08
      DB2 8.1 Support with Packages    Mar 31, 2004        23.09*
      DB2 8.1 with all zIIP Variables  Sep 30, 2006        24.08
      DB2 9.1 See Change 25.265.       Dec  7, 2007        25.11
      DFSMS/MVS 1.1                    Mar 13, 1993        11.11
      DFSMS/MVS 1.2                    Jun 24, 1994        12.02
      DFSMS/MVS 1.3                    Dec 29, 1995        13.09
      DFSMS/MVS 1.4                    Sep 28, 1997        15.04
      DFSMS/MVS 1.4 HSM                Sep 23, 1998        16.04
      DFSMS/MVS 1.5                    ??? ??, 1999        16.04
      DFSORT SMF V1R5                  Mar  1, 2006        24.02
      MQM 1.1.2, 1.1.3, 1.1.4          Apr 25, 1996        14.02
      MQ Series 1.2.0                  May 26, 1998        16.02
      MQ Series 2.1.0                  Oct  2, 1999        17.07
      MQ Series 5.2                    Dec 16, 2000        18.10
      MQ Series 5.3                    Dec 16, 2002        21.05
      NETVIEW 3.1 type 37              ??? ??, 1996        14.03
      NPM 2.0                          Dec 17, 1993        12.03
      NPM 2.2                          Aug 29, 1994        12.05
      NPM 2.3                          ??? ??, 1996        15.08
      NPM 2.4                          Nov 18, 1998        17.01
      NPM 2.5                          Feb ??, 2000        18.02
      NPM 2.6                          Nov ??, 2001        19.06
      RMDS 2.1, 2.2                    Dec 12, 1995        12.12
      RMDS 2.3                         Jan 31, 2002        19.11
      TCP/IP 3.1                       Jun 12, 1995        12.12
      TCP/IP 3.4                       Sep 22, 1998        16.04
      WebSphere 5.0 APAR PQ7463        Aug 19, 2003        21.04
      WebSphere 6.0                    Feb 18, 2006        23.23
      DOS/VSE POWER V6.3.0             Dec 19, 1998        16.08
      VM/ESA  2.0                      Dec 23, 1992        10.04
      VM/ESA  2.1                      Jun 27, 1993        12.02
      VM/ESA  2.2                      Nov 22, 1994        12.06
      VM/ESA  2.3                      Jun  1, 1998        16.08
      VM/ESA  2.4                      Mar  1, 2001        19.03
      z/VM    3.1                      Mar  1, 2001        19.03
      z/VM    3.1 DATABYTE=0           May  2, 2002        20.02
      z/VM    4.2 ??                   May  2, 2002        20.02
      z/VM    4.4                      Jan 22, 2005        22.22
      z/VM    5.1                      Jan 22, 2005        22.22
      z/VM    5.2                      Jan 22, 2006        24.01
      z/VM    5.3                      Jan 22, 2007        25.04
      IMS log 4.1                      Jul  4, 1994        12.02
      IMS log 5.1                      Jun  9, 1996        14.05
      IMS log 6.1                      ???  ?, 199?        20.03
      IMS log 7.1                      ???  ?, 200?        20.03
      IMS log 8.1                      May 21, 2003        21.02
      IMS log 9.1                      Dec ??, 2004        22.08
      IMS log 10.0                     Feb 27, 2007        25.01
      AS400 3.7.0                      Nov  1, 1996        15.01
      AS400 4.1.0                      Dec 30, 1996        15.08
      AS400 4.2.0                      Apr 27, 1998        16.02
      AS400 4.4.0                      Sep 27, 1999        17.07
      AS400 4.5.0                      Jul 27, 2000        18.07
      AS400 5.2.0 - Most records       Jul 23, 2003        21.03
      AS400 5.2.0 - QAPMMIOP           Jul 23, 2003        22.04
      AS400 5.3.0                      Jan 22, 2005        22.22
      AS400 5.4.0                      Aug 26, 2006        24.06

    Note: Asterisk before the version number means the Version number
          was changed (to the MXG version required), after an earlier
          MXG version was listed as supporting this product release,
          usually because an APAR modified the product's data records.
          Or a coding error in MXG could be the reason for the change!

    Availability dates for non-IBM products and MXG version required:

                                                        MXG Version
      Product Name                                       Required

      Demand Technology
       NTSMF Version 1 Beta                                14.11
       NTSMF Version 2.0                                   15.05
       NTSMF Version 2.1                                   15.06
       NTSMF Version 2.2                                   16.04
       NTSMF Version 2.3                                   17.10
       NTSMF 2.4.4                     Aug  9, 2002        20.04
       NTSMF 2.4.5   INCOMPAT          Apr  1, 2003        21.02
       NTSMF 2.4.7                     Sep 30, 2004        22.08
      Landmark
       The Monitor for DB2 Version 2                       13.06
       The Monitor for DB2 Version 3.0                     16.02
       The Monitor for DB2 Version 3.1                     20.04
       The Monitor for DB2 Version 4.0                     22.10
       The Monitor for CICS/ESA 1.2 -                      12.12
       The Monitor for CICS/ESA 1.3 -                      15.01
       The Monitor for CICS/ESA 2.0 -                      15.06
       The Monitor for CICS TCE 2.1 -                      20.04
       The Monitor for CICS TCE 2.2 - 20.335, 21.134       21.04
       The Monitor for CICS TCE 2.3 including cics/ts 3.1  22.08
       The Monitor for MVS/ESA 1.3  -                      12.05
       The Monitor for MVS/ESA 1.5  -                      12.05
       The Monitor for MVS/ESA 2.0  -                      15.09
       The Monitor for MVS/ESA 3.0  -                      19.19
       The Monitor for CICS/TS V2.3 for CICS/TS 3.1        22.08

      Candle
       Omegamon for CICS V200 User SMF                     12.05
       Omegamon for CICS V300 User SMF                     13.06
       Omegamon for CICS V400 User SMF                     16.02
       Omegamon for CICS V400 type 110 segments            16.02
       Omegamon for CICS V500 User SMF                     18.01
       Omegamon for IMS V110 (ITRF)                        12.12
       Omegamon for IMS V300 (ITRF)                        14.04
       Omegamon for IMS V550/V560 (ITRF)                   25.05
       Omegamon for MVS V300                               13.05
       Omegamon for MVS V400                               13.06
       Omegamon for DB2 Version 2.1/2.2                    13.05
       Omegamon for VTAM V160                              12.04A
       Omegamon for VTAM V400                              15.15
       Omegamon for VTAM V500                              18.08
       Omegamon for SMS V100/V110                          12.03
      CA
       ACF2 6.2                                            16.04
       ASTEX 2.1                                           14.04
       NETSPY 4.7                                          14.03
       NETSPY 5.0                                          14.03
       NETSPY 5.2                                          16.05
       NETSPY 5.3                                          18.03
       NETSPY 6.0                                          20.10 20.305
       NETSPY 7.0                                          20.10 20.305
       SAR/VIEW R11                                        23.07 23.196
      BMC, was Boole & Babbage
       IMF 3.1 (for IMS 5.1)                               12.12
       IMF 3.2 (for IMS 6.1 only)                          15.09
       IMF 3.2 (for IMS 5.1 and 6.1+)                      16.04
       IMF 3.3 (for IMS 7.1 and 8.1)                       22.08*
       IMF 4.1 (for IMS 9.1)                               22.08
      Memorex/Telex
       LMS 3.1                                             12.12A
      Oracle V9, V10                                       24.06
      Amdahl
       APAF 4.1, 4.3                                       16.08
      Velocity Software
       XAMAP 3.4                                           22.10
       XAMAP 3406                                          24.03
       XAMAP 3.7                                           25.04

II.   Incompatibilities and Installation of MXG 25.11.


 1. Incompatibilities introduced in MXG 25.11:

  a- Changes in MXG architecture made between 25.11 and prior versions
     that can introduce known incompatibilities.

     NTSMF Weekly/Monthly processing will fail on BLKBERRY dataset due
     to new variable in the BY list.  See Change 25.015 for required
     actions you must take prior to running the Weekly/Monthly.  The
     incompatibility was introduced by Change 24.162 in MXG 24.06.

     Change 25.189 revised %READDB2/%ANALDB2R when PDBOUT=, is null.
     Now, ALL output datasets are written to //WORK, which was intended
     when PDBOUT=null, but that did not always happen.
       The error corrected was that a simple report with %ANALDB2R
       failed if there was no //PDB DD name, because MXG tried used the
       default DDnames, and did not force them to //WORK as desired.
       That correction created a new exposure if you actually did have
       a //PDB DD name, if you had changed DDNAME defaults with
          %LET PDB2ACC or MACRO _LDB2ACC or _WDB2ACC,
       and if you did not specify PDBOUT=PDB; Change 25.189 now caused
       zero observations in PDB.DB2ACCT.
     So if you want output datasets created by %READDB2/%ANALDB2R, you
     must specify
        PDBOUT=PDB (which works as documented, output all to //PDB), or
        PDBOUT=YES (which outputs to the (tailored) default DDNames, or
        PDBOUT=ZZZ (which outputs everything to ZZZ DDname).
     Change 25.284, in MXG 25.25, corrected the original Change 25.189.

 2. Installation and re-installation procedures are described in detail
    in member INSTALL (which also lists common Error/Warning messages a
    new user might encounter), and sample JCL is in member JCLINST9 for
    SAS Version 9.1.3 (JCLINST8 for SAS Version 8.2).

    MXG Definitions with regard to MXG Software Changes:

    COMPATIBLE   A change in a data record which did not alter either
                 the location or the format of all of the previously-
                 kept MXG variables is COMPATIBLE, and you can continue
                 to run the old version of MXG software, which will read
                 the new records without error, but none of any new data
                 fields or any new record subtypes will be created/kept
                 until you install the MXG Version with this change.
                 A change that alters any previously kept variable is
                 INCOMPATIBLE, and requires the new version to be used.

    TOLERATE     In other words, the old MXG Version TOLERATES the new
                 data records, if they are COMPATIBLY changed.

    EXPLOIT      Once you use the new MXG Version to read the changed
                 records, all of the new fields, subtypes, etc, that are
                 described in this change will be created in the MXG
                 datasets, so the new MXG Version EXPLOITS the new data,
                 and you have full support of the new data records.

    INCOMPAT     A change in a data record that causes the current MXG
                 version to fail, visibly or invisibly, with or without
                 error conditions or messages, and the output datasets
                 may contain wrong values and incomplete observations,
                 and/or observations may have been lost.

                 You MUST install the new MXG Version with this change
                 to process data records that have been INCOMPATIBLY
                 changed by their vendor.


III.  Online Documentation of MXG Software.

    MXG Documentation is now described in member DOCUMENT.
    See also member INDEX, but it may be overwhelming.


IV.   Changes Log

--------------------------Changes Log---------------------------------

 You MUST read each Change description to determine if a Change will
 impact your site.  All changes have been made in this MXG Library.

 Member CHANGES always identifies the actual version and release of
 MXG Software that is contained in that library.

 The CHANGES selection on our homepage at http://www.MXG.com
 is always the most current information on MXG Software status,
 and is frequently updated.

 Important changes are also posted to the MXG-L ListServer, which is
 also described by a selection on the homepage.  Please subscribe.

 The actual code implementation of some changes in MXG SOURCLIB may be
 different than described in the change text (which might have printed
 only the critical part of the correction that need be made by users).

 Scan each source member named in any impacting change for any comments
 at the beginning of the member for additional documentation, since the
 documentation of new datasets, variables, validation status, and notes,
 are often found in comments in the source members.



Alphabetical list of important changes in MXG 25.06 after MXG 24.24:

  Dataset/
  Member   Change    Description
  Many     25.140  Support for z/OS 1.9 (COMPAT, minor SMF additions).
  Many     25.179  %UPCASE,%LOWCASE,%STR,%BQUOTE,%QUOTE, etc.
  ADOCDB2  25.172  Example to process DB2 datasets to separate DDNAMES.
  ADOCDB2  25.148  Doc. How to create DB2ACCTB/DB2ACCTP in separate DDs.
  ADOCITRM 25.149  Doc. Maps ITRM dataset names to MXG name.
  ANALACTP 25.254  Sample report summarizes DB2 Package data to UOW.
  ANALDB2R 25.202  VARIABLE QBnTDPIO NOT FOUND error corrected.
  ANALDB2R 25.189  New PDBOUT=YES, old PDBOUT= changed, writes to WORK.
  ANALDB2R 25.068  SQL Text QW0141TX was not printed, coding error.
  ANALFIOE 25.026  Divide by zero message protected.
  ANALRMFR 25.146  ERROR: NO DATASETS TO LOOKUP correction.
  ANALRMFR 25.032  IRD corrections to RMF reports.
  ASMTAPEE 25.033  Support for ASMTAPEE ML-40 assembly under z/OS 1.8.
  ASUM70PR 25.303  Extraneous PROC PRINT from testing was removed.
  ASUM70PR 25.270  INTERVAL=DURSET cannot be used.
  ASUM70PR 25.163  Capacity Group summarization, PDB.ASUM70GC/ASUM70GL.
  ASUM70PR 25.150  ASUM70PR created PCTCPUBY GT 100%, final fix?
  ASUM70PR 25.150  ASUM70PR now supports INTERVAL/CECINTRV=SHIFT.
  ASUM70PR 25.001  NRICFCPU,NRIFLCPU were wrong if there was more than 1
  ASUMCEC  25.053  PDB.ASUMCEC, PCTCPUBY GT 100%, DURATM LT CECINTRV.
  ASUMCELP 25.209  Duplicate observations in PDB.ASUMCELP eliminated.
  ASUMHSM  25.113  HSM Summary enhanced with "HSM COMPLEX" HSMPLEX.
  ASUMTAPE 25.300  Blank SYSTEM, missing DEVNR in PDB.ASUMTAPE fixed.
  ASUMTAPE 25.040  Uncompress read/write SMF21DBR/DBW kept in ASUMTAPE.
  ASUMUOW  25.121  Enhanced to keep each CICS segment response time.
  ASUMUOW  25.054  QWACSPCP,QWACTRET added to PDB.ASUMUOW for OTE.
  BLDSMPDB 25.048  Corrections to BLDSMPDB, new SORTEDBY= option.
  COMPINTV 25.302  Capture/Compare ALL CPU times in 30/70/72/100/101/110
  CONFIGV8 25.037  SORTEQUALS should NOT have been in CONFIGV8, V9 only.
  CONFIGV9 25.267  VALIDVARNAME=V7 added to SAS CONFIGs.
  CONFIGV9 25.101  MEMLEAVE=10M SORTBLOCKMODE now set in CONFIGV9
  CONFIGV9 25.028  OPTION NOSORTEQUALS caused errors in ASUM70PR.
  CONFIGW2 25.252  MXG updates for testing MXG Execution under WPS.
  DALYTAPE 25.072  Sample tape reports from STC VTS SMF + MXGTMNT.
  Doc      25.179  Use %LET MACxxxx= %STR( text ) ; to pass text.
  Doc      25.078  List of MXG-issued USER ABEND values & source member.
  EXITCICS 25.240  MCTSSCRL now tested vs MCTMNOPN for CICS Compressed.
  EXITCICS 25.017  SAS INFILE EXIT for compressed CICS SMF 110-1 data.
  FORMATS  25.063  Additional SWAP reason codes added to $MG079SR.
  IHDRIDMS 25.112  CA IDMS PerfMon support enhanced with "IHDR" exit.
  IMACICMR 25.007  CMRDATA, CMDUDATA/CMDDBCCP reversed.
  IMACICOB 25.238  OMEGAMON did NOT increase time-duration to 12 bytes.
  IMACICOB 25.008  OMDBDB2LN now spelled as OMBDB2LN.
  IMACICOM 25.008  OMMLN     now spelled as OMMQLN.
  ITRMTNG  25.262  233 DDU files to create ITRM definitions for TYPETNG.
  MXGWPSV2 25.252  Revised JCL Procedure for MXG Execution under WPS.
  READDB2  25.189  New PDBOUT=YES, old PDBOUT= changed, writes to WORK.
  RMFINTRV 25.199  SMF70GIE now reset to 00/15 if SYNC59=YES is used.
  RMFINTRV 25.177  ARRAY SUBSCRIPT OUT OF RANGE, 9999 LIMIT externalized
  SYSLOG   25.070  Major revisions to SYSLOG program, will be renamed.
  TIMEBILD 25.209  Optional SYNC59 timeshifting using TIMETABL.
  TYPE102  25.306  Support for APAR PK38803 INCOMPAT SMF 102 IFCID 22.
  TYPE102  25.306  IBM SMF 102 IFCID 22 APAR PK38803 wrong, supported.
  TYPE102  25.129  IFCID=224 updated with QW0224PN and QW0224CI.
  TYPE110  25.240  MCTSSCRL now tested vs MCTMNOPN for CICS Compressed.
  TYPE119  25.119  SMF 119 from z/OS 1.8 caused INVALID DATA messages.
  TYPE119  25.119  Support for SMF 119 for z/OS 1.8 (INCOMPATIBLE).
  TYPE120  25.247  SM120SNT=2 (two heap ids) caused INPUT EXCEEDED.
  TYPE122  25.287  Support for SMF 122, Tivoli Tape Allocation Manager
  TYPE1415 25.047  Support for APAR OA19502, SMF14KET Key Exchange Time
  TYPE21   25.083  Actual support for APAR OA20077 Device Bytes TYPE21.
  TYPE21   25.040  Support for APAR OA20077, uncompress read/write byte
  TYPE22   25.276  Support for APAR OA20043 Dynamic Volume Expansion
  TYPE30   25.304  Support for APAR OA23679, BLKSIZE might be wrong.
  TYPE30   25.260  MXG 25.10, INTRVLTM missing for TYPETASK='OMVS'
  TYPE30   25.116  MXG 25.05, negative EXECTM, INTRVLTM, GMTOFF30 wrong.
  TYPE30   25.089  GMTOFF30 calculation corrections and problems.
  TYPE42   25.153  MXG 25.06 only, false INVALID TYPE42 SUBTYPE 5 error.
  TYPE42DS 25.030  TYPE42DS had carried-forward IOCOUNT and other vars.
  TYPE50   25.269  Support for OSA-MPC VTAM SMF 50 subtype 4 record.
  TYPE70   25.212  ZIPACTTM, PCTZIPBY corrected for Dedicated zIIPs.
  TYPE70   25.028  IORATEn per-engine I/Os corrected for IRD.
  TYPE7072 25.237  LCPUWAIT was accidentally not kept in TYPE70.
  TYPE7072 25.227  Variable RPRTCLAS now kept in TYPE72DL dataset.
  TYPE7072 25.224  CPUTYPE tests are replaced with ZARCHMDE tests.
  TYPE7072 25.205  Support for z/OS 1.9 54 CP engines per MVS, INCOMPAT
  TYPE7072 25.176  Support for APAR OA18244, Blocked Workload z/OS 1.9.
  TYPE7072 25.163  Support for Capacity Groups variables in TYPE70.
  TYPE7072 25.135  LCPUCAP/LCPUCAPC Labels include "Hard CAP".
  TYPE7072 25.013  PCTMVSBY in PDB.TYPE70PR was wrong if IRD was active.
  TYPE70PR 25.051  NRIFACPU now populated for z990/2084 CPUTYPE.
  TYPE71   25.143  SWAPrates were set missing if zero, now can be zero.
  TYPE71   25.109  UIC variables changed meaning in z/OS 1.8.
  TYPE74   25.140  APAR OA17070 supports CF Level 15 measurements.
  TYPE74   25.140  Support for APAR OA17070 RMF 74-4 Coupling Facility
  TYPE74   25.108  R748CSER/CTYP/CDML now kept in TYPE748 dataset.
  TYPE74   25.003  NREXPOSR was wrong for HyperPAV devices.
  TYPE78   25.236  Zero obs in TYPE78IO with Change 24.171 if z/OS 1.7.
  TYPE78   25.141  APAR OA21799 prevents ABEND, SMF78HIX invalid.
  TYPE80A  25.137  Support for unknown TOKDANAMs, prevents ABEND.
  TYPE80A  25.131  Support for CRL PUBLISH and SET UID RACFEVNT 52, 79.
  TYPE80A  25.131  Support for TOP SECRET (INCOMPAT) '90'x,'00'x VRSN.
  TYPE80A  25.131  Support for TOP SECRET (INCOMPAT) '90'x,'00'x VRSN.
  TYPE80A  25.111  TYPE80xx variable TYPSTRNG wrong after Change 25.024.
  TYPE82   25.257  Support for ISCF HCR7750 TKE Logging update.
  TYPE85   25.279  Support for subtypes 38, 39 and 40 for ID=85 OAM.
  TYPE85   25.234  New variables in OAM subtype 32-35 records.
  TYPE89   25.198  SMF89HOF,SMF89DTO were incorrect due to typo.
  TYPE89   25.138  Support for APAR OA20314 new SMF89LPN/SMF89ZNA.
  TYPE92   25.192  New ID=92 ST=14 INPUT EXCEEDED if not a RENAME.
  TYPE99   25.012  SMF 99 with only Trace, INPUT STATEMENT EXCEEDED.
  TYPEAIXT 25.039  Support for AIX Tapas-C performance data files.
  TYPEBTE  25.107  Support for CA Brightstor Tape Encryption SMF.
  TYPEBVIR 25.011  Support for TS7700 SMF records.
  TYPECIMS 25.230  IMF 4.2 PTF BQI0129 caused INPUT EXCEEDED error.
  TYPECIMS 25.139  Support for IMF Version 4.3 (INCOMPATIBLE).
  TYPECLAR 25.130  Support for Clarion Disk Array flat files.
  TYPECSM  25.050  Support for CrossSysplexManager user SMF record.
  TYPEDB2  25.291  DB2ACCT variable QWACUDCP CPU time added in DB2TCBTM.
  TYPEDB2  25.265  DB2TCBTM Correction for DB2 V9.1, REQUIRED.
  TYPEDB2  25.169  _RDB2ACC DB2 Parallel event "analysis" example.
  TYPEDB2  25.097  Variable THREADTY blank if non-DDF transaction.
  TYPEDB2  25.090  Support for PK37354 SMF 101 Subtype 4 in DB2 9.
  TYPEDB2  25.064  Several QISE variables were wrong.
  TYPEDB2  25.020  DB2STATS, QWS3, QWS4 may have reversed contents.
  TYPEEVTA 25.255  Support for Action Software's EventAction user SMF.
  TYPEEVTA 25.255  Support for Action Sofware's EventAction SMF record.
  TYPEFERT 25.133  Support for Williams Data FERRET product user SMF.
  TYPEHSM  25.042  Process HSM with different SMF IDs/different SYSTEMs.
  TYPEIMS7 25.006  Support for IMS Version 10 (INCOMPATIBLE) IMS log.
  TYPEITRF 25.286  Support for ITRF DCR77/DCR78 additions.
  TYPEITRF 25.103  Support for IBM OMEGAMON TRF ITRF V550 and V560.
  TYPEMQLG 25.280  Support for MQ V6 System Admin Accounting Queue Log.
  TYPENDM  25.242  NDM record 'UC' is now output in NDMAE dataset.
  TYPENDM  25.081  NDM-CD type 'NM' records now decided into NDMNM.
  TYPENDM  25.014  No observations in NDMRT due to incomplete comment.
  TYPENMON 25.229  NMON for AIX CPUnn records vary in number.
  TYPENMON 25.110  Support for DISKBUSYn for all NMON Disk Monitoring.
  TYPENMON 25.104  Full support for NMON, Nigel's Monitor for AIX/unix.
  TYPENMON 25.073  Support for LPAR and IOADAPTR Nigel's NMON data.
  TYPENTSM 25.282  Support for new NTSMF Objects, Database Mirroring.
  TYPENTSM 25.253  Support for new NTSMF objects for MSSQL.
  TYPENTSM 25.015  INCOMPATIBLE MXG CHANGE for NTSM WEEK/MONTH BUILDs.
  TYPEORAC 25.127  No change in Oracle Version 10, but data is trash.
  TYPEPDSM 25.245  CA PDSMAN diagnostic trace records filled //WORK.
  TYPEPSYC 25.277  Support for PSYNCH/390 SMF record.
  TYPEQACS 25.178  AS400 APAR QAPMDISK with LRECL=456 added new data.
  TYPEQACS 25.132  Revisions to AS400 TYPECONF GDES variables.
  TYPERACF 25.244  IRRDBU00 Unload '0200' record has two lengths.
  TYPERACF 25.134  Support for IRRDBU00 record types 0560,0561,0562.
  TYPERMFV 25.309  Support for RMF III CPD, Channel Path Data Table.
  TYPERMFV 25.246  Updates for CPU Segmentation changes.
  TYPERMFV 25.225  Variable ENCCPUT corrected with zIIP time removed.
  TYPERMFV 25.204  CFI Segmentation eliminates RMF III skipped CF data.
  TYPERMFV 25.191  Support for RMF Monitor III CFI table enhancements.
  TYPERMFV 25.145  RMF III dataset ZRBLCP missing obs for many LPARs.
  TYPERMFV 25.079  ZRBLCP dataset had only first LPARs observations.
  TYPESAMS 25.055  Support for SAMS objects 2151,2226,2229 and 2231.
  TYPESRDF 25.195  Support for EMC's SRDF/A user SMF record.
  TYPESYNC 25.117  INVALID ARGUMENT due to incorrect HEX4/HEX3 formats.
  TYPETDS  25.052  Support for TDSLink Version 630 ZCOST datasets.
  TYPETIMS 25.271  Revisions for TMON/IMS support
  TYPETMS5 25.126  Circumvention skip new TMC 'FF20'x Vol Def record.
  TYPETMS5 25.084  FILSEQ in TMS.DSNBRECD could be wrong, mult-vol-file.
  TYPETNG  25.243  Automatic PROC DELETE of UNKNOWN dataset removed.
  TYPETNG  25.235  New Solaris, AIX, and many RedHat objects added.
  TYPETNG  25.221  Support for VM Ware VSX Systems in CA NSM records.
  TYPETNG  25.181  Support for CA NSM RedHat 4.01 Linux perf cube.
  TYPETNG  25.181  Support for CA Unicenter NSM is in MXG "TNG" product.
  TYPETPMX 25.239  Support for Thruput Manager SLM and DB2 data.
  TYPEVMXA 25.151  180 Error _MPRCAPC not found, DEBUG prints removed.
  TYPEVMXA 25.043  Reserved Change Number.
  TYPEXAM  25.307  Extraneous PUT from testing removed.
  TYPEXAM  25.115  Incorrect memory variables in XMUCDSYS in MXG code.
  TYPEXAM  25.082  Support for XAM Release 3.6, many new data.
  TYPSCOCR 25.034  Support for CopyCross (now VTF Mainframe 2.1.0) SMF.
  UCICSCNT 25.120  CICS record counting separates Resource segments.
  UCOMPSOE 25.028  Utility to compare SORTEQUALS and NOSORTEQUALS output
  UPCMEMDZ 25.144  ASCII utility to determine memory available to MXG.
  UPRINDOC 25.226  Utility prints NAME and LABEL of all variables.
  UTILBLDP 25.196  Large &MACKEEP string caused strange results.
  UTILBLDP 25.098  %UTILBLDP(BUILDPDB=JES3 ... enhancement.
  UTILBLDP 25.071  Products that need deaccumulation now protected.
  UTILBLDP 25.065  Default list of ASUMxxx to be included, MXGINCL=.
  UTILCSV  25.197  %UTILCSV creates a CSV (or TAB) Delimited flat file.
  UTILEXCL 25.256  Macro variable &MXGDEBUG revised for IMACEXCL plus!
  UTILEXCL 25.193  MXG 25.08 ONLY: LABEL IMACICU3 NOT FOUND.
  UTILLPDS 25.136  Utility to count used/defined PDS Directory Blocks.
  VMAC110  25.041  Reserved Change Number.
  VMACDB2  25.075  QBGL variables in DB2 V8.1 supported, were wrong.
  VMXG70PR 25.293  SMF70GIE is now set from STARTIME=DURATM after shifts
  VMXG70PR 25.028  OPTION NOSORTEQUALS caused errors in ASUM70PR.
  VMXGDUR  25.044  Interval= QUARTER, SEMIANN, ANNUAL now supported.
  VMXGINIT 25.231  Unresolved &ARRAYRMF is SAS V8.1 or WPS was used.
  VMXGINIT 25.143  New MXGMISS macro variable changes TYPE71 SWAPrates.
  VMXGPRAL 25.028  Print All utility now compares all datasets in LIBs.
  VMXGRMFI 25.069  Service Class Names can be "wild-carded"
  VMXGSUM  25.248  New &LNSUMOUT=8 will make all output to length 8.
  VMXGUSE  25.067  Revised to invoke _STY70; UTILBLDP recommended.

  See member CHANGESS for all changes ever made to MXG Software.


Inverse chronological list of all Changes:

NEXTCHANGE: Version 25.


====== Changes thru 25.309 were in MXG 25.25 dated Jan 28, 2008=========

Change 25.309  Support for RMF III CPD, Channel Path Data Table, creates
ASMRMFV        new ZRBCPD dataset.
CLRMFV
DOCRMFV        The RMFV documentation in DOCRMFV and the documentation
EXZRBCPD       in the CLRMFV CLIST (without any code changes in CLIST)
IMACRMFV       have been updated to match ASMRMFV's updated.
VMACRMFV
VMXGINIT
Jan 28, 2008
   Thanks to Jerry Urbaniak, Acxiom, USA.

Change 25.308  SAS V8.2-V9.1 %MACRO compiler accepts  %ELSE %THEN %DO;
ANALDB2R       syntax, but the documented syntax is only    %ELSE %DO;
VMACMVCI       The SAS Language compiler never accepted  ELSE THEN DO;
Jan 28, 2008   In early tests of SAS V9.2, its %MACRO compiler rejected
               the extra %THEN, so all three accidental, unintended MXG
                 %ELSE %THEN %DO statements have been corrected.
   Thanks to MP Welch, SPRINT, USA.

Change 25.307  Debugging PUT printed _N_= COL=nnnn PRCAPM for every one
VMACXAM        of those segments, but had no impact on output data.
Jan 25, 2008   Remove the PUT statment after WHERE ('PRCAPM').
   Thanks to Roger Foreman, TransUnion, USA.

Change 25.306  IBM SMF 102 IFCID 22 with PK38803 records are wrong, with
VMAC102        QWT02R2L=160 instead of 162, with only 16 bytes vs 18 for
Jan 23, 2008   QW0022CN, and with onlyh 8 vs 10 UNUSED at the end.  MXG
               Change 25.273 added code for the new fields, but was not
               tested as data records did not exist.  This change will
               read the bad records successfully, pending IBM response.

Change 25.305  Error in %UTILBLDP with USERADD=TMNT/nnn + BUILDPDB=YES.
UTILBLDP       Because TMNT processing is already in BUILDPDB, there was
Jan 23, 2008   special handling in the USERADD= logic, but in this case
Jan 27, 2008   it incorrectly didn't create the MACRO _IDTMNT nnn % that
               it should have, so, while all TMNT datasets were created,
               they all had zero observations, unless you had defined
               your TMNT Record ID _IDTMNT in IMACKEEP/IMACTMNT.
               The logic in UTILBLDP is corrected for all USERADDs,
               whether or not they are already in BUILDPDB:
               USERADD=TMNT/nnn, creates   MACRO _IDTMNT nnn %
                                which will override any IMAC tailoring.
               USERADD=TMNT,     does not create _IDTMNT, but ensures
                                 TMNT records are processed.
              -Jan 27: Added support for USERADD=100 101 alias for DB2.
              -In testing the UTILBLDP invocation in the new COMPINTV, I
               had %MACRO errors about non-numeric in a %EVAL, (whose
               clarity may be a separate SAS issue!), but which were the
               result of incorrect code ordering in my COMPINTV program.
               When %UTILBLDP has MACKEEPX= argument text with old-style
               macros that you want to redefine AND execute in this one
               step, then your   MACRO _MMMMMMM ...  %   statements must
               be located after the %UTILBLDP(); statement and before
               the %INCLUDE statement that executes the UTILBLDP output:
               statement that executes the UTILBLDP output:

                 %UTILBLDP(MACKEEPX=  MACRO _ETY70  _SETTIME  %, .... );
                 RUN:
                 MACRO _SETTIME  STARTIME=FLOOR(STARTIME/900);  %
                 RUN;
                 %INCLUDE INSTREAM;

               If the old style macros are defined before %UTILBLDP is
               executed, then they are expanded inside the macro
               language when the %MACRO UTILBLDP is being compiled,
               which can result in unexpected failures.  If you move the
               definition to after %UTILBLDP, only the name of the macro
               is passed to the UTILBLDP output which works as expected.
   Thanks to Jim Horne, Lowes', USA.

Change 25.304  APAR OA23679 documents possible errors in BLKSIZE in SMF
VMACEXC1       30 records when DDCONS=YES is specified.  Since MXG has
Jan 23, 2008   ALWAYS recommended DDCONS=NO and NEVER to use DDCONS=YES,
               this shouldn't have impact.  But when YES is specified,
               IBM now says the consolidated SMF 30 record contains the
               first non-zero BLKSIZE value from those DDs in SMF30BSZ,
               the original 4-byte blocksize field, but the newer 7-byte
               SMF30BXS blocksize field, contains the BLKSIZE value from
               the last DD in the consolidation, which could be valid or
               zero.  MXG stored SMF30BSZ into BLKSIZE, but then INPUT
               BLKSIZE from SMF30BXS when it existed, even when zero.
               Now, BLKSIZE is set to SMF30BXS ONLY when it is larger
               than SMF30BSZ.

Change 25.303 -Extraneous PROC PRINT from testing was removed.
VMXG70PR      -Calculation of LPARCPUS could be non-integer value, for
Jan 22, 2008   example, 11.99995682 instead of 12.  Algorithm refined.
Jan 28, 2008
   Thanks to Clayton Buck, UniGroup, USA.
   Thanks to William Wai Lun WONG, HSBC, HONG KONG.

====== Changes thru 25.302 were in MXG 25.25 dated Jan 21, 2008=========

Change 25.302  Compare all CPU variables from SMF 30,70,72,100,101,110s.
COMPINTV       Single pass of SMF creates only the needed datasets with
Jan 21, 2008   a "fast read" of SMF records keeping only the CPU and key
Jan 27, 2008   variables to minimize the run with a tailored %UTILBLDP
               and MACKEEPX overides to create two summary datasets:
                 PDB.INTVSRVC by SYSTEM STARTIME SRVCLASS          30+72
                 PDB.IN307072 by SYSTEM STARTIME                30+70+72
                 PDB.INALLCPU by SYSTEM STARTIME    30+70+72+100+101+110

               Fast read:  6 GB SMF data, 2 Minutes CPU, 10 Min Elapsed

               The type 30 SMF interval and type 72 RMF service class
               create the PDB.INTVSRVC with CPU times by service class.
               Those data and the CPUACVTM from TYPE70 are combined into
               the PDB.IN307072 SMF+RMF CPU time for each interval. Then
               the CICSTRAN and DB2ACCT transaction CPU times plus the
               interval CICDS dispatcher and DB2STATS statistics CPU
               times are added from the 100, 101, and 110 records to
               create the PDB.INALLCPU with ALL possible CPU variables,
               summed for each SYSTEM for each STARTIME.

               Several PROC MEANS summary output reports are printed.

               The SRVCLASS-level SMF30 and RMF72 summary CPU times
               should match closely for most service classes, but there
               can be significant differences in which "SRVCLASS" CPU
               time is recorded.  For example Enclave CPU time in SMF
               may be in the SRVCLASS of the address space that started
               the enclave, but in RMF that same enclave CPU time gets
               put in the SRVCLASS where that enclave was classified.
               And we've seen enclaves in two SRVCLASS in SMF30 while
               spread across three SRVCLASS in RMF72.  It can get messy!

               The STARTIME-level interval summary should match RMF and
               SMF totals, for the CPU fields that we expect to match,
               and will show how much of that CPU time is captured in
               the DB2 and CICS interval data as well, but its accuracy,
               and the accuracy of the SRVCLASS-level data is dependent
               on the synchronization of your SMF and RMF data.
                 The MACRO _SETTIME default expects 15 minute intervals
                 and SYNC(0), but can be tailored to your intervals.
                 You can get the totals of all CPU times for all of SMF
                 records in a single output observation per SYSTEM by
                 setting STARTIME to a single value for all records.
                   But the summary of the CICSTRAN and DB2ACCT times
                   can always be skewed by a long-running transaction,
                   or if SYNC59 is in the data (because not all CPU
                   records obey SYNC - RMF/SMF 30 does, CICS doesn't.
   Thanks to Chuck Hopf, Bank of America, USA.

Change 25.301  Due to typos that had DB where OB should have been, all
VMAC102        of the QW1145OB-QWF145OB variables were wrong (they had
Jan 21, 2008   the DB database value instead of the OB Object value).
   Thanks to Giuseppe Giacomodonato, E.P.V. Technologies, ITALY.

Change 25.300  PDB.ASUMTAPE could have blank SYSTEM and VOLSER, DEVNR
ASUMTAPE       missing when the SYSLOG Mount and Keep messages had the
Jan 21, 2008   same timestamp, and the Keep was seen first. Adding the
               variables SMFTIME SYSLTEXT forces the KEEP to be first
               to complete the prior event, but adding .001 seconds to
                 IF SYSLTMNT GT . THEN EVENTIME=SYSLTMNG+.001;
               was also needed to force the correct sequence.
   Thanks to Scott Barry, SBBWorks, Inc., USA.

Change 25.299  Type 42 Subtype 18 CF Cache Partition Summary Section for
EXTY42P3       Directory/Element Ratio Data now creates new dataset:
IMAC42            DDDDDD  DATASET  Description
VMAC42            TY42P3  TYPE42P3 RLS CF DIRECTORY/ELEMENT RATIO
VMXGINIT       which had been added in z/OS 1.8 but overlooked.
Jan 21, 2008
   Thanks to Bruce Widlund, Merrill Consultants, USA.

Change 25.298  ADOCxxxx members that existed have been updated with new
ADOCs          variables.  New ADOCS member lists the VMACxxxx products
Jan 20, 2008   for which an ADOC member does not exist.

Change 25.297  Change 25.196 caused ERROR: CHAR OPERAND IN THE %EVAL ...
UTILBLDP       when either or both MACFILE and MACKEEP were used and had
Jan 19, 2008   more than 65 characters of text.
   Thanks to Scott Barry, SBBWorks, Inc., USA.

Change 25.296  All ADOCxxxx members were updated with current CONTENTS.
ADOCs
Jan 19, 2008
   Thanks to Freddie Arie, Merrill Consultants, USA.

Change 25.295  The COMPALL program compiles all of the VMACs for all SMF
COMPALL        records in a single data step, and is back in MXG's QA
VMACIPAC       tests, now that it can be compiled!  It was used in early
VMACOMCI       MXG Versions, testing only the IBM SMF records, by about
VMACSAMS       Version 3 (1987!), it needed more virtual storage than I
Jan 19, 2008   could get back then, and it was set aside.  It now brings
               in all of the VMACs for all IBM and USER SMF records, and
               it detected numeric-character variable conflicts in one
               temp variable that was renamed in VMACIPAC, and two kept
               variables were renamed to avoid the exposure to error,
               if you were to add these and certain other SMF records to
               your BUILDPDB job:
                 -VMACSAMS.  Variable CLUSTR replaces numeric CLUSTER.
                 -VMACOMCI.  Variable DIFTYPEF replaces char DIFTYPE.
               The current COMPALL requires an 1150 MB Region on z/OS.

====== Changes thru 25.294 were in MXG 25.12 dated Jan 17, 2008=========

Change 25.294  Label PARTNCPU='TOTAL*NUMBER OF*CPUS*IN THE CEC' replaces
VMAC7072       the previous confusing "CPUS IN THE PARTITION" text that
VMXG70PR       goes back to the days when we "physically partitioned" a
Jan 17, 2008   "hardware platform". The variables PARTNCPU PLATCPUS,
               NUCPSCPU and temp variable NRCPSCPU have always counted
               the CP/CPU engines in this CEC/CPC/platform/box/etc.

               If there are no LPARNAME='PHYSICAL' records in TYPE70PR
               (because your outsourcer turned them off?), the variables
               PARTNCPU, PLATCPUS, NUCPSCPU and CPCNRCPU will be zero.
               And the specialty engine counters NRIFACPU, NRZIPCPU, etc
               will also always be zero.  And, in the ASUM70PR/ASUMCEC
               datasets, only your own LPARn variables are populated.
               Finally (?), CPCMSU in PDB.RMFINTRV is also zero.
   Thanks to Matthew Chappell, Queensland Transport, AUSTRALIA.

Change 25.293  SMF70GIE is now set from STARTIME+DURATM after SYNC59 to
VMXG70PR       provide a more stable and consistent value for the
Jan 17, 2008   expected end of the interval.  See Change 25.270.

Change 25.292  Internal logic was revised so when INTERVAL= is used, the
ANALRMFR       variables LRDY00-LRDY11 are added to the MEAN= parm for
Jan 17, 2008   Cpu Reports.
               Dollarsigns were needed in the below array definitions.
              -ARRAY INICT05 $ STFBIT05(' ') ;
              -ARRAY INICT05 $ STFBIT06(' ') ;
              -Also, updated for 54 engines z/OS 1.9.
   Thanks to Clay Duncan, Toyota, USA.
   Thanks to Jerry Cobb, American Century, USA.

Change 25.291  DB2ACCT variable QWACUDCP, CPU time in DB2 User Functions
VMACDB2        is now included in MXG variable DB2TCBTM, as documented
Jan 17, 2008   in DB2 Technical Note 4 (PAR.TASKS) in Newsletter FIFTY.

Change 25.290  Variable JOBCLASS is $8 in JES3 and $1 in JES2, but MXG
BUIL3005       had INPUTs with both lengths, and that caused SAS WARNING
VMAC26J2       messages that the variable's length was CHANGED; these
VMAC26J3       warnings will set Return Code 4 in SAS Version 9.2, so
VMAC30         this change revised how MXG handles JOBCLASS for JES3
Jan 17, 2008   to keep the full 8-byte length.  The contents of the
Jan 20, 2008   SPIN library are also changed; JOBCLASS is no longer kept
               in SPIN26, and JOBCLAS8 is kept instead of JOBCLASS in
               SPIN30_1, SPIN30_4, and SPIN30_5.
                   Note: This change was revised in MXG 25.25.
                         Do NOT use MXG 25.12 with JES3 BUILDPD3.
   Thanks to MP Welch, SPRINT, USA.
   Thanks to Scott Barry, SBBWorks, Inc., USA.

Change 25.289 -Nigel's Monitor for AIX/LINUX variable NRCPUS in NMONINTV
VMACNMON       dataset was one-tenth correct; the INFORMAT 6.1 should be
Jan 17, 2008   6.0.  The AAACPU2 count was correct in NMONAAA dataset.
              -Support for ERROR: records, sort of: they are printed on
               the log in full when read.
   Thanks to Michael W. Wolke, Boeing, USA.
   Thanks to Steve Olmstead, Northwestern Mutual Trust, USA.

Change 25.288  Variable SMF70GJT is already on Local zone, so the adding
VMAC7072       of the GMT offset in MXG created incorrect datetimes.
Jan 16, 2008   Jan 26: a second instance was removed.
Jan 26, 2008
   Thanks to Al Sherkow, I/S Management Strategies, USA.

Change 25.287  Support for SMF 122, Tivioli Allocation Record creates
EXT122IT       six new datasets:
EXT122AL          DDDDDD  DATASET   DESCRIPTION              SUBTYPE
EXT122WA
EXT122FA          T122IT  T122INIT  ATAM ASID INIT/TERM          0,4
EXT122DY          T122AL  T122ALOC  ATAM SUCCESSFUL ALLOCATE       1
EXT122ON          T122WA  T122WAIT  ATAM WAIT/NOHOLD/ALOCFAIL  2,3,5
IMAC122           T122FA  T122FAIL  ATAM VARY ONLINE FAILURE       6
TYPE122           T122DY  T122DYNA  ATAM UNSUPPORTED DYNALLOC      7
TYPS122           T122ON  T122VONL  ATAM VARY ONLINE TO WAIT       8
VMXGINIT
Jan 16, 2008

Change 25.286  Support for new ITRF variables in subtype '10'x and '18'x
EXITRCRG       records and new subtype '20'x created by ITRF DCR77/DCR78
EXITRCRG       (PTFs UA36089,UA37073).  New variables added:
IMACITRF         Dataset  New Variables
VMACITRF         ITRFMSG
VMXGINIT                  RECTOK  ='FULL*RECOVERY*TOKEN'
Jan 16, 2008              IMSID   ='IMS*ID'
                          COMN    ='COMMITS*DURING*THIS*SCHEDULE'
                          OASN    ='ORIGIN*APPLICATION*SEQUENCE*NUMBER'
                          SUSEC   ='SERVICE*UNITS*PER*SECOND'
                 ITRFDB2
                          CPUDB2TM='IN DB2*CPU*TIME'
               New dataset ITRFCRGN, 'CONTROL REGION CPU TIME', which is
               created once each 24 hours with the daily total CPU Time
               in the IMS Control Region:
                 Dataset  New Variables
                 ITRFCRGN
                          CPUCRGTM='CONTROL*REGION*DAILY*CPU TIME'
                          IMSNAME ='IMSID*FOR THE*IMS SYSTEM'
                          INTBTIME='INTERVAL*START*DATETIME'
                          INTENDTM='INTERVAL*END*TIME'
               The IMSNAME is retained from the prior ITRF record, as
               the '20'x record contains only the time fields.

Change 25.285  The VALIDVARNAME=V7 option added by Change 25.267 to WPS
CONFIGW2       CONFIGW2 file caused ERROR: OPTION VALIDVARNAME NOT KNOWN
Jan 15, 2008   so it has been removed from CONFIGW2 member.  That option
               is the internal WPS default, but the option name is not
               supported by WPS.

Change 25.284  Change 25.189 was not completely implemented.
ANALDB2R      -Using %ANALDB2R with new PDBOUT=YES printed COPIED TO YES
READDB2        and did not perform as documented; an additional test for
VFMT102        AND &PDBOUT NE YES was required to support the new YES.
Jan 16, 2008     But then using PDBOUT=YES caused messages:
                   ERROR: Libname PDB is not assigned.
                   ERROR: Libname   _VDB2A is not assigned.
                 when no //PDB DD or LIBNAME PDB was allocated.
                 That is an error.  When PDBOUT=YES is specified, it
                 writes all DB2 output datasets to their default (or the
                 tailored) DDname, and PDB is the default for sorted DB2
                 datasets.
                -But then using no PDBOUT operand, which should write
                 all DB2 output to //WORK, still caused
                   ERROR: Libname PDB is not assigned.
                 because READDB2 had an old segment of code that should
                 have been removed by Change 25.189, now corrected, so
                 that PDBOUT= null does NOW write only to //WORK.
              -Warnings about T102S017 DOES NOT EXIST are removed with
               enhancements made in VFMT102.
   Thanks to Mike Rounceville, Blue Cross Blue Shield of NC, USA.
   Thanks to Robert Carballo, Office Depot, USA.

Change 25.283  An extraneous ); was inserted in %UTILBLDP output (on a
UTILBLDP       separate line several lines after %LET EPDBOUT= text) if
Jan 15, 2008   both EXPDBOUT= and INCLAFTR= were specified.
   Thanks to Robert Carballo, Office Depot, USA.

Change 25.282  Support for seven new NTSMF Objects:
EXNTCICP          DDDDDD     DATASET   DESCRIPTION
EXNTCILI          NTCICP     CITRIXCP  CITRIX CPU UTILIZATION MGMT USER
EXNTHSMG          NTCILI     CITRIXLI  CITRIX LICENSING
EXNTHSRV          NTHSMG     HEALMGMT  HEALTH SERVICE MANAGEMENT GROUPS
EXNTOPSM          NTHSRV     HEALSERV  HEALTH SERVICE
EXNTSECT          NTOPSM     OPSMGRCN  OPSMGR CONNECTOR
EXNTSQDM          NTSECT     SECTIKAU  SECURE TICKET AUTHORITY
IMACNTSM          NTSQDM     SQLDATMI  SQLSERVER:DATABASE MIRRORING
VMACNTSM                           or  MSSQL:DATABASE MIRRORING
VMXGINIT       The SQLSERVER and MSSQL Database Mirroring records are
Jan 15, 2008   both output in SQLDATMI dataset.  The MSSQL records will
               populate variable SQLDBNAM='SQL*SERVER*DATABASE*NAME'
               while SQLDBNAM will be blank in the SQLSERVER records.
   Thanks to Roger Zimmerman, Hewitt Associates, USA.

Change 25.281  Cosmetic. If RMFINTRV definitions fall thru to create any
VMXGRMFI       work in "OTHER", a new MXG NOTE alerts you to the SYSTEM
Jan 15, 2008   and SRVCLASS that fell thru your workload definitions.
Jan 28, 2008   This is not an error, but it is recommended that all of
               your work be mapped to a unique workload variable in the
               RMFINTRV dataset.  The first ten workload names that fell
               thru are printed on the SAS log.
              -Cosmetic. Some ERROR:NEGATIVE CPU OVERHEAD for RMF 70-72s
               were in intervals in which a Policy Activation occurred,
               and data for those intervals are always wise to ignore.
               There is no flag bit that activation occurred during this
               interval, but the time of policy activation, R723MTPA, is
               now printed along with STARTIME and DURATM of the raw RMF
               record, so you can see if there was a policy activation
               to blame.  Variable CPUOVHTM in PDB.RMFINTRV will be
               negative, non-missing value. to identify the intervals
               that printed that log message.
               This message may also be seen in intervals in which the
               number of hardware CPUs was altered.
   Thanks to Chuck Hopf, Bank of America, USA.
   Thanks to Harald Seifert, HUK-COBURG, GERMANY.

Change 25.280  Support for Websphere MQ V6 System Admin Account Queue
EXMQLGMD       MQMD Structure in MQ Accounting Log non-SMF file creates
IMACMQLG       the new MQLGMQMD Dataset with the Descriptor fields for
TYPEMQLG       each event. This structure is documented on page 51 in
TYPSMQLG       Chapter 7.
VMACMQLG
VMXGINIT
Jan 11, 2008

Change 25.279  SMF 85 subtypes 38, 39, and 40 now create three datasets
EXTY85RE       TYPE85RE, TYPE85IB, and TYPE85TR.  Archaic test records
EXTY85IB       from year 2000 with shorter records were protected.
EXTY85TR
VMAC85
VMXGINIT
Jan 10, 2008
   Thanks to Harald Seifert, HUK-COBURG, GERMANY.

Change 25.278  PDB.TYPE70 variables PCTZIBYx were created in MXG 24.02
VMAC7072       but were accidentally6 not kept after MXG 24.06; they are
Jan 10, 2008   now reinstated.  PCTZIBYx/PCTIFBYx are the "MVS" values,
               variables PCTCIBYx/IFATYPE are "LPAR" values for zIIP and
               zAAP usage as noted in Change 24.184.
   Thanks to Harald Seifert, HUK-COBURG, GERMANY.

Change 25.277  Support for PSYNCH/390 SMF Record from M-Tech product
EXPSYC39       creates PSYNC390 dataset.
FORMATS
IMACPSYC
TYPEPSYC
TYPSPSYC
VMACPSYC
VMXGINIT
Jan 10, 2008
   Thanks to Joe Faska, Depository Trust Corporation, USA.

Change 25.276  Support for APAR OA20043 DFSMS DYNAMIC VOLUME EXPANSION
VMAC22         adds these two variables:
Jan  9, 2008     SMF22CYL='DEVICE*HIGH*CYLINDER'
                 SMF22PCP='DEVICE*HIGH*CYLINDER*PREVIOUS'
               to the TYPE22_A dataset.

Change 25.275 -Strange error messages can occur if you did not update
VMACTPMX       your IMACTPMX member with your SYSPLEX and SYSTEM names
Jan  4, 2008   and mapping tables; messages like these:
Jan  9, 2008   >>ERROR>> MXG/SAS VARIABLE TPMXPLEX NOT ASSIGNED
                         CORRECTLY USING LOCAL PROC FORMAT $MXTPMPX IN
               >>ERROR>> EXIT MEMBER MXG.PROD.USERID.SOURCLIB(IMACTPMX).
               >>ERROR>> RUN ABORTED.  CORRECT THE FORMAT AND RESTART.
               resulted when data from SYSTEMs not in IMACTPMX was read.
               Adding an entry for each SYSPLEX and for its SYSTEMs in
               IMACTPMX solved those errors.
              -Variable JXJBSJ4 was incorrectly input as $EBCDIC, but it
               is a hex flag field, now input and formatted $HEX8.
               Jan 9: A debugging PUT was removed, VGETJESN %INCLUDEd to
                      create variable JESNR from JCTJOBID for subtype=5.
                      The current level: TM V6R1.2 at PTF TMT6116; the
                      fix for the truncated records is APAR TR61390, but
                      you are at PTF TMT6118, the APAR is TR61391.
   Thanks to James D. Lieser, UHC, USA.
   Thanks to Scott Barry, SBBWorks, Inc., USA.

Change 25.274  A GDG member that had DSNAME .VnnnnGOO' (alpha oh) caused
VMAC6156       INVALID DATA warning message when MXG INPUT the oh's as a
Jan  2, 2008   numeric.  Adding the double question mark modifier to the
               INPUT function eliminates the warning and causes GENNO to
               be a missing value:
                 IF ENTTYPID='H' THEN DO; /*GDG, GET GOOVO GEN/VER NUM*/
                   GDGLEN=LENGTH(ENTRNAME);
                   VCK   =SUBSTR(ENTRNAME,GDGLEN-2,1);
                   DOTGCK=SUBSTR(ENTRNAME,GDGLEN-8,2);
                   IF DOTGCK='.G' AND VCK='V' THEN DO;
                     GENNO=INPUT(SUBSTR(ENTRNAME,GDGLEN-6,4),?? 4.);
                     VERNO=INPUT(SUBSTR(ENTRNAME,GDGLEN-1,2),?? 2.);
                   END;
                 END;
               Scott had provided this elegant alternative that uses the
               TRANSLATE and SCAN functions, worthy of sharing:
                 IF ENTTYPID='H' THEN DO; /*GDG, GET GOOVO GEN/VER NUM*/
                   LASTNODE = SCAN(ENTRNAME,-1,'.');
                   IF TRANSLATE(LASTNODE,'%%%%%%%%%%','0123456789') =
                     'G%%%%V%%' THEN DO;
                     GENNO=INPUT(SUBSTR(LASTNODE,2,4),4.);
                     VERNO=INPUT(SUBSTR(LASTNODE,7,2),2.);
                   END;
                 END;
   Thanks to Scott Barry, SBBWorks, Inc., USA.

Change 25.273  APAR PK38803 incompatibly alters SMF 102 IFCID 22 Record.
VMAC102       -These variables were INPUT as fixed length text, but they
Jan  2, 2008   can be longer, and can be relocated in the SMF record.
               MXG now detects the new OFFSETs and INPUTs $VARYING32:

                 Variable  Fixed Length         Label
                 QW0022CN   $EBCDIC18.    /*TABLE*CORRELATION*NAME*/
                 QW0022CR    $EBCDIC8.    /*TABLE*CREATOR*/
                 QW0022TN   $EBCDIC18.    /*TABLE*NAME*/
                 QW0022AC    $EBCDIC8.    /*QW0022XC:ACC INDEX CREATOR*/
                 QW0022AN   $EBCDIC18.    /*qw0022XN:INDEX NAME*/
                   (Note: 22AC and 22AN were original DSECT names)

               Debugging is enabled for the first 10 instances that have
               varying length fields on the MXG log, so I can validate.
              -Records with QW0022PL=. have many missing values, and the
               $CHAR vars formatted with $HEX have '20'x vice '00'x. The
               obs was created from a second record, after a legitimate
               instance with 6 observations, and has only R1O segment.
              -_S102022 SORT MACRO revised and tested for dupe removal.
              Jan 23, 2008:  Change 25.306 is now required for PK38803.
   Thanks to Scott Barry, SBBWorks, Inc., USA.

Change 25.272  The Group Capacity Name SMF70GNM is now populated only if
VMAC7072       bit 1 of SMF70PFL is ONE, as that bit indicates this LPAR
Dec 21, 2007   is part of a capacity group of that name.  If bit 1 is
               zero, SMF70GNM is blanked, because some z/OS 1.8 data had
               non-blank SMF70GNM when bit 1 was zero.  While I could
               have created a separate variable for bit 1 to identify
               this LPAR is in a capacity group, with this change there
               is no need for a second variable; now, IF SMF70GNM GT ' '
               then this LPAR is in that Capacity Group, otherwise not.
   Thanks to Al Sherkow, I/S Management Strategies, USA.

Change 25.271  Corrections for TMON/IMS support.
VMACTIMS      -CM5612TM is a datetime variable, now format DATETIME21.2.
Dec 21, 2007  -CMCOMP, CPCOMP are formatted HEX8.
              -XXTOKN Token variables are LENGTH 5 and HEX8 format.
              -CMGMTA value's second division by 4096 was removed.
              -ENDTIME is already on Local time, its GMT correction was
               removed.
              -These variables were incorrectly input as &PIB.8.6 vice
               &PD.8.6, causing too-large values when non-zero:
                 TIMSCH: CMTMEIO CMTMEPL CMMINT CMMPOL CMMSCH
                 TIMSCM: CMTMEIO CMTMEPL CMMINT CMMPOL CMMSCH
                 TIMSCN: CNTMEIO CNTMEPL CNMINT CNMPOL CNMSCH
                 TIMSCP: CPTMEIO CPTMEPL CPMINT CPMPOL CPMSCH
                 TIMSCT: CTTMEIO CTTMEPL CTMINT CTMPOL CTMSCH
               These fields were correctly documented as Packed in the
               DSECT, but overlooked originally as they all were zero.
              -Variables input &PIB.8.6 that are NOT GMT offsets are NOT
               then divided by 4096: e.g., CTRSPTME when CTSDATE and
               CTSPDATE are both non-missing matches their delta.
                 However, when CTSDATE is missing, CTRSPTME contains
                 the value of CTSPDATE shifted right by three nybbles,
                 i.e. a very large and very invalid data.
                 This problem will be passed to Landmark for correction,
                 but is circumvented by MXG setting CTRSPTME to missing.
              -Five CPU variables are documented on the DSECT as (MILS)
               for milliseconds and have always been input as &PIB.4.3:
                 CHCUMCPU CMCUMCPU CNCUMCPU CPCUMCPU CTCUMCPU
              -But eleven REGION*CPU*TIME variables have no clue as to
               their decimal place location:
                 CHCTCPUT CHDBCPUT CHDLCPUT CHIRCPUT CHCQCPUT
                 CJTXNCPU
                 CNCTCPUT CNDBCPUT CNDLCPUT CNIRCPUT CNCQCPUT
               I have arbitrarily input them as &PIB.4.3 (MIL) but this
               must be validated.
              -These variables are assumed input of &PIB.4.6 to be like
               their xxDUR counterparts, but this must be validated:
                 CMSQ6GM CMACCQ6 CNSQ6TM CNACCQ6 CPSQ6GM CPACCQ6
                 CUSQ6GM CUACCQ6
   Thanks to Warren Waid, JC Penny, USA.

Change 25.270  For ASUM70PR, IMACRMFI tailoring with INTERVAL=DURSET
ASUM70PR       can NOT be used, and output datasets created with that
VMXG70PR       tailoring will be invalid if STARTIME is changed in your
Dec 19, 2007   IMACRMFI member and you used the default ASUM70PR, which
               specified INTERVAL=DURSET as its default prior to this
               change.  You must use INTERVAL=HOUR, QTRHOUR, etc. in
               in your %VMXG70PR invocation in your ASUM70PR member to
               specify the desired interval.

               For RMFINTRV, you can still use IMACRMFI/DURSET, because
               it is a per-SYSTEM dataset, but I still recommend you use
               INTERVAL=xxxx and not use IMACRMFI, for clarity.

               Here's the problem with DURSET/IMACRMFI for ASUM70PR:
                 Because ASUM70PR summarization combines SYSTEMs that
                 can have different STARTIME, it uses and resets the
                 value in SMF70GIE.  When I detect INTERVAL=DURSET, I
                 have to detect if STARTIME was changed in IMACRMFI, and
                 if so, then MXGDURTM (that you added in your IMACRMFI
                 per Change 25.150) must be added to STARTIME to create
                 SMF70GIE.  I though I could use this code:
                     OLDSTART=STARTIME;
                     _DURSET;
                     IF STARTIME NE OLDSTART THEN DO;
                 and that worked with the first test case.

                 However, I now discover that the test will always fail
                 if STARTIME is already exactly on the interval, i.e.
                 STARTIME=DHMS(DATE,HOUR,0,0); for HOURly intervals will
                 equal OLDSTART when OLDSTART is exactly on the hour.
                 Since I can only detect some, but not all, changed obs,
                 I cannot support IMACRMFI and DURSET in ASUM70PR.

                 This is a rare problem; using INTERVAL=value in the
                 ASUM70PR invocations of %VMXG70PR and RMFINTRV invokes
                 of %VMXGRMFI is self-documenting and works safely,
                 so this change is mostly this change text and updates
                 to the INTERVAL= documentation comments in the cited
                 members.

Change 25.269  Support for SMF 50 subtype 4 OSA-MPC VTAM record adds new
EXTY50         observations with ATTCHTYP=4 to TYPE50 dataset, but only
FORMATS        if this DEV had activity during this interval; the logic
VMAC50         that deletes zero-activity intervals is in the EXTY50
Dec 22, 2007   if you should want to output all of those observations.
   Thanks to Karl Lasecki, Chemical Abstracts Service, USA.

====== Changes thru 25.268 were in MXG 25.11 dated Dec  7, 2007=========

Change 25.268  The date in MXG 25.11 was typo'ed as year 2006 in several
AAAAAAAA       members, but the member CHANGES was correct with 2007.
COPYRITE       The dates were corrected and the ftp site was refreshed
Dec  7, 2007   on Tuesday with the Dec  7, 2007 date.
   Thanks to Mike Ryan, Acxiom, USA.

Change 25.267  If the option VALIDVARNAME=V6 is set in your site's SAS
AUTOEXEC       options, a temporary variable in VMAC78 caused
AUTOEXEU        ERROR: The variable named N78HCNTCN contains more than
AUTOEXEW               8 characters
CONFIGV8       because the V6 value restricts the length of variable's
CONFIGV9       names to be 8 bytes or less.
VMAC78         MXG tests with the default VALIDVARNAME=V7, which allows
Dec  7, 2007   variable names to be up to 32 characters.
               But almost all MXG variables will always be 8-bytes or
               less, because I think shorter, encoded, albeit cryptic,
               variable names are easier for PROGRAMMERs to work with.
               But because some new open systems code was written with
               their long names, and because change the default in the
               MXG members can do no harm but can avoid future errors,
               VALIDVARNAME=V7 has been added to MXG CONFIGVx and the
               AUTOEXEx members.
   Thanks to Andreas von Imhof, Rabobank Nederland, THE NETHERLANDS.

Change 25.266  The MXG ERROR.VMAC110... messages are updated to print
VMAC110        the CICS/TS 3.2 expected values.
Dec  6, 2007
   Thanks to MP Welch, SPRINT, USA.

Change 25.265  Required for DB2 Version 9.1, DB2TCBTM correction.
VMACDB2        DB2TCBTM could be significantly less than it should be in
Dec  7, 2007   non-rollup observations in DB2ACCT.  The CPU time delta
               QWACEJST-QWACBJST was NOT included in DB2TCBTM when
               QWACBJST was zero (and DB2PARTY NE 'R') in DB2ACCT.
               And the loss has only been reported at sites with zIIP
               engines for their DB2 systems.

               Prior to DB2 V1.9, IBM DSNWMSGS documentation noted that
               QWACBJST=0 meant that CPU timing was in error, and so MXG
               had always NOT included that QWACEJST-QWACBJST delta in
               MXG's DB2TCBTM variable.  Accidentally, DB2TCBTM for the
               Rollup Records (i.e., DB2PARTY='R") has always included
               the QWACEJST when QWACBJST=0.
               Note that
                    DB2TCBTM=SUM(DB2TCBTM,QWACSPCP,QWACTRTE);
               is the final value output in DB2ACCT dataset.

               Now, IBM DB2 Level 2 Support has confirmed in a reply to
               an MXG site that QWACBJST=0 is valid and the QWACEJST in
               those records should be included in DB2TCBTM, adding that
               "If we have an agent running 100% on a zIIP, QWACBJST
               will be zero."  It was only after that reply from IBM DB2
               Support that I looked to see the CPU timing not is not in
               DSNWMSGS in the DB2 V 1.9 Macro Library.

               To see if this change impacts your DB2ACCT dataset, you
               can measure how much DB2TCBTM was lost with

                  PROC MEANS SUM DATA=PDB.DB2ACCT
                    (WHERE= (DB2PARTY NE 'R' AND QWACBJST=0));
                  VARIABLES QWACEJST;
                  TITLE TOTAL QWACEJST NOT INCLUDED IN DB2TCBTM;

               If no observations are selected, no CPU time was lost.

               Several folks at DB2 Support were ultimately involved in
               the problem, providing this information about PK46171:
               - Class 1 CP, zIIP, and elapsed times could be incorrect.
                  Because we don't get a 'start accounting' call:

                  1. QWACBSC would be from the last transaction to see a
                     start

                  2. QWACBJST would be the CP time from the last
                     transaction to see a start -- this can result in
                     this number being unrelated to QWACEJST

                  3. QWACCLSL_ZIIP would be effected similarly to
                     (QWACEJST - QWACBJST) since it is internally
                     calculated from a start ziip time that can be
                     unrelated to the end time

                  4. QWACAJST and QWACCLS2_ZIIP are probably not
                     noticeably effected although there could be an
                     extremely small amount of time that is not counted.

                     Above symptoms only occur in DRDA work when
                     connection-reuse is in effect.  I can't see any
                     record said lacking of PK46171 will directly make
                     qwacbjst to zero.
                - And this note on why QWACBJST can validly be zero.
                  From dump, we can see CPUTIME is 0 but zIIP time is >0
                  and this is a zIIP eligible distributed SRB.  Thus
                  this is working as expected.  The CP time can be 0
                  since all time might be on a zIIP at the time of the
                  first clocking. As long as either the CP or the zIIP
                  time > 0, that is normal.
   Thanks to Sieghart Seith, Fiducia, GERMANY
   Thanks to Derrick Haugan, MetLife, USA.
   Thanks to Lisa Ouellette, Wachovia, USA.
   Thanks to Jim Lazowski, NAV-INTERNATIONAL, USA.
   Thanks to Uncha, DB2 Level 2 Support, GERMANY.
   Thanks to Ronald Lobodzinski, DB2 Level 2 Support, USA.

Change 25.264  For consistency with MXG tailoring macro variables, new
IMACSPCK       &MACSPCK is defined in VMXGINIT and referenced in the
VMXGINIT       IMACSPCK tailoring member, though unlikely to be used.
Dec 5, 2007
   Thanks to Chuck Hopf, Bank of America, USA.

Change 25.263  Some DD DUMMY statements for INFILEs for new products
JCLTEST8       were missing in the TESTOTHR/TESSOTHR steps, and there
JCLTESS8       were inconsistencies in the TEST vs TESS members that
JCLTEST9       were corrected in these four test members. The main
JCLTESS9       purpose of these TEST/TESS jobs is to confirm that your
Dec 4, 2007    "USERID.SOURCLIB" tailoring did not cause any errors in
               the TESTIBMx steps, so a failure in a subsequent step due
               to a missing DD statement should not prevent you from
               moving to JCLPDB8/JCLPDB9 testing.
   Thanks to Eric Barnes, Scottish and Southern Energy, SCOTLAND.

Change 25.262  The 233 DDU files needed for ITRM sites to create ITRM
ITRMTNG        table definitions for each of the 233 datasets built
Dec  4, 2007   by MXG's TYPETNG (for CA's NSM product, formerly TNG).
               There is also the cpddudef.sas program that is used
               to generate all table definitions,.  You will need to
               replace &YOUR_PDB_PATH & Your_DDU_PATH in cpududef.sas
               with your paths.  The creation was run under a SAS ITRM
               interactive session.
               The itrmtng.sas file contains all 234 files in IEBUPDTE
               format; the individual files can be created by using the
               IEBUPDTE.SAS program in the MXG Source Library with the
               itrmtng.sas file as it's input.
   Thanks to Xiaobo Zhang, CheckFree, USA.

Change 25.261  Variable LGGLGDEF in CICS dataset CICLGG is the Log Write
VMAC110        Defer Interval, the value specified in the site's LGDFINT
Nov 29, 2007   parameter, but the MXG format only printed 2 decimals;
               the value is normally in milliseconds, so the format
               TIME13.3 is now used so a value of 5 ms will print as
               00:00:00.005.  n Deese, Computer Management Sciences,
   Thanks to Don Deese, Computer Management Sciences, USA.

Change 25.260  ITRTVLTM in TYPE30_V or PDB.SMFINTRV could be missing
VMAC30         for TYPETASK='OMVS' record; it is now protected twice,
Dec  1, 2007   in the SUBSTEP loop, and at the OUTPUT statement.
   Thanks to Carl Sablon, KBC, BELGIUM.

Change 25.259  VMXGALOC bumped to the next week's PDB one day early, and
VMXGALOC       could do even worse if the week-start-day was not Monday.
Nov 29, 2007   The logic was revised for both errors by this CodeShark.
   Thanks to Patrick Holloman, Zions Bank Corporation, USA.

Change 25.258  Intentionally Blank Change (a/k/a skipped).

Change 25.257  Support for ICSF HCR7750 SMF Logging Update for TKE adds
FORMATS        these new variables to SMF type 82 subtype 16 TYPE8216:
VMAC82            SMF82PAL='LENGTH OF*FIXED*AUDIT*DATA*'
Nov 29, 2007      SMF82PDE='DESCRIPTION'
                  SMF82PFI='FUNCTION*ID'
                  SMF82PFR='FUNCTION*RETURN*CODE'
                  SMF82PTA='TKE*AUTHORITY'
                  SMF82PUS='USER ID*NONCE*TSN'
               and incorrectly spelled SMF82PDK is now SMF82PBK.
               New MG082RC format decodes SMF82PFR.
   Thanks to Greg Burt, Fifth Third Bank, USA.

====== Changes thru 25.256 were in MXG 25.11 dated Nov 22, 2007=========

Change 25.256  Macro variable &MXGDEBUG is revised for internal debugs.
TIMEBILD       It's value is now the name of the member, suffixed with a
UTILRMFI       numeric value when multiple values are needed. Previously
VMXGRMFI       tests were for a simple numeric value, which triggered
VMXGSUM        unwanted debugging diagnostics from other code members.
VMXGSUME       And, UTILEXCL now exploits &MXGDEBUG with BEFORE/AFTER
UTILEXCL       location for each of the optional CICS data segments, so
Nov 21, 2007   diagnosis of user tailoring errors will be faster!
                 For example, you could use:
                    OPTIONS FIRSTOBS=3800 OBS=3800;
                    %LET MXGDEBUG=IMACEXCL;
                    %INCLUDE SOURCLIB(TYPE110);
                 if you had an error after IMACEXCL/IMACICxx members
                 were tailored, and the error was in _N_=3800th record.

Change 25.255  Support for Action Software's EventAction SMF User Record
EXEVTA00       creates new datasets:
EXEVTA01         DDDDDD     DATASET   DESCRIPTION
EXEVTA02
EXEVTA03         EVTA00     EVTA00    DATASET CHANGE OR REFERENCE
EXEVTA04         EVTA01     EVTA01    CHANGESMXSMF)
EXEVTA05         EVTA02     EVTA02    REFERENCES MZSMF)
EXEVTA06         EVTA03     EVTA03    CHANGE ACTION CONTROLS
EXEVTA07         EVTA04     EVTA04    TEST ACTION C506)
EXEVTA08         EVTA05     EVTA05    COMMAND CONTROL C507)
EXEVTA09         EVTA06     EVTA06    CHG.DISTRIB TRANSMITS MZSMF)
EXEVTA0A         EVTA07     EVTA07    REF.TRACKING BY MEMBERS CS501)
EXEVTA0B         EVTA08     EVTA08    UPDATE TO EXCLUDES TABLE C41E)
EXEVTA0C         EVTA09     EVTA09    UPDATE TO BLACKOUT TABLE C427)
EXEVTA0D         EVTA0A     EVTA0A    UPDATE TO DATASET OPTIONS C404)
EXEVTA0E         EVTA0B     EVTA0B    UPDATE TO MEMBER OVERRIDE C405)
EXEVTA0F         EVTA0C     EVTA0C    OPTIONS AT OID LEVEL C40F)
EXEVTA10         EVTA0D     EVTA0D    GLOBAL PARMS C401)
EXEVTA11         EVTA0E     EVTA0E    DATA SET GLOBAL OPTIONS C401)
EXEVTA12         EVTA0F     EVTA0F    PXC
EXEVTA40         EVTA10     EVTA10    UPDATE TO USER GROUP
EXEVTA50         EVTA11     EVTA11    EXCLUDES NOT REF.TRK)
EXEVTA51         EVTA12     EVTA12    UPDATE TO CMD>TRACK OPTIONS
EXEVTAF0         EVTA40     EVTA40    CHANGE REQUEST DELETE
EXEVTAF1         EVTA50     EVTA50    USS CONTROLS
IMACEVTA         EVTA51     EVTA51    USS EXCLUDES
TYPEEVTA         EVTAF0     EVTAF0    ACCOUNTING RECORDS C50C)
TYPSEVTA         EVTAF1     EVTAF1    USS CHANGS AND REFERENCES
VMACEVTA
VMXGINIT
FORMATS
Nov 18, 2007
   Thanks to Craig Collins, State of Wisconsin DOA DET, USA.

Change 25.254  New sample report summarizes the DB2 Package data to the
ANALACTP       UOW level keeping track of total response and CPU,
Nov 18, 2007   the longest package, the first 10 packages.
Jan  8, 2008   Jan 8: Typos in the untested code were discovered/fixed.
                      Example expected UOWIDCHR variable had been added
                      to your DB2ACCTP dataset, but didn't show how to,
                      or note it could be removed from ANALACTP example.
   Thanks to Dan Almagro, Automobile Club of Southern California, USA.

Change 25.253  Support for new NTSMF MSSQL Objects.
EXNTQLBA          DDDDDD     DATASET      DESCRIPTION
EXNTQLBN
EXNTQLBS          NTQLBA     MSQBROAC     MSSQL:BROKER ACTIVATION
EXNTQLBT          NTQLBN     MSQBUFND     MSSQL:BUFFER NODE
EXNTQLCA          NTQLBS     MSQBROST     MSSQL:BROKER STATISTICS
EXNTQLCL          NTQLBT     MSQBRODT     MSSQL:BROKER/DBM TRANSPORT
EXNTQLCT          NTQLCL     MSQCLR       MSSQL:CLR
EXNTQLCU          NTQLCA     MSQCATME     MSSQL:CATALOG METADATA
EXNTQLES          NTQLCU     MSQCURMG     MSSQL:CURSOR MANAGER TOTAL
EXNTQLPC          NTQLCT     MSQCURTY     MSSQL:CURSOR MANAGER BY TYPE
EXNTQLSR          NTQLES     MSQEXECS     MSSQL:EXEC STATISTICS
EXNTQLTR          NTQLPC     MSQPLANC     MSSQL:PLAN CACHE
EXNTQLWS          NTQLSR     MSQSQLER     MSSQL:SQL ERRORS
IMACNTSM          NTQLTR     MSQTRANS     MSSQL:TRANSACTIONS
VMACNTSM          NTQLWS     MSQWAITS     MSSQL:WAIT STATISTICS
VMXGINIT
Nov 18, 2007
   Thanks to Bob Gauthier, Albertsons, USA.

Change 25.252  Changes for testing MXG execution under WPS:
CONFIGW2      -MXGWPSV2. JCL procedure updated for WPS under z/OS
MXGWPSV2      -VMXGINIT. Test for identification of WPS revised, code
VMXGINIT                 was relocated to after TAPENGN was set for SAS:
VMXGPRAL           %IF %SYSPROD(WPS) EQ 1 %THEN %DO;
ANALDB2K             %LET WPSVER=&SYSVER;
ANALHTML             %LET SASVER=8;
ANALMQMC             %LET TAPENGN=WPDSEQ;
ASUM42DS           %END;
ASUMCACH
     -CONFIGW2.  CONFIG options now specify SEQENGINE=WPDSEQ.
ASUMHSM      -VMXGPRAL. Tests for ENGINE adds WPDSEQ to list of seqs.
ASUMTALO               Unrelated, SUM was added to PROC MEANS output.
CICSTRAN     -VMXGINIT.  WPS does not yet support VIEWS; all members
DB2PDB                   with /VIEW=XXXXXX were replaced with &VWxxxxxx
GRAFRAID                 macro variables that are %LET to the correct
JCLUOWP                  View-NAME under SAS but blanked under WPS.
JCLUOWV                    This change will be reversed when WPS has
UTILRMFI                   added support for Views.
UTILUOW      -ANALDB2K thru VMXGUOWT listed at left were "View-Revixed".
VMXGCAPT      WPS Level Tested successfully was Build (8460).
VMXGSUM
VMXGSUME      MXG Newsletter FIFTY-ONE, VI.A WPS Technical Note reports
VMXGUOTT      1. Current status of MXG Testing under WPS Betas Nov 2007.
               1.j. MXG Support Position for testing of WPS Release.
VMXGUOW       2. Run time comparisons.
VMXGUOWT      3. Revision to SAS Clones article in MXG Newsletter FIFTY.
Nov 19, 2007  4. Summary and statistics

Change 25.251  Several variables starting with R7021xxx had '2048-BIT'
VMAC7072       in their labels, but those are all '1024-BIT' counts and
Nov 17, 2007   durations; their labels are now corrected.
   Thanks to Miguel F. Monferrer Carvajal, SPAIN.

Change 25.250  Variable TARCELAP is now FORMATed TIME12.2.
VMACTMNT
Nov 17, 2007
   Thanks to Chuck Hopf, Bank of America, USA.

Change 25.249  Variable TAUSRDAT was INPUT as $EBCDIC32. but can have up
VMACTMO2       to 240 bytes of data; INPUT statement was revised to use
Nov 17, 2007   TAUSRLEN to determine the length of user data input.
   Thanks to Roger Foreman, Acxiom, USA.

Change 25.248  The current VMXGSUM creates output variables with stored
VMXGINIT       LENGTH of 5 (z/OS) or 6 (ASCII), based on the value of
VMXGSUM        &MXGLEN (set in VMXGINIT), unless they are used in the
Nov 18, 2007   SUMLONG=, MAXTIME=, OR MINTIME= arguments, which always
               create LENGTH 8 variables. You could change those lengths
               with an explicit LENGTH statement in OUTCODE=, or you
               could change the &MXGLEN value, but that would also
               change subsequent LENGTHs of all defaulting variables in
               subsequent steps in the same SAS session/step.
               The SUMBY= and ID variables are output in the same length
               they were in the input dataset, or in the INCODE= code if
               that is where they were created.  They could be changes
               in the ORDER= argument.
               This change creates macro variable &LNSUMOUT which will
               only apply to VMXGSUM and makes all variables on which we
               do mathematical operations to be LENGTH 8.
               The default value of LNSUMOUT is blank, so the variables
               will have the original (shorter) length unless you set
               %LET LNSUMOUT=8; in your //SYSIN stream.

   Thanks to MP Welch, SPRINT, USA.

Change 25.247  WebSphere SMF 120 Subtype 3 with two heap ids SM120SNT=2
VMAC120        caused INPUT STATEMENT EXCEEDED RECORD or INVALID DO LOOP
Nov 13, 2007   CONTROL error; only SM120SNT=1 records had been read and
               this condition exposed an MXG logic error, now corrected.
   Thanks to Bjorn Helgestad, VPS ASA, NORWAY.

Change 25.246  A CFI record with only a header segment caused ASMRMFV
ASMRMFV        to burp and die with an 0C4; this revision protects.
Nov 13, 2007   Additional enhancements are noted in the changes in the
Nov 17, 2007   ASM source comments.
   Thanks to Jon Whitcomb, Great Lakes Educational Loan Service, USA.
   Thanks to Jerry Urbaniak, Acxiom, USA.

Change 25.245  CA PDSMAN product's SMF record created megabytes of data
VMACPDSM       when diagnostic trace records (LGRTYPE='D') were enabled,
Nov 12, 2007   and CA's recommendation was to suppress them and also the
               Resource Monitoring (LGRTYPE='M') record processing.
   Thanks to Sudie Wulfert-Shcickendanz, Anheuser-Busch, USA.

Change 25.244  The IRRDBU00 RACF DATABASE UNLOAD record '0200' comes in
VMACRACF       two different lengths, 540 and 549, but MXG expected the
Nov 12, 2007   549 length record, which caused INPUT RECORD EXCEEDED
               error when the shorter record was read. Both lengths are
               now supported.
   Thanks to Sean Angley, IBM, CANADA

Change 25.243  The automatic PROC DELETE of the WORK.UNKNOWN dataset is
TYPETNG        removed, so that that dataset will exist after TYPETNG or
TYPSTNG        TYPSTNG program is used to process CA NSM (old TNG) data.
Nov  6, 2007   If there are non-zero observations in WORK.UNKNOWN, it is
               very possible that some or all data will not have been
               output by MXG logic, so leaving WORK.UKNOWN will allow
               it to be tested for possible unknown data records.
   Thanks to Xiaobo Zhang, CheckFree, USA.

Change 25.242  NDM record 'UC' is now output in NDMAE dataset.
VMACNDM
Nov  5, 2007

Change 25.241  Support for CICS Transaction Gateway 7.1.0 new SMF 111
EX111CM        statistics record:
EX111CM        datasets:
EX111CS           DDDDDD     MXG       MXG
EX111CXE          DATASET    DATASET   DATASET
EX111CXI          SUFFIX     NAME      LABEL
EX111GD
EX111PH           111CM      T111CM    CICS CTG COMMUNICATIONS MANAGER
EX111SE           111CS      T111CX    CICS CTG CICS SERVER
EX111WT           111CXE     T111CXE   CICS CTG EXCI SERVER INSTANCE
IMAC111           111CXI     T111CXI   CICS CTG IPIC SERVER INSTANCE
VMAC111           111GD      T111GD    CICS CTG GATEWAY DAEMON
VMXGINIT          111PH      T111PH    CICS CTG PROTOCOL HANDLER
Nov  5, 2007      111SE      T111SE    CICS CTG SYSTEM ENVIRONMENT
Nov 21, 2007      111WT      T111WT    CICS CTG WORKER THREADS

Change 25.240  Full Support for CICS/TS 3.2 Compressed Data.
EXITCICS       MXG incorrectly believed that '20'x bit in MCTMNOPN was
VMAC110        true when CICS/TS 3.2 SMF 110-1 records are internally
VMAC112        compressed, but that bit only indicates that the compress
Nov  3, 2007   option was enabled for this CICS region.  This caused MXG
Nov 13, 2007   to falsely report the EXITCICS decompression exit was not
               correctly installed, when Dictionary Records (MNSEGCL=1),
               which are never compressed, were read. MXG now tests for
               non-zero MCTSSCRL, which is the documented condition for
               a compressed CICS SMF 110 or 112 record.
              -VMAC112 was similarly changed to test for non-zero OMSPCL
               to detect compressed SMF 112 records.
              -This incorrect assumption had also been passed in my spec
               for the EXITCICS logic, which had just turned off that
               '20'x bit in its decompressed output. Now, EXITCICS sets
               MCTSSCRL or OMSPCL to zero after decompression.
              -If you previously assembled EXITCICS prior to this change
               you must reassemble with this revised EXITCICS member AND
               use the revised MXG's VMAC to read compressed records.

Change 25.239 -Support for new THRUPUT MANAGER variables in TYPETPMX:
EXTPMALG         JXSLMCC ='JXSLM*CONTROL*CENTER'
EXTPMDBS         JXSLMCC ='JXSLM*CONTROL*CENTER'
EXTPMSLM      -New SLM JOB Statistics subtype 5 creates TPMSLM dataset.
FORMATS       -New DBS POOL subtype 240 creates two new datasets:
IMACTPMX         TPMALG - Algorithm data
VMACTPMX         TPMDBS - DBS Pool data
VMXGINIT      -Jan 4: Variables JESNR JCTJOBID added to TPMSLM dataset.
Nov  3, 2007  -Jan 9: GA records have corrected ETP truncation that was
Jan  4, 2008          originally reported here.
Jan  9, 2008
   Thanks to Scott Barry, SBBWorks, Inc., USA.

Change 25.238  Optional OMEGAMON BSC segment for CICS/TS 3.2 did NOT
IMACICOB       increase time-duration/count fields to the full 12-byte
IMACICOC       resolution that I had ASS-U-Med, which caused MXG ERROR
IMACICO2       message INVALID STRTTIME.  I made the same assumption for
Nov  2, 2007   all three Omegamon segments with time/count fields, so I
               now assumed that the other two segments also have 8-byte
               fields (IMACICOB for OMEGDB2, IMACICO2 for OMEGAMON), so
               those two members also are reverted.  And, of course, if
               Omegamon does increase their fields to full 12-bytes,
               yet another MXG change will be required.
   Thanks to Ray Dunn, CIGNA, USA.

Change 25.237  Variable LCPUWAIT='LCPU 28*WAIT*COMPLETE?' in PDB.TYPE70
VMAC7072       was not kept after MXG 23.09, but the same named variable
Nov  1, 2007   LCPUWAIT='LPAR*WAIT*COMPLETION?' in PDB.TYPE70PR was, and
               that was the source of the problem.  Now, a rename fixes
               this error, which was introduced in the infamous SPLIT70
               rewrite.
   Thanks to Enzo Rossi, Demand Technology Software, ITALY.

Change 25.236  Change 24.141 with z/OS at 1.7 or earlier caused TYPE78IO
VMAC78         dataset to have zero observations; MXG tested SMF78RSQ
Oct 31, 2007   for zero or one, but SMF78RSQ does not exist when the
Nov  1, 2007   RMF product segment is only 104 bytes.  The test was
               revised to output TYPE78 for missing value, zero or one.
               But then, the duplicate observations created were NOT
               removed by the NODUP option, because the SMFTIME in the
               second or third replicates was not exactly the same value
               as the first, so the _STY78IO sort macro was rewritten to
               remove those with identical SMFTIMEs, and an extra DATA
               step is used to keep only the FIRST.SMFTIME instance.
               (The additional logic is invoked, but not needed, when
               the SPLIT 78 records have a valid SMF78RSQ value.)
   Thanks to Peter B. Hopper, CSC, AUSTRALIA.
   Thanks to Steven Olmstead, Northwestern Mutual, USA.

Change 25.235 -Support for new Solaris CA CUBE STORE GROUP object and
EXTSO030       new variables in existing Solaris MIB-2.
EXTAI027      -Support for two new AIX Objects.
EXTAI028      -Support for 10 new RedHeat Objects, many new Metrics
EXTRH020       for existing RedHat Objects.
EXTRH021
EXTRH022
EXTRH023
EXTRH024
EXTRH025
EXTRH026
EXTRH027
EXTRH028
EXTRH029
FORMATS
VMACTNG
VMXGINIT
Oct 31, 2007
   Thanks to Xiaobo Zhang, CheckFree, USA.

Change 25.234  New variables added to OAM SMF 85 subtype 32-35 record
VMAC85         by z/OS 1.7 are now input and kept in TYPE85ST dataset:
Oct 28, 2007      R85B2ODK='BACKUP2*BYTES*DELETED FROF*OPTICAL'
Nov  1, 2007      R85B2ODO='BACKUP2*OBJECTS*DELETED FROM*OPTICAL'
                  R85B2ORK='BACKUP2*BYTES*READ FROM*OPTICAL'
                  R85B2ORO='BACKUP2*OBJECTS*READ FROM*OPTICAL'
                  R85B2OWK='BACKUP2*BYTES*WRITTEN TO*OPTICAL'
                  R85B2OWO='BACKUP2*OBJECTS*WRITTEN TO*OPTICAL'
                  R85B2TDK='BACKUP2*BYTES*DELETED FROF*TAPE'
                  R85B2TDO='BACKUP2*OBJECTS*DELETED FROM*TAPE'
                  R85B2TRK='BACKUP2*BYTES*READ FROM*TAPE'
                  R85B2TRO='BACKUP2*OBJECTS*READ FROM*TAPE'
                  R85B2TWK='BACKUP2*BYTES*WRITTEN TO*TAPE'
                  R85B2TWO='BACKUP2*OBJECTS*WRITTEN TO*TAPE'
                  R85NTE  ='TAPE*VOLUMES*EXPIRED'
                  R85RCLD ='RECALLED*OBJECTS*PROCESSED*THIS CYCLE'
                  R85RCLK ='BYTES OF*RECALLED*OBJECTES*THIS CYCLE'
               and these varibles added by z/OS 1.8 are input/kept:
                  R85LOBD ='ROWS*DELETED*FROM LOB*STRUCTURE'
                  R85LOBI ='ROWS*INSERTED*INTO LOB*STRUCTURE'
   Thanks to Harald Seifert, HUK-COBURG, GERMANY.

Change 25.233  The COMPRESSED RECORD FOUND error was printed for a CICS
VMAC110        dictionary record, but the MNSEGCL flag that identifies
Oct 27, 2007   the record IS a dictionary record was not printed.

Change 25.232  Change 25.124 added preliminary support for WPS execution
VMXGINIT       but it forced WPSVER=2; now, the actual WPSVER is stored
Oct 26, 2007   in &WPSVER.

Change 25.231  Change 25.177 created new macro variable &ARRAYRMF, but
VMXGINIT       the location in VMXGINIT was inside a DO GROUP that was
Oct 26, 2007   only executed for SAS V8.2, causing UNRESOLVED MACRO when
               MXG executed under SAS Version 8.1.  The statement was
               relocated so it is always executed, no matter what SAS
               version is used.
   Thanks to John Compton, ACS, USA.

Change 25.230  MXG support for IMF 4.3 used the new offset field to the
VMACCIMS       DBD segments when it was non-zero, but PTF BQI0129 for
Oct 23, 2007   IMF 4.2 populated that previously reserved field, which
               caused INPUT EXCEEDED error and this error message:
               INVALID IMS TRANSACTION RECORD LENGTH=836 WITH xxx
               48-BYTE DBDS EXPECTED AFTER COL=32765 _N_=1
               Now, MXG only uses the 4.3 offset to DBDs when the IMF
               version is 4.3 or greater.
   Thanks to Sigfried Trantes, IDG, GERMANY.

Change 25.229 -NMON data for AIX for PDB.NMONCPUD records can have the
VMACNMON       number of CPUnn records increase and decrease as AIX adds
Oct 23, 2007   or subtracts "virtual" CPUs, and when a CPUnn goes away,
Nov  2, 2007   NMON wrote a short record, which caused INPUT EXCEEDED
               error.  Now, MXG detects and deletes these short records.
               Note that the PDB.NMONINTV dataset, in NRCPUS variable,
               has the number of "real" CPUs.  However, in this case,
               the value of NRCPUS was always 6, even though there were
               CPUnn segments with CPU14 (i.e., there should have been
               NRCPUS=7, as there are 2 "virtual" CPUs for each "real".
              -Temporary variables WORD11-WORD24 were not set to LENGTH
               $128, so they took the SAS default of 8-bytes for CHARs,
               causing character variables stored from them to also have
               a stored length of 8 bytes.  Now, all WORDnn are $128,
               and specific LENGTHs for kept variables are used where
               needed.
              -Variables NRCPU, PID, and PPID are now numerics.
              -NMON data value 'nan' is 'Not a Number' and is stored in
               the data records, causing INVALID DATA messages until
               each instance is protected with double question marks!!
   Thanks to Mike Woelke, Boeing, USA.

Change 25.228  Protection for invalid SMF 14 record that had NUCB=2 but
VMAC1415       only one actual UCB segment.  This record caused ERROR:
Oct 17, 2007   INPUT STATEMENT EXCEEDED RECORD LENGTH.  Protection will
               print error message for first three bad instances.
   Thanks to William Carrol, Grange Insurance, USA.

Change 25.227  Variable RPRTCLAS is now kept in TYPE72DL dataset to flag
VMAC7072       a Service Class versus a Reporting Class observation. It
Oct 16, 2007   was not kept previously because the SMF manual mentioned
               only service classes, but actual data shows TYPE72DL can
               contain both Service and Reporting Class observations.
   Thanks to Harald Seifert, HUK-COBURG, GERMANY

Change 25.226  UPRINDOC will PROC PRINT the NAME and LABEL of variables
UPRINDOC       and is used to create the example output in the ADOCxxxx
Oct 16, 2007   members, and it also PROC MEANS all numeric variables.
               It's been in MXG for years, but never documented.

Change 25.225  RMF III variable ENCCPUT is labeled 'CP*ENGINE*CPU TIME'
VMACRMFV       now, because it is recalculated to remove zIIP CPU time:
Oct 16, 2007     ENCCPUT=ENCCPUT-ENCSUPT;
Oct 31, 2007   when it was found (and confirmed by RMF support) that it
               contained both CP and zIIP Engine CPU time, but MXG will
               always preserve the CP-Engine CPU times separately from
               the zIIP and/or zAAP engine CPU times.
   Thanks to Roger Foreman, Acxiom, USA.

Change 25.224  The tests for CPUTYPE IN ('2064'X ...) are revised to now
VMAC7072       alternatively test for ZARCHMDE='Y', so that a new value
VMXGRMFI       for CPUTYPE does NOT have to be added to MXG's table.
Oct 16, 2007     Previously, an unknown CPUTYPE was INCOMPATIBLE until
Oct 27, 2007   it was added to the tables in these two members.
               The tests for CPUTYPE were needed to identify which data
               exists in some of the early CPU types, but now that IBM
               has added the bit for ZARCHMDE, it eliminates the need
               for a new MXG version when IBM has a new CPUTYPE.
   Thanks to Don Deese, Computer Management Sciences, USA.

Change 25.223  The variable HOST is increased to 32 bytes; the original
VMACNMON       length of 8 is insufficient for unix/AIX/linux host name.
Oct 15, 2007
   Thanks to Michael W. Wolke, Boeing, USA.

Change 25.222  EXIT112 is the enhanced CICS INFILE EXIT for z/OS MXG
EXIT112        that reads compressed SMF 110 and SMF 112 records, but it
Oct 13, 2007   is temporary, as it will replace EXITCICS when a site
               reports successful production sites with both records.

               EXITCICS is running in production at several sites.

               EXIT112 is an extension to EXITCICS, and EXIT112 has been
               tested, but only with a small SMF file.  I recommend that
               EXIT112 be installed instead of EXITICS, and ask that you
               confirm successful processing compressed 110 and 112 data
               so that I can remove EXIT112 and rewrite this change.

Change 25.221  Support for CA NSM data from VM Ware VSX Systems creates
EXTVW001-      ten new datasets.  Many VMW metrics are the same as their
EXTVW010       Solaris and RedHat Linux counterparts, but with different
FORMATS        variable names because not all exist and they are created
IMACTNG        in different orders. While "TNG" still must be the suffix
VMACTNG        for the MXG code members, the dataset labels of all "TNG"
VMXGINIT       datasets are now changed to "NSM".  New VM Ware datasets:
Oct 13, 2007     DATASET    DDDDDD    DESCRIPTION
                  VW001     VW001     NSM CA CPU GROUP
                  VW002     VW002     NSM CA FILE SYSTEM
                  VW003     VW003     NSM CA INTERFACE GROUP
                  VW004     VW004     NSM CA KERNEL CONFIG GROUP
                  VW005     VW005     NSM CA MEMORY GROUP
                  VW005     VW005     NSM CA NETWORK GROUP
                  VW007     VW007     NSM CA PER CPU GROUP
                  VW008     VW008     NSM CA SWAP GROUP
                  VW009     VW009     NSM CA PROCESS GROUP
                  VW010     VW010     NSM VIRTUALIZED ENVIRONMENT
   Thanks to Xiaobo Zhang, CheckFree, USA.

Change 25.220  The LABEL for SMF91OW was correct in TYPE91 datasets, but
ANAL91         it was changed in ANAL91, incorrectly, in an unneeded and
Oct 11, 2007   redundant and now removed LABEL statement.
   Thanks to Dave Krouse, IBM, USA.

Change 25.219  TYPE74CA variable FWDC was replaced some time ago, but
VMAC74         the label was not corrected; the variable is labeled now:
Oct 11, 2007     FWDC    ='DASD F/W*BYPASS*COUNT*R745DFWB'
   Thanks to Ed Woodward, UPS, USA.

Change 25.218  Support for local CICS USER field CMODHEAD,CMODNAME=TRADE
IMACICU5       creates variable TRADEU5 in CICSTRAN, when enabled.
VMAC110
UTILEXCL
Oct 11, 2007
   Thanks to Leendert Keesmaat, UBS, SWITZERLAND.

Change 25.217  VMACPRPR was revised, in June, but the Change text was
VMACPRPR       lost.  Originally support for the '1620' record was added
Oct 10, 2007   June 12, and test records had different delimiters in
               date/time fields, so INPUTs were changed in MXG, but now
               I see that no other record's date/times were changed.
               This change, which was included in MXG 25.10, reverted
               date/times for all other records to the original format,
               but created a separate path to decode 1620 subtypes.
   Thanks to Sigfried Trantes, IDG, GERMANY.

Change 25.216  The MXG support for optional CICS EZA01/EZA02 fields has
IMACICEZ       been enhanced and documentation revised for clarity:
IMACICE1      -IMACICEZ always has five fields, but they are clock-count
IMACICE2       fields that increased from 8 in CICS/TS 3.1 and earlier
VMAC110        to 12 bytes, with higher time resolution, in CICS/TS 3.2.
Oct 11, 2007   Now, IMACICEZ supports both lengths, because SMFPSRVR,
               the CICS Version, is used to identify the field length.
               So you will only have to remove the comment block, with
               no other tailoring, when IMACICEZ needs to be tailored.
              -IMACICE2 had 11 fields with z/OS 1.4 TCP/IP data, but can
               have 22 fields with z/OS 1.7 and later.  While you will
               still have to look at UTILEXCL program's REPORT THREE to
               see which data you have in your records, now there are
               TWO comment blocks, one for each set, so you should only
               remove one comment block, with no other tailoring.
              -IMACICE1 data comes in several different sets of data,
               so you WILL have to compare UTILEXCL's REPORT THREE to
               see which fields you have, and it is VERY likely you will
               to update IMACICE1 to match your data, as follows:
                  IMACICE1 expects 13 fields with CMODHEAD EZA01, and
                  the label statements identify the content of each
                  field.  If you have less than 13 fields, you will have
                  to tailor it.  For example, one structure ended with
                  "ATTACHED" and had only 7 fields. For that data, you
                  would EDIT your IMACICE1 member, and:
                  -change this test for data-left (prevents STOPOVER)
                      IF MCTSSDRL-(COL-SEGSTRT) GE 52 THEN DO;
                   to test your length, GE 28 if there are seven fields,
                  -change LABELs to match the CMODNAME in REPORT,
                  -delete LABELs for variables that don't exist,
                  -change INPUT statement to read only your variables
                       INPUT (EZA01A01-EZA01A07) (&PIB.4.) @;
                  -and see text of Change 24.033 for additional notes.
              -You create REPORT THREE with the _RPTEXCL macro run
               with or after your UTILEXCL execution:
                    //SYSIN DD *
                     %INCLUDE SOURCLIB(UTILEXCL);
                     _BLDDICT;
                     _BLDEXCL;
                     _RPTEXCL;
              -VMAC110 was updated to keep the EXA01A13 13th variable.
   Thanks to Jane Dickerson, PRODUBAN, ENGLAND.

====== Changes thru 25.215 were in MXG 25.10 dated Oct  7, 2007=========

Change 25.215  Change 25.179 broke VMXGUOW, some overrides of _LDB2ACC
VMXGUOW        caused CHARACTER OPERAND IN %EVAL FUNCTION errors.
Oct  7, 2007   Also, parameter HOWDEEP added to set kept array sizes.

Change 25.214  An example that finds all TSO and IDMS USERID that logged
TSOIDMS        on,using IBM SMF 30 and IDMS PERFMON USER SMF records.
Oct  6, 2007
   Thanks to Pat Curren, Supervalu, USA.

Change 25.213  Documentation only.  DB2 variable THREADTY shouldn't have
VMACDB2        been added to DB2ACCTP dataset (Change 25.097), because
Oct  7, 2007   DB2 V8.1 writes all Package data in IFCID=239 (ID=101.1)
               records, which do not contain a QLAC segment, and IBM's
               THREADTY definition (in comments for QWHDRQNM field in
               their DSNWMSGS member of the DB2 Macro Library) compares
               QWHDRQNM with QLACLOCN.  Since I can never safely remove
               a variable, it will still exist in DB2ACCTP, but it will
               always be blank in that dataset.  No code was changed.

Change 25.212 -SYNCSORT variable SYNCUSET is now documented to be the
VMACSYNC       sum of VSCORET plus the GDSM Adjustment, so its label
Oct  6, 2007   is revised to be:
Nov 17, 2007      SYNCUSET='CORE USED*TOTAL*VSCORET*PLUS GDSM ADJ'
              -SYNCSORT added a new field, which MXG decodes as:
                  SYNHWMPF='HIGHWATERMARK*PAGEFIXED*STORAGE*USED'
               where the old HPALLOC/HPUSED ESTORE BLOCKS was located.
              -All reserved and unknown fields in SYNCSORT SMF record
               are decoded, but none of these variables are kept:
                  /* SYNRSV41-SYNRSV45 SYNUNK01-SYNUNK15 */
                  /* SYNCHFUT SYNCBFUT SYNXXXX1 SYNSPARE */

Change 25.211  PDB.TYPE70 variables ZIPACTTM, PCTZIPBY, PCTCIBYn are now
VMAC7072       corrected for Dedicated zIIP Engines.  For Shared zIIPs,
Oct  5, 2007   the LPAR Dispatch time is valid, but Dedicated engines
               report 100% dispatch.  For TYPE70, the ZIPWAITM is used
               to correct ZIPACTTM, which corrects the other variables.
   Thanks to Jerry Cobb, American Century, USA.


Change 25.210 -WARNING: LENGTH OF CHARACTER VARIABLE ACCOUNT1 HAS BEEN
VMACSFTA       SET under SAS V9 is issued ONLY when a LENGTH statement
VMACDB2        changes the length of a character variable, and, like all
VMACOPC        WARNING: messages in SAS V9, z/OS sets Condition Code 4.
VMACBE97         (Under V8, this specific WARNING did NOT set CC=4,
VMAC7072          but V9 has tightened specs so WARNINGS always CC=4.)
TRNDDB2S       But it should never occur in MXG code: although there are
ANALCISH       multiple LENGTH statements, they should always set the
Oct  4, 2007   same value.
               But it did occur when VMACSFTA was executed standalone,
               because the statement  ACCOUNT1=XPUPNOAC;  was located
               prior to the %INCLUDE of IMACACCT, which is where the
               LENGTH of ACCOUNT1 should always be defined.  Relocating
               that ACCOUNT1=XPUPNOAC; statement eliminated the WARNING.
              -When WARNING for numeric vars (eg. QB1TALX) were printed,
               I discovered there were six members that had hard-coded
               values for LENGTH DEFAULT=4 that should have been changed
               to LENGTH DEFAULT= &MXGLEN; the were overlooked or added
               after Change 19.272, but now all are consistent so that
               numeric variables are stored 5 on z/OS and 6 on ASCII,
               except for the specific cases where length 8 is required.
   Thanks to Ron van der Zande, KLM Info Services, THE NETHERLANDS.
   Thanks to MP Welch, SPRINT, USA.

Change 25.209 -TIMEBILD/TIMETABL is enhanced to support the selective
TIMEBILD       application by SYSTEM of "SYNC59" timeshifting logic:
TIMETABL       - TIMEBILD now reads columns 71-72 of TIMETABL to INPUT
VMXGTIME         the (+ or -) number of minutes to be added for SYNC59.
VMXGINIT         That value is a part of the format built by TIMEBILD.
VMXG70PR       - %TIMEBILD must be executed first to create the table.
Oct  5, 2007   - To enable the addition of SYNC59 offset, you must set
                   %LET MXGTIM59=YES;
                 and then you would run the program whose datetimes
                 are to be shifted by both TIMEBILD zones and SYNC59.
               - The "SYNC59" option is intended to be used ONLY with
                 RMF/CMF data, and in particular, for data from a CEC
                 that has some systems SYNC59 and some SYNC00.  It may
                 not work with other programs, including BUILDPDB, as
                 you may not want all records SYNC59'ed.  And, if you
                 now use the SYNC59 option in TIMEBILD, you must also
                 change your ASUMxxx, TRNDxxxx, VMXGxxxx tailored code
                 to now specify SYNC59=NO to prevent a double shift.
               - To process only the RMF data with a TIMETABL that has
                 been updated to include the SYNC59 flag, you could use
                     %LET MXGTIM59=YES;
                     %TIMEBILD;
                     %UTILBLDP ( BUILDPDB=NO,
                                 USERADD=70 71 72 73 74 75 76 77 78,
                                 ZEROOBS=74.1 74.5,
                                 INCLAFTR=RMFINTRV ASUM70PR,
                                 OUTFILE=INSTREAM);
                     %INCLUDE INSTREAM;
                 to build you RMF-only PDB Library (which will be small,
                 as that example does NOT create observations in the two
                 big TYPE74 and TYPE74CA datasets due to that ZEROOBS=).
               - TIMEBILD will PROC PRINT the input TIMETABL and the
                 output TIMEBILD datasets by enabling MXGDEBUG:
                    //SYSIN DD *
                     %LET MXGDEBUG=1;
                     %LET MXGTIM59=YES;
                     %TIMEBILD;
                     RUN;
                     %LET MXGDEBUG=0;
               - You can conditionally reset MXGTIME59 for some SMF data
                 and not for others; for example, to enable for59 add,
                 and you do NOT have to rerun TIMEBILD.
                    %TIMEBILD(TIMEBILD=YES);
                    %LET MACFILE=%QUOTE(
                       IF ID=30 THEN CALL SYMPUT('MXGTIM59','NO');
                       ELSE CALL SYMPUT('MXGTIM59','YES');
                    );
                    %UTILBLDP(USERADD=7072 30,BUILDPDB=NO);
                    %INCLUDE INSTREAM;

              -Once TIMEBILD worked to selectively SYNC59, the original
               problem, duplicate observations in PDB.ASUMCELP, could be
               diagnosed: while BY variable GMTOFFTM is correctly used
               to creating the "per-SYSTEM" datasets, it can never be
               used in the "per-CEC" datasets, because they are built
               from multiple SYSTEM's data, which can have multiple
               values in GMTOFFTM.  Removing GMTOFFTM from the creation
               of PDB.ASUMCELP has eliminated the duplicates; I should
               remove GMTOFFTM where it makes no sense, but instead, I
               have set GMTOFFTM=. in ASUMCEC and ASUMCELP, so it will
               not create a VARIABLE NOT FOUND ERROR.
   Thanks to Jannson Ingegerd, Volvo, SWEDEN

Change 25.208  CICS local user field CMONDNAME DAT008 CMODHEAD ENTRADA
IMACICU4       creates new variable ENTRADA.
VMAC110
UTILEXCL
Oct  1, 2007
   Thanks to Jane Dickenson, Santander Produban UK, ENGLAND.

Change 25.207  The NTSMF dataset LOGLDISK had the variables FREESPAC
VMACNTSM       (FREE MEGABYTES and PCTFRESP (PCT Free space) but the
Sep 27, 2007   size of the volume did not exist until now, with the
               new DISKSIZE variable.
   Thanks to Michael Ryan, Acxiom, USA.

Change 25.206  MXG 25.09 only. If the SAS-provided default CONFIG member
FORMATS        was not in your //CONFIG DD statement in your MXGSASV9
CONFIGV8       JCL procedure, the PROC FORMAT failed to build MXGTNGON,
CONFIGV9       because lines 12092 thru 12099 in FORMATS were low-case
Oct  3, 2007   duplicates of preceding lines, that should not have  been
               have been there, but they caused no error when the CONFIG
               member was present.  Since they also caused the error if
               they were UPPERCASED, I assume the absence of the SAS
               CONFIG member caused them to be treated as UPCASE.  Also,
               there were Macro Variable error messages because MERROR
               is a required option that is normally set in SAS CONFIG.
               To protect, MERROR is now added to CONFIGV9 and CONFIGV9.
  Thanks to Jim Wertenberger, Antares Solutions, USA.

Change 25.205  Support for z/OS 1.9 54 CP engines - INCOMPATIBLE.
VMAC7072       Z/OS 1.9 allows up to 54 CP engines in a single image,
Sep 27, 2007   but SMF 70 records with CPUID=33 or higer caused ARRAY
Oct  4, 2007   SIZE EXCEEDED with MXG 25.09 or prior.  Now, CPUs with
               CPUID=33 thru CPUID=53 are supported in the PDB.TYPE70
               dataset (the only MXG dataset altered due to 54-CPUs).
               Each CPUID has a set of variables in PDB.TYPE70; existing
               0-32 CPUIDs variable names were created with suffix 0-9
               and A thru X.  Now, Y and Z are used for 33-34, and ZA
               thru ZS suffix are used for CPUIDs 35-53 variables.
               Where the variable name is 8 characters, that "Za" had
               to overlay the penultimate character in the name.
                 To operate on these CPU-specific variable names, they
                 are all defined in VMAC7072 with an ARRAY statement
                 that you can cut and paste into your program to avoid
                 spelling all those names.
              -Unrelated, discovered in testing: APAR OA18244 documented
               that the CPUC segment was increased to 116 bytes, but the
               APAR actually increased its length to 160 bytes, causing
               SMF70GJT and following variables to be missing value, as
               the MXG test was for EQ 116 (without APAR is EQ 102).
               Now, the test is for GE 160, as IBM RMF Development has
               confirmed the correct length, to be documented, is 160,
               adding 44 unused bytes of zeroes.  This APAR applies to
               both z/OS 1.8 and z/OS 1.9.
   Thanks to Tony Curry, BMC, USA.

Change 25.204  CFI Segmentation feature added for RMF III VSAM support,
ASMRMFV        which now eliminates the possibility of skipped CF data,
VMACRMFV       new ASM symbolics for tailoring, and additional items.
Sep 25, 2007   Issues Resolved:
Oct  3, 2007   -PROCCFI is now a subroutine to conserve the mainline
Dec  4, 2007    base register.
               -CFI Table output is now segmented in response to
                reported problems by MXG users.  This removes a long
                standing restriction that the size of the CFI table
                could not exceeding the 32K LRECL output maximum without
                data loss.
               -The RMFV005E error message could have overlaid text when
                multiple ASMRMFV parameter errors were detected.
               -Several problems with index data fields in the CFI table
                output record either not being set or set incorrectly
                that caused PDB build errors in VMACRMFV have been fixed
                during alpha code testing.
               Enhancements:
               -There are a pair of new option keywords BYTES/NOBYTES.
                These specify whether ASMRMFV should or should not
                provide byte counts for 5 categories of data read,
                decompressed, written, filtered, and skipped.  The
                counts are provided in each RMF data set detail report
                and also as totals in the summary report.  This feature
                is intended to aid users to understand the volume of
                data being processed by ASMRMFV, as a coarse comparison
                tool when using different versions of (or sets of
                keyword options with) ASMRMFV, and finally as a possible
                diagnostic aid.  The alias for BYTES is BY and the
                aliases for NOBYTES is NOBY or -BY.   The byte counts
                now appear in message RMFV104I and the former RMFV104I
                message is now RMFV105I.  The distributed default is
                BYTES Packed decimal arithmetic is used for these
                counters to allow up to 15 decimal digits in magnitude
                or up to a value of 999,999,999,999,999 bytes.  The
                assembler symbolic variable &BYTES is provided to allow
                the user to change the default for BYTES/NOBYTES to
                NOBYTES in the ASMRMFV source code.  The distributed
                default is 'Y' meaning that BYTES is the default.  These
                counters take little overhead to maintain and display.
                So there is little benefit in suppressing them except to
                reduce output report volume by 2 lines per data set.
                But that choice is certainly available.
               -A pair of new option keywords CFALL/CFMASTER is added in
                support of the CFI segmentation support.  CFALL
                specifies that CFI tables from all input RMF III LPARs
                are to be output as in prior versions of ASMRMFV.
                CFMASTER specifies that by testing a particular flag
                that only data from the LPAR designated as RMF III
                Master Gatherer is to be output.   The distributed
                default is CFALL.  Effective use of CFMASTER requires
                that the RMF III parameter CFDETAIL be in effect in all
                LPARs in the Sysplex.  Due to the IBM usage of this
                flag, using the CFMASTER option when RMF III NOCFDETAIL
                is in effect (IBM default) will cause all CFI records to
                be filtered out by ASMRMFV.  CFALL has no alias.
                Aliases for CFMASTER are CFMAST and CFM.  With CFDETAIL
                in effect only the single LPAR determined by RMF III to
                be the Master Gatherer collects all Coupling Facility
                detail data. So including incomplete CF data from the
                remaining LPARs may be an unnecessary and redundant
                overhead.  The intent of CFMASTER is to automatically
                exclude this extra data.  The &CFALL assembler symbolic
                is also provided to change the CFALL default in ASMRMFV
                source code if needed.  The &CFALL symbolic can be
                changed in the ASMRMFV source to 'N' prior to assembly
                to permanently enable CFMASTER processing.  The
                distributed default is 'Y'.  Do not make this change
                unless using CFDETAIL on all LPARs being input to
                ASMRMFV.
               -When CFMASTER is in effect the CFI table id in
                the RMFV105I message displays as CFIM instead of the
                usual CFI to indicate this option is in effect.
               -When the BUFFERS option is in effect the RMFV102I
                message will now display a count of both buffers
                available and used for each buffer pool type.  This
                feature was intended mainly to enable MXG users to
                intelligently size the large VSAM LSR buffer pool used
                to optimize random RMF III data set read access by
                ASMRMFV.  The distributed default is 5000.
                   Unfortunately, at this time the VSAM SHOWCB macro
                   seems to always return a 1 for actual buffers used in
                   the LSR pool.  Given the number of random I/Os
                   typically issued this value seems suspect and
                   requires further investigation.
               -Program logic for both buffer pool accounting and
                normal/filtered/skipped record output has been improved.
               -Documentation on the contents of fields for several
                messages has been improved to provide more details on
                their content and meaning.
               -ASMRMFV program prologue documentation is upgraded to
                document all related program changes.
               -Oct 3: corrected INPUT STATEMENT EXCEEDED; 1.8 CFI data
                ends with CFISCCOC in member VMACRMFV.
               -Dec 4: VMACRMFV restructured to output only the first
                CPUG3 segment to ZRBCPU; the ASMRMFV CPU segmentation
                creates a CPUG3 segment for each LPARNAME, which caused
                duplicate observations in WORK.ZRBCPU; using TYPSRMFV
                to sort ZRBCPU did remove those duplicate obs, but this
                change compares CPUHNAME with LPARNAME an outputs only
                the first instance for each interval.
   Thanks to Jerry Urbaniak, Acxiom, USA.
   Thanks to Ben Romano, Hewitt Associates, USA.
   Thanks to Lawrence Jermyn of Fidelity Investments, USA.

Change 25.203  OPTIONS COMPRESS=NO was inserted in ASUMTALO back in 1995
ASUMTALO       by Change 12.273, because the first (temporary) DATA step
Sep 25, 2007   was extremely expensive, but then Change 12.273 was not
               recalled when MXG set COMPRESS=YES as the default value,
               so INCLUDEing ASUMTALO turned off compression for any
               subsequent programs.   Now, VMXGOPTR is invoked to store
               your current value of the COMPRESS option, which is then
               reset prior to the creation of PDB.ASUMTALO, so it will
               be compress based on your choice of the COMPRSS option.
   Thanks to Patrick Holloman, Zions Bank Corp, USA.

Change 25.202  ANALDB2R Statistics Reports VARIABLE QBnTDPIO NOT FOUND
ANALDB2R       and VARIABLE QLSTCRSR NOT FOUND errors because those
Sep 22, 2007   variable names should never have been in the VMXGSUM
Oct  4, 2007   invocation for the statistics reports.
   Thanks to Clayton Buck, UniGroup, USA.
   Thanks to Yaohua Hu, ISO, USA.

Change 25.201 -Unexpected FILESYSTEM data with characers caused errors
EXTRH019       INVALID ARGUMENT FOR FUNCTION, temporarily circumvented,
FORMATS        but the circumvention causes RH017001 to be a mising
IMACTNG        value until further investigation of the strange data.
VMACTNG       -Unrelated, Red Hat object USERS is supported in the new
VMXGINIT       RH019 dataset created by this change.
Sep 24,2007
   Thanks to Xiaobo Zhang, CheckFree, USA.

Change 25.200  Use of %LET mackeep= whatever ; was not supported.
READDB2
Sep 18, 2007
   Thanks to Gary Diehl, Sun MicroSystems/STK, USA.


====== Changes thru 25.199 were in MXG 25.09 dated Sep 17, 2007=========

Change 25.199  If SYNC59=YES was specified in your %VMXGRMFI invocation
VMXGRMFI       to create PDB.RMFINTRV, the STARTIME was reset to 00/15
Sep 15, 2007   but SMF70GIE was not. Now it is, so PDB.RMFINTRV will be
               consistent with PDB.ASUM70PR/ASUM70LP/ASUMCEC/ASUMCELP.
   Thanks to Douglas C. Walter, Citicorp, USA.
   Thanks to Brent Turner, Citicorp, USA.
   Thanks to Tom Koelle, Citicorp, USA.

Change 25.198  TYPE89 variable SMF89HOF (HYPERVISOR DATATIME OFFSET) and
VMAC89         SMF89DTO were wrong because the comment for SMF89PFL was
Sep 15, 2007   not present.
   Thanks to Al Sherkow, I/S Management Strategies, USA.

Change 25.197  %UTILCSV creates a CSV (Comma Separated Values/Variables)
UTILCSV        or TAB or ANY-character-DELIMITED "text file" from any
Sep 14, 2007   SAS dataset, with the ability to order left-to-right and
               to use FORMAT statements to control the output text.

Change 25.196  If you set %LET MACKEEP= %STR( lots of lines of text );
UTILBLDP       before invoking %UTILBLDP, some of your MACKEEP code may
Sep 14, 2007   not get executed, leading to strange errors or unexpected
               results.  We now parse the text inside the macro language
               into line-sized chunks to eliminate the exposure.
               And while we were at it, we've created new arguments that
               you can use for tailoring, as an alternative to using
               %LET's for these macro variables:
                  Macro Variable Name     Macro Argument Name
                    macfile                  macfilex
                    mackeep                  mackeepx
                    ihdrdb2h                 macdb2hx
                    ihdr110                  mac110hx
               One reason to use the Macro Argument in your UTILBLDP
               rather than a %LET statement is that macro argument are
               significantly more robust in that they do not need to
               be wrapped in %STR() and we have NOT been able to find
               any text string the argument couldn't handle, vs the
               many combinations that have broken %QUOTE, etc. in %LETs!
               However, you can use both a %LET macxxxx= and macxxxxx=
               argument; the text in your %LET will preceed any text you
               passed in the corresponding argument.
               And, just to be sure, we now "chunk" any EXPDBOUT text.
   Thanks to Mike Creech, Fidelity National Information Services, USA.

Change 25.195  Support for EMC's SRDF/A user SMF record.
VMACSRDF
VMXGINIT
EXSRDFAA
TYPESRDF
TYPSSRDF
IMACSRDF
Sep 13, 2007

Change 25.194  Variable SJGRQRST='JVM*REQUESTS*WITH RESET' in CICTCPSJ
VMAC110        CICS Statistics dataset is now created; while it does not
Sep 13, 2007   exist in CICS/TS 3.2 (resettable JVMs were withdrawn in
               3.2 because continuous use JVMs save lots of CPU), it is
               useful for detecting these bad guys in 2.3 and 3.1.
   Thanks to Don Deese, Computer Management Sciences, USA.

Change 25.193  MXG 25.08 Change 25.182 was incomplete, which caused the
IMACEXCL       ERROR: LABEL IMACICU3 NOT FOUND when UTILEXCL was run.
UTILEXCL
Sep 13, 2007
   Thanks to Christelle Abily, Groupe Informatique Crédit Mutuel, FRANCE

Change 25.192  INPUT STATEMENT EXCEEDED RECORD LENGTH SMF ID=92 ST=14
VMAC92         because the SMF92DNR/SMF92DRN Rename Length/Name fields
Sep 11, 2007   only exist when the file is RENAMEd, and because the SMF
               manual did not document that feature.  Now, MXG confirms
               that data exists prior to its INPUT.
   Thanks to John Schoenbeck, AT&T, USA.

Change 25.191  Support for RMF Monitor III CFI table segmentation in the
ASMRMFV        ASMRMFV, and their input in VMACRMFV.  New datasets
EXZRBCFC       ZRBCFC is created from the CFICONNUS Connection Table,
IMACRMFV       and the new variables in the CFISTRES Table are created
VMACRMFV       when they exist (i.e., when CFIDETAIL was specified in
VMXGINIT       RMF III parameters).
Sep 10, 2007
Sep 14, 2007
   Thanks to Jerry Urbaniak, Acxiom, USA.

Change 25.190  Variable QDBPPFIX='PGFIX*ATTRIBUTE' is now kept in the
VMACDB2        DB2STAT2 dataset; it was added in DB2 V8.1, in the same
Sep  8, 2007   location as QDBPVTPT, which is now always blank.
   Thanks to Lori Masulis, Fidelity Systems, USA.

Change 25.189  Revision to PDBOUT= options, when PDB=SMF is specified,
READDB2        and possible INCOMPATIBILITY when PDBOUT was null.  Now,
ANALDB2R       these options for PDBOUT= control output destination:
Sep 11, 2007     PDBOUT=,    All datasets written to //WORK, always.
Sep 17, 2007     PDBOUT=PDB  All datasets written to //PDB.
Sep 24, 2007     PDBOUT=YES  All datasets written to their default
                             destination, with user tailoring honored.
                 PDBOUT=XXX  ALL datasets written to //XXX.
               This change could cause perfectly running jobs to fail,
               if PDBOUT=, was specified and you had tailoring that
               redirected the output dataset destinations.  Sorry for
               that, but using PDBOUT=YES instead of PDBOUT=PDB is now
               the DOCUMENTED and SUPPORTED option to create output.

               This revision was precipitated when ANALDB2R had been
               invoked with PDBOUT=, and it failed with DDNAME PDB NOT
               FOUND and _VDB2A UNDEFINED errors when no //PDB DD
               existed.
                Note: Only READDB2's code was changed; ANALDB2R calls
                      READDB2 with the same possible PDBOUT= argument,
                      so it is listed here for documentation
                         (that you'll only find after the error?).
               Text revised Sep 17 for PDBOUT=PDB description.
              -MXG 25.08 only, bit test for SADUCL=6 was one bit short;
               only the list of Audit Trace Classes might be incorrect.
               This was accidentally corrected in this change. 24Sep07.
   Thanks to R. Berry, Internal Revenue Service, USA.
   Thanks to Clayton Buck, UniGroup, Inc., USA.

Change 25.188  If RMFINTRV=NO and BUILDPDB=YES and ASUM70PR included,
UTILBLDP       the invocation failed because the TYPE70xx datasets were
Sep  7, 2007   not sorted into the PDB due to the RMFINTRV=NO.  Now, as
               expected, BUILDPDB=YES sorts them into the PDB library.
   Thanks to Trevor Holland, ANZ, AUSTRALIA

====== Changes thru 25.186 were in MXG 25.08 dated Sep  5, 2007=========

Change 25.187  IBM SMF Manual incorrectly documented SMF92RVN value of 3
VMAC92         but that was corrected in z/OS 1.9 manual to correct 2,
Sep  5, 2007   so two MXG tests for SMF92RVN GE 3 were change to GE 2.
               This corrected the bit variables SMF92MFG and SMF92MF2.
               Variable SMF9PPN is a path name so it was increased to
               $VARYING1024. with input length set by SMF92PPL.
   Thanks to Hyrum E. Smith, Charles Schwab & Co., USA

Change 25.186  Variable DB2PARTY not found when PMACC02 requested and
ANALDB2R       PDB.ASUMDB2A existed was corrected with a compiler faker.
Sep  5, 2007

Change 25.185  New Capacity Group datasets created by Change 25.163 did
IMACSHFT       not have a DURATM variable for the ASUM70GC and ASUM70GL
VMXGDUR        datasets; the interval is forced to HOURLY, but interval
VMXG70PR       datasets should always have a DURATM variable.
Sep  5, 2007   I tested this change with %VMXG70PR(INTERVAL=SHIFT,...)
               and found it caused VARIABLE MXGDURTM UNINITIALIZED notes
               because MXGDURTM was not defined in IMACSHFT example, and
               MXGDURTM was not always protected in VMXGDUR.
   Thanks to Chris Weston, SAS Institute Cary, USA.


Change 25.184  RMF Capacity Group reports added to ANALRMFR. Support for
ANALRMFR       new data was added by MXG Change 25.163.
Sep  5, 2007

Change 25.183  These WORK library datasets are now deleted; several PROC
TYPETMS5       DELETEs commented out for testing are now uncommented.
Sep  5, 2007     CHANGED  DSNBREC DSNBRECS DSNBRECT DSNBRECU
                 DSNBRECV DSNBRECW MGTMSVL TMSREC TMSRECS
   Thanks to John Shuck, Sun Trust, USA.
   Thanks to Stan Helms, Sun Trust, USA.
   Thanks to Mike Duwve, Sun Trust, USA.

====== Changes thru 25.182 were in MXG 25.08 dated Sep  5, 2007=========

Change 25.182  Support for CICS User Field ARZAL (CMODNAME='ARZAL' and
IMACICU3       CMODHEAD='APPLINFO' is added.
UTILEXCL
Sep  2, 2007
   Thanks to Peter Gschirr, ARZ, AUSTRIA.


Change 25.181  Support for CA Unicenter NSM has been in MXG under "TNG"
EXTAI026       for years, because TNG was NSM's original name, and the
EXTNT132       "performance cube" format was not changed at name change.
EXTRH001       Support for CA NSM PLATFORM='RHEL401', RedHat 4.01 Linux
EXTRH002       performance cube is added by this change, which initially
EXTRH003       populates the Solaris "SOnnn" datasets, as they exist and
EXTRH004       have the most objects/metrics in common with Linux, but
EXTRH005       there are Solaris-only variables that have missing values
EXTRH006       and there are RHEL objects/metrics not yet supported.
EXTRH007
EXTRH008       This change also externalizes the list of PLATFORM names
EXTRH009       that map to AIX or SOLARIS with new _AIPLAT and _SOPLAT
EXTRH010       macros (like the existing _NTPLAT macro).  And, that test
EXTRH011       is now IF PLATFORM IN : ( _NTPLAT ) THEN DO; with the
EXTRH012       "colon modifier" inserted so the test matches only the
EXTRH013       starting characters of the platform names.  I did this
EXTRH014       when I thought RHEL was a user-assigned name, which it
EXTRH015       isn't, but these macros are no-cost tokens that will make
EXTRH016       my testing easier for new PLATFORM names.
EXTRH017
EXTRH018       New variables were added to these existing datasets:
IMACTNG            Dataset   Description
VMACTNG             AI019    AIX - CA MEMORY GROUP
VMXGINIT            NT035    NT  - PROCESS
Sep  2, 2007   New datasets are created from these new objects:
                   Dataset   Object Name
                   AI026     AIX - PROCESS
                   NT132     NT  - CA CUBE STORE GROUP
              -New datasets are created from Red Hat Platform Objects:
                   Dataset   Object Name
                   RH001     RH  - CA CPU GROUP
                   RH002     RH  - CA INTERRUPT
                   RH003     RH  - CA CUBE STORE GROUP
                   RH004     RH  - CA PER CPU GROUP
                   RH005     RH  - CONTEXT SWITCHING
                   RH006     RH  - INTERRUPTS
                   RH007     RH  - PAGING
                   RH008     RH  - PROCESS CREATION
                   RH009     RH  - SWAPPING
                   RH010     RH  - CA DISK GROUP
                   RH011     RH  - CA FILE SYSTEM GROUP
                   RH012     RH  - CA INTERFACE GROUP
                   RH013     RH  - CA MEMORY GROUP
                   RH014     RH  - CA PROCESS GROUP
                   RH015     RH  - CA SWAP GROUP
                   RH016     RH  - CPU
                   RH017     RH  - FILESYSTEM
                   RH018     RH  - NETWORK
   Thanks to Xiaobo Zhang, CheckFree, USA.

Change 25.180  The Omegamon OMCI subtype 203 is now written in SMF 112s,
VMACOMCI       but can still be created in the old User SMF record; MXG
Aug 29, 2007   Change 25.099 moved the 203 code into VMAC112, but also
               disabled subtype 203 in VMACOMCI.  This corrects.
   Thanks to Tom Kelman, Commerce Bank of Kansas, USA.

Change 25.179  Protection for %UPCASE() and %LOWCASE() for literals.
ANALDBTR       Almost all of the SAS code in MXG is in UPPER CASE, but
BLDSMPDB       some members are mixed case, with "case sensitive" noted
GRAFHSM        in their comments, but that did not prevent accidental
GRAFLPAR       low-case-ing some lines in BLDSMPDB that contained tests
GRAFTALO          if %upcase(something) eq yes %then %do;
GRAFTMNT       which failed because the yes value was now lower case.
GRAFTRND       Macro variable tests are in many MXG members, especially
GRAFWORK       those that define %MACROS where user-typed input text is
GRAFWORX       shifted with %UPCASE() for consistent testing, but I had
GRAFWRKX       never thought to protect the text being compared!
PRINTNL
READDB2        Now, all members were examined that used %UPCASE/%LOWCASE
UTILBLDP       and those that tested for literal text values now use
UTILCONT
UTILDUMP          if %upcase(something) eq %upcase(yes) %then %do;
VMACMWNT
VMXGALOC       The DATA step UPCASE() function is also used in even more
VMXGDEL        members, but as those values are not 'human-typed', I did
VMXGGETM       not see the need for also wrapping those text values.
VMXGSUM
VMXGSUME       New MXG Recommendation: Use %LET MACxxxx= %STR( text ) ;
VMXGUOW        with blanks as shown, when storing any text string that
Aug 28, 2007   can contain semi-colons, into those MXG tailoring macro
               variables, since those macro variables will be resolved
               at "compile time", which is where %STR() is to be used.
               Previously I suggested using %QUOTE() or %BQUOTE() to
               pass text with semi-colons, but they are not resolved
               until "execute time", and, while QUOTE/BQUOTE frequently
               did work, the use of %STR, especially for MACKEEP/MACFILE
               macros is the more appropriate among the many functions.
   Thanks to Tom kelman, Commerce Bank of Kansas, USA.

Change 25.178  Support for V5R4MO QAPMDISK with LRECL=456 adds these 20
VMACQACS       variables:
Aug 28, 2007      DSBKCT1='BUCKET*1*OPERATIONS'
                  DSBKCT2='BUCKET*2*OPERATIONS'
                  DSBKCT3='BUCKET*3*OPERATIONS'
                  DSBKCT4='BUCKET*4*OPERATIONS'
                  DSBKCT5='BUCKET*5*OPERATIONS'
                  DSBKCT6='BUCKET*6*OPERATIONS'
                  DSBKRT1='BUCKET*1*RESPONSE*TIME'
                  DSBKRT2='BUCKET*2*RESPONSE*TIME'
                  DSBKRT3='BUCKET*1*RESPONSE*TIME'
                  DSBKRT4='BUCKET*4*RESPONSE*TIME'
                  DSBKRT5='BUCKET*5*RESPONSE*TIME'
                  DSBKRT6='BUCKET*6*RESPONSE*TIME'
                  DSBKST1='BUCKET*1*SERVICE*TIME'
                  DSBKST2='BUCKET*2*SERVICE*TIME'
                  DSBKST3='BUCKET*3*SERVICE*TIME'
                  DSBKST4='BUCKET*4*SERVICE*TIME'
                  DSBKST5='BUCKET*5*SERVICE*TIME'
                  DSBKST6='BUCKET*6*SERVICE*TIME'
                  DSSRVT ='DISK*SERVICE*TIME'
                  DSWT   ='DISK*WAIT*TIME'
   Thanks to Clayton Buck, UniGroup, Inc., USA.

Change 25.177  ERROR: ARRAY SUBSCRIPT OUT OF RANGE in BUILDPDB/RMFINTRV
VMXGINIT       with a month's SMF data from scores of systems.  The
VMXGRMFI       culprit is the MXG algorithm to calculate MSU4HRAV, the
Aug 24, 2007   rolling hourly average MSU over the past four hours,
               created in RMFINTRV before IBM added the SMF70LAC value
               (and SMF70LAC is the variable to use, not my MSU4HRAV,
               as SMF70LAC is IBM's calculation that is used in WLM
               capping decisions, and it is slightly different than the
               MSU4HRAV, where I used total CPU and IBM didn't, and
               where I calculate true average even across an IPL and
               they don't!).
               When MSU4HRAV was created, the size was set for a daily
               or weekly RMFINTRV creation, so an array size of 9999
               elements would hold hourly data for:
                 over 100 system's daily data at 15 minute intervals
                 over  14 system's weekly data at 15 minute intervals
               but
                 only   3 system's monthly data at 15 minute intervals!
                                (and this site had 5 minute intervals!).

               This is one of the MANY reasons why I avoid ARRAYs; while
               increasing the ARRAY size will hold more system's data,
               that requires more virtual storage, and that will grow as
               the number of systems increase, exchanging OUT-OF-MEMORY
               errors for OUT OF RANGE.
                 The immediate user circumvention was to process the SMF
                 data one week at a time, which worked just fine.
               Though hopefully unneeded, I have externalized the size
               of the three temporary arrays with new macro variable
               with default value of  %LET ARRAYRMF=9999;  unchanged.

               I have also inserted a trap to detect the array size was
               exceeded and inform you via an ERROR message on the log.

Change 25.176  Support for APAR OA18244, Blocked Workload metrics, adds
VMAC7072      -These variables to the TYPE70 dataset:
Aug 24, 2007     SMF70PMI='AVG*BLKED*DISPATCH*UNITS*MAY GET'
                 SMF70PML='OPT*PARAMETER*BLWLINTHD'
                 SMF70PMP='MAX*DISPATCH*UNITS*BEING*BLOCKED'
                 SMF70PMT='OPT*PARAMETER*BLWLTRPCT'
                 SMF70PMU='BLKED*DISPATCH*UNITS*PROMOTED*PERSEC'
                 SMF70PMW='AVG*DISPATCH*UNITS*BEING*BLOCKED'
                 STFBIT05='OPT PARM*BLWLTRPCT*CHANGED?
                 STFBIT06='OPT PARM*BLWLINTHD*CHANGED?
              -This variable, previously added to the TYPE72GO dataset
               by Change 25.140 is populated by this APAR:
                 R723TPDP='CPU TIME*AT PROMOTED*DISPATCH*PRTY'
               and this new flag variable is created by this APAR:
                 ZIPHONPR='ZIP*HONOR*PRIORITY?'

Change 25.175  Internal logic was revised so when INTERVAL= is used, the
ANALRMFR       variables LPARCPUX and SMF70BDA are added to the ID= parm
Aug 24, 2007   for Cluster Reports.
              -Also, MVSCHRLV and NCYCLE are added to report headings.
   Thanks to Bruce Widlund, Merrill Consultants, USA.

Change 25.174  Corrections discovered by SAS/ITRM validation during the
ASUMTAPE       build of their dictionary.
VMAC7072      -Variable JBACPU dataset QAPMJOBL now FORMATed TIME13.3.
VMACQACS      -Variable MAXVLSEQ is no longer created/kept in TYPETMS5.
VMACTMS5      -Variables for CP/ICF/IFL/IFA/ZIP counts/time are labeled
VMXG70PR       in VMXG70PR & VMAC7072, PROC DELETEs uncommented to clean
VMAC110        up WORK file. Variables IFAWSTTM,ZIPWSTTM formatted.
VMACDB2       -ASUMTAPE variables BEGTMNT, ENDTMNT, TOTMNTTM labeled.
VMACSTC       -CICSDS variables DSGEJST DSGSRBT labeled and formatted;
Sep  5, 2007   they are the total TCB for all CICS TCBs and total SRB
               for all SRBs in the interval.
              -DB2ACCT variable QWHUCPU formatted.
              -TYPESTC variable STC15CTP label corrected.
               Sep 6 changes, not in 25.08:
              -TYPE7072 - variables NRPHYCPX, NRPRCX no longer kept.
                        - variable GMTOFF70 GMTOFF72 formatted.
              -TYPE85   - variables R85ST74F, R85ST78F labeled.
   Thanks to Chris Weston, SAS Institute Cary, USA.

Change 25.173 -Support for NMON "CPU_VP_USE" and "CPU_EC_USE" objects
VMACNMON       (Virtual Processor and Entitled Capacity) adds these new
Sep  1, 2007   variables to NMONINTV dataset:
                 NRECUS='CPU_EC_USE*COUNT'
                 NRVPUS='CPU_VP_USE*COUNT'
                 PCPUUSER='CPU_ALL*USER*PERCENT'
                 PECTOTAL='CPU_EC_USE*TOTAL*PERCENT'
                 PECUBUSY='CPU_EC_USE*BUSY*PERCENT'
                 PECUIDLE='CPU_EC_USE*IDLE*PERCENT'
                 PECUSYS='CPU_EC_USE*SYSTEM*PERCENT'
                 PECUUSER='CPU_EC_USE*USER*PERCENT'
                 PECUWAIT='CPU_EC_USE*WAIT*PERCENT'
                 PVPUBUSY='CPU_VP_USE*BUSY*PERCENT'
                 PVPUIDLE='CPU_VP_USE*IDLE*PERCENT'
                 PVPUSYS='CPU_VP_USE*SYSTEM*PERCENT'
                 PVPUUSER='CPU_VP_USE*USER*PERCENT'
                 PVPUWAIT='CPU_VP_USE*WAIT*PERCENT'
              -Support for NMON NETSIZE object adds thes new variables
               to NMONNETW dataset:
                 NETSRDRT='NETSIZE*READS/S'
                 NETSWRRT='NETSIZE*WRITE/S'
              -The count of JFSFILE fields drops to less than the count
               in the header record, occasionally, causing MXG to have
               to delete of that record with an MXG ERROR MESSAGE on the
               log.  Under investigation with NMON support.
              -The "UNKNOWN RECTYPE=" message for Nigel's Monitor NMON
               is clarified to indicate it's not an error, but a new
               monitor record that is not yet supported by MXG, but
               will be if you send the input data file to MXG support.
   Thanks to Michael W. Woelke, Boeing, USA.
   Thanks to John Keenan, Boeing, USA.

Change 25.172  Example to process DB2 datasets to separate DDNAMES:
ADOCDB2
Aug 20, 2007
               libname db2acctp 'c:\mxg\db2acctp\';
               libname db2acctb 'c:\mxg\db2acctg\';
               libname db2acctg 'c:\mxg\db2acctb\';
               libname db2acct  'c:\mxg\db2acct\';
               libname db2gbpat 'c:\mxg\db2gbpat\';
               libname db2gbpst 'c:\mxg\db2gbpst\';
  /* unsorted, written directly to individual DDNAME for parallelism */
              %LET WDB2ACP=DB2ACCTP;
              %LET WDB2ACB=DB2ACCTB;
              %LET WDB2ACG=DB2ACCTG;
              %LET WDB2PAT=DB2GBPAT;
              %LET WDB2PST=DB2GBPST;
              %LET PDB2ACC=DB2ACCT;
  /* deflected to work, as they are combined into db2stats */
              %LET PDB2STO=WORK;
              %LET PDB2ST1=WORK;
  /* sent to pdb, stats, should be small in size */
              %LET PDB2ST2=PDB;
              %LET PDB2ST4=PDB;
              %LET PDB2STS=PDB;
              %LET PDB2STB=PDB;
              %LET PDB2STR=PDB;
              %LET MACKEEP=
               %BQUOTE(
                         MACRO _SDB2ACp %
                         MACRO _SDB2ACb %
                         MACRO _SDB2ACg %
                         MACRO _SDB2pat %
                         MACRO _SDB2pst %
                         MACRO _SDB2ACc %
                      );
              %INCLUDE SOURCLIB(TYPEDB2);
                 or could be
              %INCLUDE SOURCLIB(BUILDPDB);
                 or could be
              %ANALDB2R(PDB=SMF);


Change 25.171  Documentation.  The DOCVER and DOCVERnn text printed only
UTILVREF       3 positions for LENGTHs, causing a 32000-byte variable to
Aug 20, 2007   be printed as 3E4 in exponential format. While I can't
               expand LENGTH to print 5 digits without truncating LABEL,
               I now detect the TYPE='NUM' and print four positions for
               those variables to be more accurate where I can.  You can
               always use PROC CONTENTS DATA=whatever; to see the actual
               stored LENGTH of each variable.
               See MXG Technical Note 2 in Newsletter FIFTY for a list
               of "Very Long Stored Length" variables created by MXG.

Change 25.170  If there no Mount-Related SYSLOG messages were captured
ASUMTAPE       by ASMTAPEE/MXGTMNT, i.e. TYPESYMT has zero observations
Aug 20, 2007   then there were no observations created in PDB.ASUMTAPE,
               even though the TYPETMNT and TYPE21 records matched.
               The missing SYSLOG records was due to backlevel ASMTAPEE
               at ML-38 that missed messages now captured in ML-39, but
               this revision tests for zero obs in TYPESYMT dataset, and
               forces the OUTPUT of PDB.ASUMTAPE in that case.  Note
               that this only works when all systems do not capture the
               SYSLOG data; if some systems do and others don't, this
               revision will NOT work, and only systems with obs in the
               TYPESYMT dataset will have output in PDB.ASUMTAPE.
   Thanks to John Doherty, Capita, SCOTLAND.

Change 25.169  New DB2 Parallel event "analysis" selects all DB2ACCT obs
VMACDB2        for each "ACE group" that had any parallel activity,
Aug 18, 2007   (i.e., had one or more DB2ACCT obs with DB2PARTY=O/P/R),
               keeps a large but manageable set of important variables,
               and then PRINTs the detail DB2ACCT observations for each
               "ACE Group", in time sequence, where each unique set of
               values of these BY variables defines an "ACE Group":

                 SYSTEM QWHSSSID QWHSLOCN QLACLOCN QWHCCV QWHCCN ACE

               and where ACE is either QWHSACE (S/O) or QWACPACE (P/R).

               BUILDPDB does not sort PDB.DB2ACCT automatically, due to
               it's size, but that turns out fortunate, as the default
               sort order defined in MACRO _BDB2ACC in VMACDB2:
                 SYSTEM   QWHSSSID QWHCPLAN QWHCAID  QWHSLOCN QWHCCV
                 QLACLOCN QWHCCN   QWACBSC  QWHSSTCK,
               is just fine for duplicate removal, so it's not "wrong",
               but it is NOT the correct order to group all DB2ACCT obs
               into their "ACE Group".  Instead, the new report uses
               uses this sort order (MACRO _XDB2ACC):
                 SYSTEM   QWHSSSID QWHSLOCN QLACLOCN QWHCCV QWHCCN ACE
                 QWACBSC  QWHSSTCK QWHCPLAN QWHCAID
               that does correctly sort DB2ACCT into each "ACE Group".

               This iteration defines old-style MACROs _Q, _X, _Y, _X
               which are used by the MACRO _RDB2ACC that you execute:
                   // EXEC MXGSASV9
                   //PDB DD DSN=YOUR.DB2ACCT.PDB,DISP=SHR
                   //SYSIN DD *
                    %INCLUDE SOURCLIB(VMACDB2);
                    _RDB2ACC
               This report was used for diagnostic understanding of the
               events in DB2 Parallel, and thus is not likely to be used
               by many MXG users, but it's there if needed.  Also, the
               structure of selecting all of a group that has one of
               something (DB2 Parallel Transaction, in this case) could
               easily be extended to select by some other criteria.

Change 25.168  Using %ANALDB2R(PDB=PDB,PMSTA02=YES); caused VMXGSUM to
VMXGSUM        fail with ERROR: VARIABLE STRTTIME NOT FOUND.  In this
Aug 17, 2007   one place in ANALDB2R, VMXGSUM was invoked with variable
               STRTTIME used in the INCODE's internal DATA/PROC steps,
               and it was in the KEEPIN= list, but STRTTIME was NOT in
               any of the VMXGSUM output parameters.  Now, variables in
               the KEEPIN= list are added to the generated KEEP list to
               protect for this unique VMXGSUM invocation.
               The problem was introduced in MXG 25.04 VMXGSUM changes.
   Thanks to Richard Haynes, Blue Cross Blue Shield of Kansas, USA.

Change 25.167  Variable FCUSERID='LOGIN*USER ID*OR NAME' is INPUT and
VMAC119        kept in the TYP11903 dataset.
Aug 16, 2007
   Thanks to Jim Kovarik, Aegon, USA.

Change 25.166  Trending example for DB2ACCTP dataset.
TRNDDB2P
Aug 16, 2007
   Thanks to Chuck Hopf, Bank of America, USA.

Change 25.165  The IMF FB Program Record is updated with new variables:
VMACCIMS        PGMSAD56='SADFLAG5*AND*SADFLAG6'
Aug 14, 2007    FLGSPCHR='PROGRAM*SUBTYPE'
                  The $MGIMFCS format decodes FLGSPCHR, which is OUTPUT
                  in both CIMSTRAN and CIMSPROG, but only the first
                  three values of J, K, or O exist in CICSPROG:
                     VALUE $MGIMFCS
                     'O'='O:ODBA'
                     'J'='J:JMP'
                     'K'='K:JBP'
                     'Q'='Q:PSEUDO WFI'
                     'W'='W:WFI(WAIT FOR INPUT)'
                     ;
                SAPEXIT ='SAP*PGM*USING*SAPEXIT?'
                OTMATRAN='OTMA*TRAN?'
               The offset to SRVCLASS was also corrected.
   Thanks to Doug Johnson, Blue Cross Blue Shield of Kansas, USA.

Change 25.164  The _VNDMRJ macro token was missing in the _WNDMRJ part
VMACNDM        of the _VARNDM macro definition, so the NDMRJ datasets
Aug 14, 2007   kept ALL MXG VARIABLES IN THE DATA STEP, 7062 variables
               to be exact, when NDM code was added to BUILDPDB in ITRM
               tests!
   Thanks to Chris Weston, SAS Institute, USA.

Change 25.163  Support for Capacity Group analysis. z/OS 1.8 added the
VMAC7072         SMF70GNM='CAPACITY GROUP NAME'
VMXG70PR         SMF70GMU='MAXIMUM LICENSE UNITS OF GROUP;
VMXGINIT       variables, but Change 24.092 output them in TYPE70, when
Aug 20, 2007   they should have been output in PDB.TYPE70PR dataset, as
               they are LPAR-level capacity limits.
              -ASUM70PR now creates two new Group Capacity datasets
                 PDB.ASUM70GC - CEC Totals for each Capacity Group
                 PDB.ASUM70GL - LPAR Detail within each Capacity Group
               Dataset ASUM70GL matches the RMF Group Capacity Report,
               while dataset SUM70GC provides the total MSU usage for
               each Group, and the percent of Group capacity limit used.
               Both new datasets are created with fixed INTERVAL=HOUR,
               to match SMF70GMU capacity units of MSU per hour.
   Thanks to Jim Dammeyer, State Farm Insurance, USA.

Change 25.162  The final example in comments was missing a close-paren.
UTILBLDP
Aug 12, 2007
   Thanks to Trevor Holland, ANZ, AUSTRALIA

====== Changes thru 25.161 were in MXG 25.07 dated Aug 10, 2007=========

Change 25.161  Support for new z/OS 1.9 RMF III and APAR OA17070 fields.
VMACRMFV       New variables INPUT from the CFIG3 Header Section are
Aug  9, 2007   added to the ZRBCFI dataset:
                  CFIRANGE='REPORTING*RANGE*SECONDS'
                  CFIPONAM='POLICY*NAME'
                  CFIPOACT='POLICY*ACTIVATION*TIME'
                  CFIPREQS='NOT ALL*STRUCTURES*CONTAINED'
                  CFIPREQC='NOT ALL*CONNECTIONS*CONTAINED'
               New variables INPUT from the CFIG3 Entry Section are
               added to the ZRBCFI dataset:
                  CFIENSCN='CONNECTED*MVS*SYSTEM*COUNT'
                  CFIENSTI='STRUCTURE*COUNT*IN*POLICY'
                  CFIENSTO='STRUCTURE*COUNT*OUT*POLICY'
                  CFIENTCS='TOTAL*CONTROL*SPACE'
                  CFIENFCS='FREE*CONTROL*SPACE'
                  CFIENTDS='TOTAL*DUMP*SPACE'
                  CFIENFDS='FREE*DUMP*SPACE'
                  CFIENSCT='SUM WAIT*FREE FOR*SYNCH IMMED'
                  CFIENFOC='COUNT*OF TIMES*FOR UNSUCCESSFUL'
                  CFIENFOT='SUM OF*SERVICE*FOR*UNSUCCESSFUL'
                  CFIENPDE='DEDICATED*PROCESSORS'
                  CFIENPSH='SHARED*PROCESSORS'
                  CFIENPWG='SHARED*PROCESSOR*AVERAGE*WEIGHT'
               New variables INPUT from the CFIG3 Table Entry Section
               are added to the ZRBCFI dataset:
                  CFISTCOM='MAX*CONNECTIONS*ALLOWED'
                  CFISTCOT='TOTAL*CONNECTIONS*TO*STRUCTURE*
                  CFISTCOP='CONNECTIONS*WITH*PROBLEMS'
                  CFISTQTM='SERVICETM*SUM FOR*QUEUED*REQUESTS.
                  CFISTFLE='STATUS*FLAGS*EXTENDED'
                  CFISTRBP='REBUILDPERCENT*IN ACTIVE*CFRM'
                  CFISTPL ='CF*PREFERENCE*LIST'
                  CFISTXL ='STRUCTURE*EXCLUSION*LIST'
                  CFISTETM='STRUCURE*EXECUTION*TIME*SUM'

Change 25.160  Sample reports for Velocity Software data.
ANALXAMR
Aug  9, 2007
   Thanks to Robert Obee, IMS Health(R), USA.

Change 25.159  Support for APAR OA12865 for RMF 79 Subtype 9 Device
VMAC79         Activity added variable R799PSM='SUCCESSFUL*PAV*SAMPLES'
Aug  9, 2007   and relabeled variable R799PCT='UNSUCCESSFUL*PAV*SAMPLES'
               and now INPUTs R799NDA as 4 bytes instead of 2, so that
               variables R799NDA,R799DPB,R799CMR,R799PCT,R799PSM now are
               correct, and variable R799CNX6='HYPERPAV*BASE*DEVICE?' is
               created.
              -RMF II 79 subtype 9 records written at 1 minute intervals
               have the accumulated values reset when RMF Monitor I pops
               its interval, which caused MXG to set the DIF()'d
               values missing; now, only the first observation for each
               device will have missing values for the deaccumlations,
               since I don't know the prior value from yesterday!
              -R799NUX required special handling as it is accumulated
               if the device is HyperPav, and is not otherwise.
   Thanks to Mike Romeo, Schwab, USA.

Change 25.158  The %QUOTE function had to be replaced with the %BQUOTE
UTILBLDP       function, because %QUOTE does not "mask" percent signs,
Aug  8, 2007   and the user-provided text can contain percent signs
               that needed to be masked.  When a user sets the  text
               %LET MACKEEP= MACRO _S110 %;  and executes %UTILBLDP(...)
               this %LET MACBLDP= %QUOTE(&MACKEEP);  created the MACBLDP
               with  MACRO _S110 ) instead of MACRO _S110 % because the
               %QUOTE function saw the end of the text as  %) and that
               pair of adjacent characters are a "special character"
               that is, by design, changed to a single paren by %QUOTE.
               The %BQUOTE masks these characters that aren't by %QUOTE:
                 unmarked percent signs
                 unmatched, unmarked single and double quotation marks
                 unmatched, unmarked opening and closing parentheses
               This issue comes up most often in the %LET MACKEEP= text,
               as its usage can have a wide range of character text.
               I have previously suggested that when setting MACKEEP to
               text that can contain a semicolon, you must use %QUOTE(),
               but for old-style macro redefinitions like _S110, there
               was no need for the complexity of the %QUOTE() syntax.
               And it appears if there happened to be blanks in the
               right places, even percent signs could be passed without
               either function.  Now, if you have semicolons or percents
               depending on the context and state of the macro language,
               %BQUOTEs may be required in your %LET statements.
               Specifically this is required:
                 %LET MACKEEP=%BQUOTE( MACRO _S110 %) ;
   Thanks to Carmen Vitullo, Acxiom IT Outsourcing, USA.

Change 25.157  Change 24.064 added &MXGNOBY operand to circumvent errors
MONTHDSK       NOT SORTED, but the invocation of &MXGNOBY was not added
MONTHWEK       the WEEKBLDT and MONTHDSK members, where it didn't work!
WEEKBLDT
Aug  6, 2007
   Thanks to Randy Parker, Trustmark National Bank, USA.

Change 25.156  The ARRAY LWAI(33) $ LCPUWAI0-9 + were one-byte lengths,
VMAC7072       but ARRAY LDED(33) $ LCPUDED0-9 + were eight bytes long,
Aug  6, 2007   and I cannot see why they are different, but as they are
               one-byte variables, their ARRAY statement now explicitly
               sets their length with  ARRAY xxxx (33) $1;

Change 25.155  Variables created with the SCAN() function are set by SAS
VMACCLAR       to character length of $200, even though the input length
VMACNMON       is only $128.  While I believe SAS should set the output
Aug  6, 2007   length to $128, as WPS does, adding LENGTH statements did
               circumvent this SAS problem.  Other character handling
               functions, like SUBSTR() do set the new variable's length
               from the input variable's length.

Change 25.154  PROC MEANS does not pass variable attributes (LENGTH etc)
VMXG70PR       to the output dataset unless / INHERIT is added to the
Aug  6, 2007   OUTPUT statement; MXG normally uses %VMXGSUM, which does
               specify INHERIT, but the two new PROC MEANS added for the
               new IFA/ZIP variables did not specify INHERIT, causing
               wrong or blank LENGTH/LABEL/FORMATs for those variables.

Change 25.153  False ERROR: INVALID TYPE42 SUBTYPE 5 RECORD DELETED
VMAC42         were printed because the tests revised by Change 25.095
Aug  3, 2007   should be OFF+LEN GT LENGTH+1 vice GT LENGTH.  The
               record was valid, but, as the message stated, it was
               deleted.
   Thanks to Joachim Mayr, Amadeus, GERMANY.

Change 25.152  The analysis of input queue time for Duplicate JOB HOLD
ANALINIT       used LASTEND=LAG(JINTTIME) for the start of the input
Aug  3, 2007   queue delay of the next Duplicate JOB NAME, but JINTTIME
               is the Start Time of the last job, and, as documented in
               Change 12.274, that LAG() function statement
                 (which returns the value of that variable from the
                  prior observation)
               should have been LASTEND=LAG(JTRMTIME), so that this
               job's delay is calculated from the End of Execution of
               the prior job.
   Thanks to Larry Riggen, OneAmerica, USA.

Change 25.151  The example JCLVMXA invokes PROC MEANS for all datasets,
VMACVMXA       that would not normally be executed except for the first
Aug  3, 2007   test, but it failed be cause _MPRCAPC and _MPRCAPM were
               not defined (those macro names in lines 20396,20397 were
               misspelled).  The MONWRITE datasets were correctly built;
               Also, MXG 25.06 had a DEBUG=1; statement left from tests
               that printed a lot of messages on the SAS log, but with
               no impact on the SAS datasets that MXG created.
   Thanks to Yaohua Hu, ISO, USA.

Change 25.150  The ASUM70PR summarization could (still!) create PCTCPUBY
VMXG70PR       over 100%, if adjacent intervals being summarized had the
Aug  3, 2007   exact same value of STARTIME SMF70GIE and DURATM after
               the INTERVAL= operand had reset STARTIME and SMF70GIE.
               These DURATM was also incorrect (too small) in these bad
               observations, but ALL OTHER VARIABLES ARE CORRECT.
               It was the heuristic use of DURATM that seemed to work,
               but is now recognized as the culprit, as it failed when
               two adjacent DURATMs were identical.  Now, by instead
               using the OLDSTART, the original unmodified interval
               start, and inserting it in internal sorts in place of
               DURATM, and testing IF FIRST.OLDSTART vice FIRST.DURATM
               there's a clean algorithm for new intervals and this old
               recurring problem should be fixed for good.
              -Summarization with INTERVAL=SHIFT did not work, because
               MXG can not know the duration of each of your shifts, and
               message VARIABLE MXGDURTM UNINITIALIZED was printed.
               However, if you will add a statement in your IMACSHFT
               tailoring member for each shift, that sets then variable
               MXGDURTM=nnnnn;, where nnnnn is the duration in seconds
               (e.g., MXGDURTM=28800; for an 8-hour shift), then you can
               INTERVAL=SHIFT to summarize PDB.ASUM70PR & PDB.ASUM70LP
               to your shift definitions.
              -Summarization with CECINTRV=SHIFT is also now supported,
               proved you tailor IMACSHFT to set MXGDURTM, as above.
               The MXG note that SHIFT could not be used is removed.
   Thanks to Debby Blackey, HCA HealthCare, USA.

Change 25.149  The SAS/ITRM product (formerly SAS/ITSV) executes MXG to
ADOCITRM       create its SAS datasets, but the MXG dataset names are
Aug  2, 2007   changed by ITRM.  This member's table maps the ITRM names
               to the original MXG dataset name.

Change 25.148  A tutorial on how MXG normally creates SORTed datasets,
ADOCDB2        two exceptions, and an MXG tailoring example that writes
Aug  1, 2007   the DB2ACCTB and DB2ACCTP datasets to separate DDNAMES,
               also bypassing their SORTs.

               MXG normally builds datasets that are PROC SORTed, and
               the sort order can be exploited in subsequent programs
               to avoid unneeded sorts.  MXG's SORTs specify the NODUP
               SAS option, which removes any duplicate SMF records.

               However, two datasets, DB2ACCT and CICSTRAN have never
               been SORTed by default, as they were always known to be
               very large.  So their "dataset sort _Sdddddd" tokens,
               _SDB2ACC and _SCICTRN, were NOT in the default list of
               datasets to be sorted in VMACDB2 and VMAC110 defaults.

               With hindsight, I should also have NOT included SORTs of
               the DB2 per-buffer (DB2ACCTB) and per-package (DB2ACCTP)
               datasets, which now can be as large or larger than, their
               DB2ACCT counterpart!

               But now that MXG has sorted those datasets by default,
               I can not safely remove those SORTs, without high risk
               of causing a user program to unnecessarily fail. But,
               you can use this MXG tailoring example to write them
               to separate DDnames, and bypass their dataset sorts:

                 // EXEC MXGSASV9
                 //SMF  DD DSN=YOUR.SMF,DISP=SHR
                 //DB2ACCT  DD DSN=YOUR.DB2ACCT,DISP=(,CATLG),...
                 //DB2ACCTB DD DSN=YOUR.DB2ACCTB,DISP=(,CATLG),...
                 //DB2ACCTP DD DSN=YOUR.DB2ACCTP,DISP=(,CATLG),...
                 //PDB      DD DSN=YOUR.OTHER.DB2.STUFF,DISP=(,CATLG),..
                 //SYSIN DD *
                  %LET WDB2ACC=DB2ACCT;  /*DDNAME for DB2ACCT */
                  %LET WDB2ACB=DB2ACCTB; /*DDNAME for DB2ACCTB*/
                  %LET WDB2ACP=DB2ACCTP; /*DDNAME for DB2ACCTP*/
                  %LET MACKEEP=
                    MACRO _SDB2ACB  %    /*BYPASS DB2ACCTB SORT*/
                    MACRO _SDB2ACP  %    /*BYPASS DB2ACCTP SORT*/
                  ;
                  %INCLUDE SOURCLIB(BUILDPDB);
                  RUN;

               This same tailoring, using a  %LET Wdddddd=DDNAME;
               statement to name the output DDname for the "Work"
               copy of a dataset, and using %LET MACKEEP= as shown to
               define MACRO _Sdddddd % (i.e., to a blank value) can be
               used for any other large dataset that you want written
               to a separate DDNAME, unsorted, as your SMF data is read.

Change 25.147  Almost cosmetic.  The IMACxxxx/MACxxxx tokens that were
VMACQACS       defined for VMACQACS were the old IMACQAPM/MACQAPM tokens
VMXGINIT       from when AS/400 support was in VMACQAPM, and I decided
Aug  1, 2007   to change the VMAC to QACS but still use the QAPM token
               so existing AS/400 tailoring wouldn't need to be changed.
               However, this is inconsistent for new users, so this
               change adds the include of IMACQACS and created MACQACS,
               so the expected token names are found, but the old tokens
               are still invoked, so existing tailoring still works.
   Thanks to Philip Downes, Fortis Bank, BELGIUM.

Change 25.146  Using PDB=SMF could cause ERROR: NO DATASETS TO LOOKUP
ANALRMFR       because SPLIT70 changes were not fully implemented.
Aug  1, 2007   A circumvention was to use TYPS7072 first to create the
               PDB datasets, and then use PDB=PDB in the %ANALRMFR,
               but this change corrects the error.
   Thanks to Mike Rounceville, Blue Cross Blue Shield of NC, USA.

Change 25.145  RMF III dataset ZRBLCP might have no observations for
VMACRMFV       many LPARs, due to an MXG error in its "SKIP" logic that
Aug  1, 2007   prematurely ended the scan over all LPARs.
               The statement SKIP=CPUCPLEN-32-1280; was replaced with
               the statement SKIP=CPUCPLEN-LPARPROF-LPARPRLN*LPARPRNR;
   Thanks to Erik Torp, IMT Nordic IBM, DENMARK.

Change 25.144  For ASCII execution, the FULLSTIMER option (MXG default)
UPCMEMSZ       will print the memory used by each DATA/PROC step.  One
Jul 31, 2007   way to determine how much virtual memory is available to
               your MXG programs is to execute this new utility
                 %INCLUDE SOURCLIB(UPCMEMSZ);
               which iterates the number of variables allocated in a
               temporary array of 32K-length-character-variables so the
               array size varies from 150MB up to 3GB.  You look on the
               log for the last successful step prior to the ERRORs:
                  FATAL: Insufficient memory to execute data step
                  program.  Aborted during the COMPILATION phase.
                  NOTE: The SAS System stopped processing this step
                  because of insufficient memory.
               In my Windows/XP system with SAS 9.1.3, that last step
               allocated  ARRAY TESTMEMSIZE (30000) $32000 _TEMPORARY_;
               and used 938,107 kbytes, or 916 MegaBytes

Change 25.143  MXG sets each of the 135 SWAP rate variables in TYPE71 to
VMAC71         a missing value if that field was zero and the field was
VMXGINIT       INPUT, but that design is inconsistent with MXG's use of
Jul 29, 2007   missing values.  Normally, an MXG variable has a missing
               value, a value different from a "zero", when:
                - the event didn't happen, like a datetimestamp JSTRTIME
                  for a JCL error - the job never "started".
                - a new variable is not INPUT, because that new product
                  is not yet installed at your site.
                - an old variable that no longer exists (like PERFGRP)
                  is no longer INPUT because the record segment is no
                  longer written.
               This design is not perfect; if the new variable is INPUT
               because it was added to an already-existing-segment, or
               if the old variable is still INPUT because it's segment
               exists, they will have a zero value instead of a missing
               value, but examination of missing values with PROC MEANS
               is used in MXG validation and technical support.
                 Back when these swap rates were added to the TYPE71,
                 most were zero, but I wanted blanks when PROC PRINTed,
                 so by setting their zero values to a missing value, and
                 using an OPTIONS MISSING=' '; statement, SAS printed
                 blanks instead of a sea of zeros or periods.

               Since TYPE71 always been this way, I'm reluctant to make
               changes to my default, but new &MXGMISS macro variable is
               now defined in VMXGINIT:
                  %LET MXGMISS = GT 0 ;
               and it referenced in VMAC71 for each swaprate with logic
                  IF variable &MXGMISS THEN variable=variable*INTTIME;
                  ELSE                      variable=.'
               so you can put this statement in your IMACKEEP or SYSIN
                     %LET MXGMISS = GE 0 ;
               and any zero values will no longer be missing values.

                 Advanced SAS notes:
                 a. I first defined MACRO _GT0 GT 0 % in VMAC71 member,
                    so it could be redefined with the MACKEEP, but its
                    re-execution caused unrelated code with ' GT 0 ' to
                    be seen as ' GT 0 0 ', causing compiler errors.
                 b. I tested IF X &MXGMISS THEN ... syntax for the case
                    when the variable MXGMISS was not defined, which
                    would happen if your site (unwisely) has a tailored
                    VMXGINIT member.  Although there are UNRESOLVED
                    MACRO VARIABLE messages and one NOTE: VARIABLE
                    MXGMISS IS UNINITIALIZED, the end result
                    I also discovered that the value of &MXGMISS macro
                    variable, when it is undefined, is the MXGMISS text,
                    rather than the blank value I had assumed/presumed!
   Thanks to Jerry Urbaniak, Acxiom, USA.

Change 25.142  Change 18.211 identified most _xxxxID macro tokens that
IMACIPAC       are "reversed" from the normal _IDxxxx syntax, but that
VMACIPAC       change only updated member UTILBLDP so it would know of
Jul 29, 2007   those inconsistent _ID macro names.  This change defines
               new, "correct" _IDxxxx macro names for those products,
               and modifies the SMF Record ID test syntax to

                  IF ID=_IDxxxx OR ID=_xxxxID THEN DO;

               so that your old definition in your IMACKEEP tailoring
               with MACRO _xxxxID nnn % does NOT need to be changed, but
               more importantly, so that new users who use the expected
               MACRO _IDxxxx nnn % will never find out about this MXG
               inconsistency.  These members were identified:
                ARB, DLM, DMON, HBUF, HURN, IPAC, M204, NSPY, PDSM, RMDS
                ROSC, RTE, SYNC, TSOM, VVDS, WYLA, WYLB, X37.
               Thus far, this change has only been made to these xxxx:
                                            IPAC
   Thanks to Keith McWhorter, Georgia Technology Authority, USA.

Change 25.141  IBM APAR OA21799 corrects invalid values for SMF78HIX,
VMAC78         the offset to the new-with-HYPERPAV (SMF78HPS) segments
Jul 27, 2007   in RMF 78 Subtype 3 records.  The value in SMF78HIX:
               -sometimes exceeded the physical record length, causing
                the MXG job to ABEND with this error message:

                  INPUT STATEMENT EXCEEDED RECORD LENGTH

               -sometimes pointed to the wrong LCUID. MXG compares the
                LCUID/R783ID2 from the old SMF78ASS segment with the
                R783HLCU from the new SMF78HPS, and printed messages:

                ***ERROR.VMAC78 LCUID=002E  DOES NOT MATCH R783HLCU=002F

               HyperPAV support was shipped by IBM with APAR OA12865.

               This change prevents the ABEND without the APAR installed
               by validating SMF78HIX before the INPUT of the HYPERPAV
               variables. Also, these new HyperPav variables:
                 R783HLCU R783HCU R783HNAI R783HTIO R783HAIU
                 R783HCAD R783HIOQ
               are set missing when LCUID mismatch or beyond-record-HIX
               is detected.  Only 10 error messages will be printed.

              -The actual records that contained invalid SMF78HIX values
               happened to also be "SPLIT 78" records, i.e., multiple
               records written for an interval when the data won't fit
               in one 32K SMF record.

               But split 78 records are not new; even before HyperPav,
               records are split if there are more than 80 LCUIDs.
               Fortunately, MXG has always created observations in the
               TYPE78CF (Configuration, from the SMF78DCS segments, and
               TYPE78CU (Control Unit, from the SMF78ASS and SMF78HPS
               segments), since split records are fully self-contained
               for each group of LCUIDs for those three segments that
               create those two datasets.

               But, UnFortunately, when 78 records are split, the 588
               byte I/O Queue Global segment (pointed to SMF78QDS) is
               repeated in each split record, causing duplicate,
               triplicate, or more replicas of each interval's data to
               be output in the TYPE78IO per-IOPIQID dataset.  I think
               the SMF78QDS data should have been written only in the
               first split record, but now that I see what IBM does, the
               change now only outputs TYPE78IO when SMF78RSQ is zero or
               one; zero is the value in an un-split record, one is the
               first record when records are split.
                 P.S. Because the split records have slightly different
                      values in SMFTIME, these duplicates cannot be
                      automatically recognized as dupes with the NODUP
                      option in PROC SORT after the fact; they must be
                      prevented up front.

              -No one has noticed/reported the duplicate TYPE78IO data,
               and only two sites encountered the ABEND in their daily
               BUILDPDB due to the invalid SMF78HIX, but IBM immediately
               accepted the problem and created the APAR to correct the
               error.  But RMF 78s are automatically processed by MXG's
               BUILDPDB job, so the behind-the-scene installation of
               HyperPAV might cause a fine-running-daily-accounting-JOB
               to ABEND, so do not overlook this Change and/or APAR.
   Thanks to Sam Knutson, Geico, USA.
   Thanks to Mike Lewellen, Charles Schwab & Co., USA.

Change 25.140  Support for z/OS 1.9 (very minor additions, COMPATIBLE).
ADOC6          - Variables SMF22ETY and SMF22FNC values are formatted
EXTY8223         and decoded by existing MG022FN, MG022ET formats.
EXTY9214       - Variable R723TPDP='CPU TIME AT*PROMOTED*DISPATCH*PRTY'
IMAC82           is added to TYPE72GO dataset.
IMAC92         - Variables
VMAC1718           R742PSTM='MORE*PATH*STATUS*FLAGS'
VMAC22             R742PRCT='PATH*RETRY*COUNT'
VMAC30             R742PPND='CURR*PENDING*SIGNALS*OUTBOUND'
VMAC7072           R742PUSE='CURRENT*BLOCKS OF*BUFF SPACE*USED'
VMAC71           are added to the TYPE74PA dataset.
VMAC74         - Variables
VMAC79             R742MST1='EXTENDED*MEMBER*STATE*ONE'
VMAC82             R742MST2='EXTENDED*MEMBER*STATE*TWO'
VMAC92             R742MINT='STATUS*CHECKING*INTERVAL'
VMXGINIT           R742MJOB='JOB THAT*JOINED*MEMBER'
Jul 26, 2007     are added to the TYPE74ME dataset.
               - Variables
                   R744FPSN='NUMBER OF*SHARED*CF*PROCESSORS'
                   R744FPDN='NUMBER OF*DEDICATED*CF*PROCESSORS'
                   CFPTYP01='1ST CF*CPU*PROCESSOR*TYPE'  thru
                   CFPTYP16='16TH CF*CPU*PROCESSOR*TYPE'
                   CFPWGT01='1ST CF*SHARED*PROCESSOR*WEIGHT' thru
                   CFPWGT16='16TH CF*SHARED*PROCESSOR*WEIGHT'
                 are added to the TYPE74CF dataset.
               - Variable
                   R744SETM='STRUCTURE*EXECUTION*TIME'
                 are added to the TYPE74ST dataset.
               - Variable
                   R791EXCW='EXCP*COUNT'
                 are added to the TYPE791  dataset.
               - Variable
                   R792EXCW='EXCP*COUNT'
                 are added to the TYPE792  dataset.
               - Variable
                   SMF82TKS='TKDS NAME'
                 are added to the TYPE8201 dataset.
               - New dataset TYPE8223 dataset contains
                   SMF82TKF='TKDS*BITS'
                   SMF82TKH='TKDS*HANDLE*BEING*PROCESSED'
                   SMF82TKN='TKDS*NAME'
               - New dataset TYPE9214 dataset contains
                  SMF92DDN='UNIQUE*DEVICE*NUMBER*FOR FILE'
                  SMF92DFG='FLAGS*80X=*RENAME'
                  SMF92DFN='NAME OF FILE*DELETED OR*RENAMED'
                  SMF92DFS='FILE*SYSTEM*NAME/
                  SMF92DFT='DATETIME OF*DELETE'
                  SMF92DIN='FILE*SERIAL*NUMBER'
                  SMF92DIP='FILE*SERIAL*NUMBER*OF PARENT'
                  SMF92DNL='LENGTH OF*FILE NAME*FOR DELETE'
                  SMF92DNR='LENGTH OF*FILE NAME*FOR RENAME'
                  SMF92DRN='NEW NAME*THAT WAS*RENAMED'
                  SMF92DTY='FILE TYPE*AS DEFINED IN*BPXYFTYP'
                 new variables.
               -APAR OA17070 Additions to RMF 74-4 Coupling Facility CF
                records provides the RMF support for accounting and the
                measurement extensions of CF level 15. The COMPATIBLE
                record change to RMF 74 records added these new data:
                - Variables
                   R744FPSN='NUMBER OF*SHARED*CF*PROCESSORS'
                   R744FPDN='NUMBER OF*DEDICATED*CF*PROCESSORS'
                   CFPTYP01='1ST CF*CPU*PROCESSOR*TYPE'
                      thru
                   CFPTYP16='16TH CF*CPU*PROCESSOR*TYPE'
                   CFPWGT01='1ST CF*SHARED*PROCESSOR*WEIGHT'
                      thru
                   CFPWGT16='16TH CF*SHARED*PROCESSOR*WEIGHT'
                  are added to the TYPE74CF dataset.
                - Variable
                   R744SETM='STRUCTURE*EXECUTION*TIME'
                  are added to the TYPE74ST dataset.

Change 25.139  Support for IMF Version 4.3 (INCOMPATIBLE).  Part of that
VMACCIMS       incompatibility was because MXG tested IMSVERS LT '13'
Jul 14, 2007   (because CIMS/Boole made major record format changes when
               IMS 1.3 replaced IMS 1.2 years ago), but now, IMSVERS has
               '1010' for IMS Version 10, causing MXG to try to read the
               current records with ancient 1.2 code.  However, many new
               new fields were inserted by IMF 4.3, which relocated the
               DBD segments incompatibly; this won't happen again, as
               one of the new fields added is the OFFDBTRL, the offset
               to the DBD segments.  These new variables are created
               in the CIMSTRAN dataset:
                 TRNARVTH TRNARVTJ TRNE1STD TRNEAPPL TRNEAPPU TRNEDB2
                 TRNEDB2U TRNEDLDB TRNEDLTM TRNEF2   TRNELDLI TRNEMQS
                 TRNEMQSU TRNEOESS TRNEOESU TRNEOPCL TRNESYNC TRNETFLG
                 TRNETIME TRNEWLMC TRNMODET TRNMSCTH TRNMSCTJ TRNMSCUT
                 TRNNUOWP TRNOTCLF TRNOTCLN TRNOTCON TRNOTCOR TRNOTIP
                 TRNOTMAM TRNOTMAP TRNOTPRT TRNOTSCF TRNOTSLF TRNOTSOC
                 TRNOTSTC TRNOTSTF TRNOTSYF TRNOTUSR TRNRSENM TRNSMQGN
                 TRNSTCKE TRNSTOPA TRNSTOPU TRNSTRTA TRNSTRTU TRNTCPU
                 TRNUOW   TRNW1OTH TRNW2IOO TRNW2IOV TRNW2LCH TRNW2OTH
                 TRNW3LCH TRNW3OTH TRNW4DBR TRNW4IO  TRNW4OTH TRNW5IOD
                 TRNW5IOO TRNW5IOV TRNW5LCH TRNW5LCK TRNW5OTH TRNWLMRE
                 TRNWLMRT TRNWLMSC TRNWLMZR TRNXCKPC TRNXCKPM TRNXCKPT
   Thanks to Thomas Heitlinger, FIDUCIA, GERMANY.
   Thanks to Sieghart Seith, FIDUCIA, GERMANY.

Change 25.138  Support for APAR OA20314 which adds two variables
VMAC89           SMF89LPN='LPAR*NAME'
Jul 14, 2007     SMF89ZNA='LICENSE*ZNALC*IN*EFFECT?'
               to both TYPE89 and TYPE892 datasets.
   Thanks to Al Sherkow, I/S Management Strategies, USA.

Change 25.137  INPUT STATEMENT EXCEEDED RECORD LENGTH error with SMF 80
VMAC80A        record that contained new TOKDANAMs CPUTIMEMAX,
Jul 13, 2007   ASSIZEMAX and FILEPROCMAX segments, because MXG did not
               protect for unknown tokens.  This fix protects so the
               record will be read and the new tokens will be skipped.
               This change and text will be revised to support those
               three new tokens.
   Thanks to Gerald Nagao, University of California, USA.

Change 25.136  Two utility programs to count PDS Directory Blocks used
TYPELPDS       and defined.
UTILLPDS       The first example, in TYPELPDS, uses IBM LISTVTOC and
Jul  4, 2007   LISTPDS programs to create flatfiles that are then read
Aug  7, 2007   in a second SAS step (so this could be used by sites with
               SAS only on ASCII), and it captures all PDS on a volume,
               with no prior knowledge of their DSNAMES.
               The second example, in UTILLPDS, is a SAS example that
               gets the blocks for a single dataset.
               Christa requested the facility.  Chuck wrote TYPELPDS.
               Geert contributed UTILLPDS.  I wrote the change/comments.
   Thanks to Chuck Hopf, Bank of America, USA.
   Thanks to Christa Neven, KBC Bankverzekerinngsholding, BELGIUM.
   Thanks to Geert De Batselier KBC Bankverzekerinngsholding, BELGIUM.

Change 25.135  The label for TYPE70PR variables LCPUCAP and LCPUCAPC now
TYPE7072       include "Hard CAP" because those flag variables are set
Jul  4, 2007   'Y' when Hard Capping was specified when the LPAR was
               defined (LCPUCAP) or if the Hard Capping status of the
               LPAR was changed during this interval (LCPUCAPC).  Hard
               Capping tells PR/SM to cap resources delivered to that
               LPAR at that LPAR's Designated Share (which is derived
               from the weight given to this LPAR versus the total of
               the weights you gave all of the other LPARs in the CEC).
               Once an LPAR specified as hard capped reaches its
               designated share, that LPAR is then "hard capped" and
               normally does not receive more than its share of total
               CEC resources.

               Soft capping of an LPAR is done by WLM in response to
               license manager determining that the LPAR's rolling
               4-hour average MSU has exceeded the MSU specified for the
               LPAR.  A Soft Capped LPAR will have PDB.TYPE70PR variable
               LPARNSW='PERCENT*LPAR SOFT*CAPPED' nonzero in soft capped
               intervals (and LPnNSW variables nonzero in PDB.ASUM70xx
               ASUMCExx summary datasets).

               To further confuse the issue, there can be resource group
               capping of service classes based on Resource Group
               specifications.

               Even more confusing is that Discretionary Management
               algorithms can cap a service class period that is a
               candidate for Discretionary Mangement if it significantly
               exceeds its performance goal (PI LT 0.71), and this
               Discretionary Management cap will show up even though the
               service class is not assigned a Resource Group cap.

   Thanks to ???, ???, FRANCE, for asking why LCPUCAP was never 'Y'.
   Thanks to Don Deese, Computer Management Sciences, USA.
               the above answers.

Change 25.135  %ANALRMFR(PDB=PDB,REPORT=DEVC,DEVICEC=20) caused several
ANALRMFR       errors (variables CPUTYPE CPUVERSN, variable CAIM NOT
Jul  4, 2007   FOUND).  A list with dashed names CPUSER0-CPUSER9 was
               enumerated and CAIM was removed (no such variable), and
               UNINITIALIZED VARIABLES SMF70CPA and SMF70WLA were fixed
               by their addition to ID statements where needed. But the
               removal of CPUTYPE and CPUVERSN from the TEMP74 ID list
               was the correct revision, because the don't exist when
               a report for only RMF 74 records is requested.
   Thanks to Esti Sas, Bank Lemui, ISRAEL.

====== Changes thru 25.134 were in MXG 25.06 dated Jul  4, 2007=========

Change 25.134  Support for IRRDBU00 record types 0560, 0561, 0562 and
EXRAC560       05C0 create four new datasets (all of which, unlike prior
EXRAC561       IRRDBU00 records, contain multiple segments per record).
EXRAC562          dddddd     Dataset   Description
IMACRACF          RAC560     RACF0560  GEN RES CERTIFICATE DATA
VMACRACF          RAC561     RACF0561  GEN RES CERTIFICATE REFERENCE
VMXGINIT          RAC562     RACF0562  GEN RES KEY RING DATA
Jul  3, 2007      RAC5C0     RACF05C0  GEN RES CDTINFO DATA
   Thanks to Aimee Steele, Euroclear, BELGIUM.

Change 25.133  Support for Williams Data Systems FERRET product user SMF
EXFERTCP       creates three new datasets:
EXFERTEE
EXFERTRT         DDDDDD     MXG       MXG
IMACFERT         DATASET    DATASET   DATASET
TYPEFERT         SUFFIX     NAME      LABEL
TYPSFERT
VMACFERT         FERTCP     FERRETCP  FERRET CP SUBTYPE 1
VMXGINIT         FERTEE     FERRETEE  FERRET EE SUBTYPE 2
Jun 30, 2007     FERTRT     FERRETRT  FERRET RTP SUBTYPE 3

Change 25.132  AS400 TYPECONF variables GDESCL,GDESCN,GDESED,GDESET, and
VMACQACS       GDES91 are now kept, GDES2 is formatted TIME8, and GDES3
Jun 30, 2007   is now INPUT as $7 (Model+System-TYPE - e.g., 8709406).
               Date/Time variables GDESED, GDESET are character text, so
               they cannot be formatted, but new GDESEDD and GDESETT are
               numeric variables with DATE9 and TIME8 formats.
   Thanks to Urs Kugler, Zurich Insurance Company, SWITZERLAND.

Change 25.131 -Support for RACFEVNTs 52 (SET UID) and 79 (CRL PUBLISH)
EXTY8052       creates two new datasets from SMF 80 records:
EXTY8079         DDDDDD     MXG       MXG
IMAC80A          DATASET    DATASET   DATASET
VMAC80A          TY8052     TYPE8052  RACF EVT 52 SET UID
VMXGINIT         TY8079     TYPE8079  RACF EVT 79 CRL PUBLISH
Jun 30, 2007  -Support for TOP SECRET records with RACFVRSN '90'x.
Jul  2, 2007   The '90'x records contain ONLY the "standard" relocate
               sections (they have SMF80DTP=RACFTYPE values 1-255, there
               are NRSET sections, and they are located at OFFSET), and
               the header ends at SMF80VER/RACFVRSN, the "short" CA SMF
               80 header, which is different than the "standard" IBM 80
               record header; MXG has always detected IBM vs TOP SECRET
               format based on RACFVRSN and found the short header.
              -Support for TOP SECRET records with RACFVRSN '00'x is an
               INCOMPATIBLE change that required new logic to detect the
               new and different format. The '00'x records contain ONLY
               the "extended" relocate sections (they have segment type
               SMF80TP2=EXTLNTYP values of 256-65535, there are SMF80OC2
               sections, and they are located at SMF80OC2), but the '00'
               records now have the "full" IBM header (thru SMF80RSV).
                 And, of course, CA changed the SMF80OC2 offset value in
                 the '00'x, but not in the '90'x, to match the way IBM
                 has always (incorrectly!) set OFFSET and SMF80OC2:
                  In all other IBM SMF records, offsets are from the RDW
                  and the INPUT is @OFFSET-3, but the IBM SMF 80s have
                  always required @OFFSET+1.  The original and '90'x Top
                  Secret records require -3, the new ones require +1.
              -The MXG code that formerly created TYPE80A and TYPE80CM
               datasets has been changed, and there now should never be
               any observations written to those datasets.  Previously,
               TYPE80A was OUTPUT if NRSET=0 (e.g., RACFEVNT=79 that
               has only extended relocate segments), and TYPE80CM was
               OUTPUT when an unknown SMF80DTP segment type was found.
               TYPE80A now will contain obs only if the SMF 80 records
               has no segments: OUTPUT only if NRSET=0 AND SMF80OC2=0.
               TYPE80CM will contain obs only if SMF 80 records contain
               relocate sections (standard or extended) that MXG does
               not (yet) decode, but if you send your SMF records to
               support@mxg.com, those segments will be decoded and those
               observations will go away.
              -Top Secret Documentation: MXG decodes the Top-Secret-Only
               SMF80DTP segment values of 103, 104, 105, 109, and 114,
               and outputs one observation in the TYPE80TS for each
               segment (i.e., multiple observations from one SMF 80
               record).  MXG also outputs one observation per record to
               the appropriate TYPE80xx dataset for that RACFEVNT=xx,
               with all the "IBM" variables from the relocatable DTP/DT2
               segments.
              -New Top Secret DTP=115 and DTP=116 segments will be
               decoded and output to TYPE80TS when documentation is
               received; this text will be updated when completed.
   Thanks to Greg Burt, Fifth Third Bank, USA.

Change 25.130  Support for Clarion Disk Array flat files creates new
EXCLARDI       datasets:
EXCLARLU         DDDDDD     MXG       MXG
EXCLARPO         DATASET    DATASET   DATASET
EXCLARRA         SUFFIX     NAME      LABEL
EXCLARSA
EXCLARSN         CLARDI     CLARDISK  CLARION ARRAY DISK DATA
EXCLARSP         CLARLU     CLARLUN   CLARION ARRAY LUN  DATA
IMACCLAR         CLARPO     CLARPORT  CLARION ARRAY PORT DATA
TYPECLAR         CLARRA     CLARRAID  CLARION ARRAY RAID DATA
TYPSCLAR         CLARSA     CLARSAN   CLARION ARRAY SAN  DATA
VMACCLAR         CLARSN     CLARSNAP  CLARION ARRAY SNAP DATA
VMXGINIT         CLARSP     CLARSP    CLARION ARRAY SP   DATA
Jun 29, 2007   Jul 5: Variable OBJECT removed from BY lists as it is
Jul  5, 2007   subordinate to their OWNERNAM, and it's parsed pieces
               are already available in the other BY variables.
   Thanks to Jim Quigley, ConEd, USA.

Change 25.129  Variable QW0224PN and QW0224CI are now created in the
VMAC102        T102S224 DB2 Trace IFCID=224 dataset.
Jun 29, 2007
   Thanks to Christa Neven, KBC Bankverzekerinngsholding, BELGIUM.

Change 25.128  Variable UBRECRD is now formatted with $MGDCORF, and is
VMACDCOL       INPUT as $CHAR1 instead of $EBCDIC1 so it is valid on the
Jun 27, 2007   ASCII platform as well as on EBDIC, and it is set to
               LENGTH $1 (without the LENGTH set to $1, the length of
               the format item, $MGDCORF, is used by SAS for the length
               of the variable, wasting space).
   Thanks to Trevor Ede, EDS New Zealand Limited, NEW ZEALAND.

Change 25.127  Support for Oracle Version 10 has been in place since MXG
VMACORAC       Version 24.06, as there were no changes in the physical
Jun 27, 2007   contents of their user SMF record.  However, V10 data for
               the Kernel fields (MXG variables LOGREADS PHYREADS
               LOGWRTS DMLCOMIT DMLROLLS DEADLOCK) is trashed with very
               large values in the initial test records; a problem has
               been opened with Oracle Technical Support and this note
               will be updated when a fix is available from Oracle.
   Thanks to Sudie Wulfert-Shcickendanz, Anheuser-Busch, USA.

Change 25.126  Circumvention to skip new TMC 'FF20'x Volume Definition
VMACTMS5       record, awaiting doc and data to decode.
Aug  7, 2007

Change 25.125  VGETOBS added conditional use a DATA step for testing,
VGETOBS        but that revision was removed and would not be executed.
Aug  7, 2007

Change 25.124  Preliminary changes to support testing of MXG under WPS.
AUTOEXEW      -Member CONFIGW2 defines the SAS options for WPS execution
CONFIGW2       on z/OS platforms.  Some SAS options do not yet exist in
MXGWPSV2       WPS, and some are no longer needed or are not changeable.
VMXGINIT       It must be the last dataset in the //CONFIG DD in your
Jun 25, 2007   MXGWPSV2 JCL procedure.
Aug  8, 2007  -Member AUTOEXEW defines the SAS options for WPS execution
Sep 25, 2007   on ASCII platforms.
              -VMXGINIT set new GLOBALed macro variable &WPSVER=2 when
               execution under WPS V2 is detected, and sets the existing
               macro variable &SASVER=8, so that MXG will generate code
               for the SAS V8 environment that WPS V2 replicates.
               Sep 25: test for SASVER EQ 2.00 in VMXGINIT was changed
               to LT 6 when WPS changed version to 2.01.

Change 25.123  An undetected DIVIDE BY ZERO in VMXGRMFI occurred in the
VMXGRMFI       PGPERBLK=PGPERBLK/BLKSAUIN calculation, but I do not know
Jun 25, 2007   why SAS did not detect and report the error (which is
               inside the OUTCODE= of a PROC MEANS inside VMXGSUM).  The
               division is now protected.

Change 25.122  If BUILDPDB=NO, USERADD didn't function correctly for the
UTILBLDP       TMNT, 5, 26J2, or 30 "products".
Jun 25, 2007
   Thanks to Scott Barry, SBBWorks, Inc., USA.

Change 25.121  PDB.ASUMUOW dataset is enhanced to keep the response time
VMXGUOW        of each of the CICS segments in the Unit of Work.
Jun 22, 2007

Change 25.120  Utility for counting CICS record, bytes, transactions for
UCICSNT        each region and subtype now separates CICS Resource field
Jun 22, 2007   segments from CICS Transaction segments in counts, and
               report titles and labels were clarified.

Change 25.119  SMF 119 with (new in z/OS 1.8) IPV6 ICMP segments caused
VMAC119        INVALID DATA error messages due to blanks where &PIB.4.
Jun 20, 2007   should have been for the INFORMAT of several variables
               in the TYP11905 dataset (after @OFF11907).
   Thanks to Marty Rhodes, Hertz Corporation, USA.

Change 25.118  DEVMODEL='3380K' caused INVALID ARGUMENT error as noted
ASUMCACH       in Change 23.073; logic revised to set MODEL=3380 when
Jun 20, 2007   DEVMODEL=:'3380' to circumvent.
   Thanks to Tom Heller, Cincom Systems, Inc., USA.

Change 25.117  INVALID ARGUMENT TO FUNCTION INPUT reading SYNCSORT SMF
VMACSYNC       records were due to incorrect HEX4 and HEX3 informats
Jun 19, 2007   that should have been HEX8 and HEX6, and (on ASCII only)
               SYNSRTOU was input as $CHAR instead of $EBCDIC.  The
               variables that were wrong were Device Addresses
               SIDEVNR and SODEVNR.
   Thanks to Patrick Holloman, Zions Management Services Co., USA.

Change 25.116  MXG 25.05 GMTOFF30 was still wrong because Change 25.089
VMAC30         for TYPE30U6 GMTOFF30/INTETIME/INTBTIME was still wrong
VMAC30         in some cases; those variables are now created in the
Jun 19, 2007   _STY30U6 logic based on SMFTIME and the EXECTM; variable
               SYNCTIME sometimes exists, and if it does, it is reset
               from GMT; otherwise, it is set to INTETIME.  With 25.05
               TYPE30_V/SMFINTRV has negative EXECTM and ITRVLTM values.
               With MXG 25.05,
   Thanks to Rudolf Sauer, T-Systems Enterprise Services, GERMANY.

Change 25.115  Incorrect values for memory variables in XMUCDSYS were
VMACXAM        the result of my inability to recognize PL/1 source, so
Jun 15, 2007   I overlooked several fields in this Linux under VM data.
   Thanks to Robert Obee, IMS Health, USA.

Change 25.114 -The XCOM support is revised to conform to Change 18.338
VMACNDM        by defining the MACRO _VTYXCOM for this product.  Over
VMACSOLV       time, all members will be revised to provide this option,
VMACXCOM       but I tend to get motivated only when someone asks.
Jun 14, 2007  -Jun 27: SOLV enhanced to define _VTYSOLV, _VTYSOL1 macros
Jun 27, 2007  -Jun 27: NDM now defines _VNDMxx macro for all datasets.
   Thanks to Trevor Ede, EDS, New Zealand.

Change 25.113  The HSM support is enhanced to create an "HSM COMPLEX"
ASUMHSM        variable, HSMPLEX, for the HSM Summarization logic to
Jun 14, 2007   support sites with multiple DFHSM-managed storage
               environment. HSMPLEX is blank by default, but the new
               MACRO _ESUHSM has a commented exmaple on how you might
               create values in HSMPLEX for your DFHSM data.
   Thanks to Scott Barry, SBBWorks, Inc., USA.

Change 25.112  The CA IDMS Performance Monitor support is enhanced with
IHDRIDMS       the insertion of an INCLUDE for IHDRIDMS member after the
VMACIDMS       IDMS header variables have been input.  New &MACIDMSH
VMXGINIT       macro variable is defined so either the IHDRIDMS member
Jun 14, 2007   or it can be used to access the header variables.
   Thanks to Scott Barry, SBBWorks, Inc., USA.

Change 25.111  A misplaced end comment after PUT 'DEBUG TWO' statement
VMAC80A        after Change 25.024 caused variable TYPSTRNG to be wrong.
Jun 13, 2007   TYPSTRNG is an MXG-created variable that identifies which
               RACFTYPE subtypes were found for this RACF event.
   Thanks to John Hammonds, Texas Comptroller of Public Accounts, USA.

Change 25.110 -When there are more than some number of disks, NMON will
VMACNMON       create additional objects DISKBUSY1/DISKREADn etc; they
Jun 12, 2007   are now supported.
              -Inconsistent sort order BY statement were revised.
              -JFSFILE name was increased in size to $128 to prevent
               false duplicates

Change 25.109  z/OS 1.8 changed the meaning of UIC values in SMF71Uxx
VMAC71         variables to now represent the time for one steal cycle
Jun 14, 2007   through the whole storage area, with a range of values
               from 0 to 65535 (18 hours).  As before, low UIC implies
               higher storage contention. The new UIC metrics for
               Current UIC are calculated every second, while Min and
               Max are the lowest/highest UIC during the last walk thru
               the storage area.  IBM has kept the old form of UIC
               (values 0-2054) in SMF71LIC/HIC/ACA, MXG variables
               HIUICMN/MX/AV, but this change now stores the new
               SMF71Uxx values in the three old UIC MXG variables
               HIUICMN/HIUICMX/HIUICAV variables, as their value has no
               meaning with z/OS 1.8.
   Thanks to Karl Lasecki, Chemical Abstracts Service, USA.
   Thanks to Don Deese, Computer Management Sciences, USA.

Change 25.108  Unused Change.

====== Changes thru 25.107 were in MXG 25.05 dated Jun  7, 2007=========

Change 25.107  Support for CA Brightstor Tape Encryption user SMF record
EXBTENCR       creates two new datasets:
EXBTEN32        DDDDDD  MXG       MXG
IMACBTE         DATASET DATASET   DATASET                            REC
TYPEBTE         SUFFIX  NAME      LABEL                              St
TYPSBTE         BTENCR  BTENCRYP  BTENCR: BRIGHTSTOR TAPE ENCRYPTION all
VMACBTE         BTEN32  BETNCR32  BTEN32: BRIGHTSTOR SUBTYPE 32
VMXGINIT       but this change was not included in MXG 25.05; 25.06+ is
Jun  7, 2007   needed for these data.  See also Change 25.143.
Jun 14, 2007
   Thanks to Ray Dunn, CIGNA, USA.

Change 25.106  MXG 25.04 only.  Zero obs in TMSTMS due to a debug test
TYPETMS5       IF DSN='DB2SPEC.DBBKUP.ONSITE.CSTDB21R.CSTTSP10' THEN
Jun  5, 2007   statement that should have been deleted.
   Thanks to Jan Bigalke, AGIS Allianz Dresdner Infosys, GERMANY.

Change 25.105 -Variable PARTNCPU contains the number of CP Engines, but
VMAC7072       the "in what" is different in different MXG datasets:
VMXG70PR       In ASUMCEC and ASUMCELP the label now reads:
Jun  5, 2007       PARTNCPU='NUMBER OF*CP ENGINES*IN CEC'
               in TYPE70PR, ASUM70PR, and ASUM70LP, the label now reads:
                   PARTNCPU='NUMBER OF*CP ENGINES*IN PARTITION'
               For example, you could see PDB.ASUMCEC with
                   NRPRCS=5 NRPHYCPS=4 NRICFCPU=2 PARTNCPU=2
               and PARTNCPU is thus the correct number of CP engines for
               any "CPU Busy" calculations.
              -Variable MXGCIN was not always set correctly for 'ICF's;
               fortunately, there was no impact on other variables.
              -If you should accidentally/incorrectly run ASUM70PR with
               incorrect CECINTRV=QTRHOUR reading DURATM=30 Minute data,
               then, as should be expected, the ASUMCEC output dataset
               is invalid, and had many PCTCPU's much greater than 100%.

Change 25.104  Full support for NMON, Nigel's Monitor for AIX/unix.  All
EXNMONAA       OBJECTs are now supported; an NMONxxxx dataset is created
EXNMONCD       from each OBJECT that has multiple instances per interval
EXNMONDS       (e.g. NMONDISK has an observation for each DISKNAME), and
EXNMONIN
EXNMONIO       NMONINTV dataset has all metrics from all OBJECTs that
EXNMONJF       have only one instance per interval.
EXNMONNT
EXNMONFS       These datasets are now created from NMON records:
EXNMONTO          DDDDDD  MXG       MXG
EXNMONUA          DATASET DATASET   DATASET
EXNMONVG          SUFFIX  NAME      LABEL                      Instance
EXNMONWL
IMACNMON          NMONAA  NMONAAA   NIGELS MONITOR AAA CONFIG   none
VMACNMON          NMONCD  NMONCPUD  NMON CPU DETAIL             CPUNR
VMXGINIT          NMONDS  NMONDISK  NMON DISK                   DISKNAME
Jun  5, 2007      NMONIN  NMONINTV  NIGELS MONITOR INTERVAL     none
                  NMONIO  NMONIOAD  NMON IOADAPTER              IOADAPTR
                  NMONJF  NMONJFSF  NMON JFSFILE                JFSFIL
                  NMONNT  NMONNETW  NMON NETWORK                NETNAME
                  NMONFS  NMONNFS   NMON NFS CLIENT AND SERVER  NFSTYPE
                  NMONTO  NMONTOP   NMON TOP PROCESS            PID
                  NMONUA  NMONUARG  NMON UARG PROCESS           PID PPID
                  NMONVG  NMONVG    NMON VOLUME GROUP           VOLGROUP
                  NMONWL  NMONWLM   NMON WLM                    WLMCLASS

               This table maps the objects to each MXG dataset:

                DDDDDD  MXG       MXG       The OBJECTs that create
                DATASET DATASET   DATASET   are listed.
                SUFFIX  NAME      LABEL

                NMONAA  NMONAAA   NIGELS MONITOR AAA CONFIGURATION
                                    OBJECTS: AAA
                NMONCD  NMONCPUD  NMON CPU DETAIL
                                    OBJECTS: CPUnn
                NMONDS  NMONDISK  NMON DISK
                                    OBJECTS: DISKBUSY DISKREAD DISKWRITE
                                    OBJECTS: DISKXFER DISKBSIZE
                NMONIO  NMONIOAD  NMON IOADAPTER
                                    OBJECTS: IOADAPT
                NMONJF  NMONJFSF  NMON JFSFILE
                                    OBJECTS: JFSFILE JFSINODE
                NMONNT  NMONNETW  NMON NETWORK
                                    OBJECTS: NET NETPACKET NETERROR
                NMONFS  NMONNFSS  NMON NFS CLIENT AND SERVER
                                    OBJECTS: NFSCLIV2 NFSCLIV3
                                    OBJECTS: NFSSVRV2 NFSSVRV3
                NMONTO  NMONTOP   NMON TOP PROCESS
                                    OBJECTS: TOP
                NMONUA  NMONUARG  NMON UARG PROCESS
                                    OBJECTS: UARG
                NMONVG  NMONVG    NMON VOLUME GROUP
                                    OBJECTS: VGBUSY VGREAD VGWRITE
                                    OBJECTS: VGXFER VGSIZE
                NMONWL  NMONWLM   NMON WLM
                                    OBJECTS: WLMCPU WLMBIO WLMMEM

                NMONIN  NMONINTV  NIGELS MONITOR INTERVAL
                                    OBJECTS: CPU_ALL
                                     VARS: PCPUUSER PCPUSYS PCPUWAIT
                                     VARS: PCPUIDLE PCPUBUSY NRCPUS
                                    OBJECTS: MEM
                                     VARS: REALFREE VIRTFREE REMBFREE
                                     VARS: VIMBFREE REMBTOTL VIMBTOTL
                                    OBJECTS: MEMNEW
                                     VARS: MNPROCPC MNFSCAPC MNSYSTPC
                                     VARS: MNFREEPC MNPINNPC MNUSERPC
                                    OBJECTS: MEMUSE
                                     VARS: MUNUMPPC MUMINPPC MUMAXPPC
                                     VARS: MUMINFPC MUMAXFPC
                                    OBJECTS: PAGE
                                     VARS: PGFAULTS PGIN PGOUT PGSIN
                                     VARS: PGSOUT RECLAIMS SCANS CYCLES
                                    OBJECTS: PAGING
                                     VARS: PGMBFREE
                                    OBJECTS: LARGEPAGE
                                     VARS: FREEPAGE USEDPAGE PAGES
                                     VARS: HIGHPAGE SIZEMB
                                    OBJECTS: PROC
                                     VARS: RUNNABLE SWAPIN PSWITCH
                                     VARS: READ WRITE FORK EXEC SEM MSG
                                     VARS: SYSCALL
                                    OBJECTS: PROCAIO
                                     VARS: AIOPROCS AIORUNNG AIOCPU
                                    OBJECTS: FILE
                                     VARS: IGET NAMEI DIRBLK READCH
                                     VARS: WRITECH
                                     VARS: TTYRAWCH TTYCANCH TTYOUTCH
                                    OBJECTS: LPAR
                                     VARS: PHYSICPU VIRTCPUS LOGLCPUS
                                     VARS: POOLCPUS ENTITLED WEIGHT
                                     VARS: POOLIDLE USEDALL USEDPOOL
                                     VARS: SHARECPU

               The JFSFILE and JFSINODE objects have errors in one file
               out of many; after many intervals, the number of data
               fields in those object records is smaller than the number
               of file names in the "dictionary" record.  Logic in MXG
               detects and reports these bad records on the log, and
               deletes the defective records.  If a fix from Nigel is
               forthcoming, this note will be updated.
   Thanks to Steve Olmstead, Northwestern Mutual Trust, USA.
   Thanks to Henry Steinhauer, Northwestern Mutual Trust, USA.

Change 25.103  Support for IBM OMEGAMON TRF ITRF V550 and V560.
EXITRMST       -Many new variables added to datasets ITRFMSG & ITRFMSGO.
IMACITRF       -Variables LOCLTIME and PSTNR added to all ITRF datasets.
VMACITRF       -New ITRFMSGT dataset is created from subtype 12 with the
VMXGINIT        text of the DFS554A message.
Jun  4, 2007   -There is a known error now fixed in APAR CCnnnnn; a few
                '10'x records (39 out of 10000) are misaligned, causing
                very high CPU time (1E13) and missing value in LOCLTIME.
                  Use PROC MEANS N MIN MAX SUM DATA=ITRFMSG; to examine
                  the maximum value of ACCPU and SRBTIME and LOCLTIME to
                  see if it has any missing values.
   Thanks to Guenter Rucks, FinanzIT GmbH, GERMANY.
   Thanks to John Maher, IBM Tivoli, USA.
   Thanks to Bert Winberg, IBM Nordic Processor, DENMARK.

Change 25.102  The erase of the old month directory syntax was wrong;
VMXGALOC       statement %let killmo="&basedir.w%trim(&killmnth)\*.*";
Jun  2, 2007   is now    %let killmo="&basedir.m%trim(&killmnth)\*.*";
   Thanks to Patrick Holloman, Zions Management Service Company, USA.

Change 25.101  MXG 25.04 only. Back in Change 25.085, I added options
               MEMLEAVE=25M NOSORTBLKMODE in CONFIGV9 because they did
CONFIGV9       correct an error, but those values were suggested for the
Jun  1, 2007   diagnostics; this change restores SORTBLOCKMODE because
               it is used by DFSORT for significant improvement in sort
               performance, and it is the SAS default, so it no longer
               set in MXG's CONFIGV9.
               MEMLEAVE protects a virtual storage area used only by SAS
               (especially needed when SAS calls an external product,
               like a host sort program), but MEMLEAVE is taken from the
               REGION size of the JOB; if you had an old job with the
               prior-recommended-by-MXG of REGION=64M, with MEMLEAVE=25M
               you only had 39M for the MXG job.  Additionally, the SAS
               recommended value is 10% of the REGION size, and almost
               all of MXG will execute in a REGION=100M, changing the
               value to MEMLEAVE=10M is more correct.
               But what about REGION=0M, didn't that solve the need to
               periodically increase any static REGION=nnnM values in
               your JCL?  Yes, it did, prior to the new Threaded Kernel
               Memory architecture in SAS V9, which operates independent
               of the prior "SAS Proper" WM Memory architecture, but the
               existence of two independent memory managers in one ASID
               has uncovered memory exposures if and only if REGION=0M
               is specified.  While a future version of SAS may resolve,
               the safest recommendation now is to set REGION=100M on
               your job card, with this revised CONFIGV9 member in use.
               (MXG also sets NOTHREADS because there are exposures to
               the use of THREADS on z/OS at this time that need to be
               understood, so I leave it to you to decide to THREADS,
               but even with NOTHREADS, the REGION=0M exposure exists,
               because SAS V9 itself is threaded.)
   Thanks to Jim Hayes, Huntington, USA.

Change 25.100  Documentation.  References to JCLINSTL were changed to
INSTALL        JCLINST9 for SAS V9.1.3 or JCLINST8 for SAS V8.2; the
JCLINSTx       JCLINSTL member no longer exists because it didn't work
Jun  1, 2007   for both SAS versions, but I failed to update the doc.
   Thanks to Allan Hardman, Co-Operative Bank, ENGLAND.

Change 25.099  Sub-subtype '4000'x (DLI) caused INPUT STATEMENT EXCEEDED
VMAC112        ERROR and/or incorrect values in T112DLI and T112DLIT
VMACOMCI       datasets; an 8-byte field was overlooked.
May 31, 2007  -Jun 28: Detection of unknown TTYPE added for safety.
Jun 28, 2007  -The SMF 112 record replaced the OMEGAMON for CICS user
Jun 30, 2007   SMF record, but only the SUBTYPE=203 "ONDV" record is
               processed by TYPE112, because that is the useful data,
               because only the subtype 203 can be compressed, and
               because the existing TYPEOMCI/TYPSOMCI code will read the
               other two subtypes:
                 200 - SYST
                 201 - INTR
               in a standalone job from SMF with this example

                 // EXEC MXGSASV9
                 //SMF
                 //PDB
                 //SYSIN DD *
                  %LET MACKEEP=  MACRO _IDOMCI  112  %
                  %INCLUDE SOURCLIB(TYPSOMCI);

               so you can investigate if the other two subtypes contain
               data of interest.  You could easily add processing of the
               SMF 112 and OMCI records to your BUILDPDB, using:

                  %LET MACFILE=
                    %QUOTE(      IF ID=112 THEN DO;
                                   INPUT @OFFSMF+19 SUBTYPE &PIB.2. @;
                                   IF SUBTYPE IN (200,201) THEN ID=299;
                                 END;
                          );
                  %LET MACKEEP=   MACRO _IDOMCI 299 %  ;
                  %UTILBLDP(BUILDPDB=YES,USERADD=112 OMCI);
                  %INCLUDE INSTREAM;


               Because the TYPE112 code now processes the subtype 203,
               VMACOMCI now only reads subtype 200 and 201 records, it
               was updated to accept V560 version, and the four bytes
               inserted for compression statistics are skipped.
   Thanks to David Schumann, Blue Cross Blue Shield of Minnesota, USA.
   Thanks to Ray Dunn, CIGNA, USA.

Change 25.098  %UTILBLDP is enhanced with new option BUILDPDB=JES3 to
UTILBLDP       generate an %INCLUDE for BUILDPD3 instead of BUILDPDB to
May 31, 2007   create a PDB library with JES3 instead of JES2 records.
   Thanks to Julian Smailes, Experian, ENGLAND.

Change 25.097  MXG-created DB2-variable THREADTY was blank if there was
VMACDB2        no QLAC segment (i.e., non-DDF), because the MXG code to
May 28, 2007   create THREADTY was located inside the QLAC processing,
Jun  6, 2007   because the logic needs to test QLACLOCN.  The code block
               was relocated to after the QLAC processing, and THREADTY
               should, now, always be populated.
              -THREADTY added to DB2ACCTP dataset default KEEP list.
   Thanks to Eileen F. Van Etten, Bank of America, USA.

Change 25.096  Using an IMAC7072 tailoring that had an old _STY70 caused
IMAC7072       ERROR: VARIABLE LPARNAME NOT FOUND. from within a VMXGSUM
May 28, 2007   that was "INVOKED BY VMXGRMFI TYPE70 - R70HOUR", although
               the real error was back when PDB.TYPE70 was created, as
               it had zero observations because the new "SPLIT70" _STY70
               must be executed, now, to create observations in TYPE70.
               Removing the IMAC7072 corrected the error; it has been
               the MXG recommendation to remove all of the old IMACnnnn
               "product tailoring" members, and use only IMACKEEP to
               redefine macros you know you want to change.
                 Long ago, the IMACxxxx members actually defined the
                 _L, _K, _S, _B etc macros, but those definitions moved
                 into the VMACxxxx member precisely because of these
                 exposures when I have to make an incompatible change
                 in MXG architecture.
   Thanks to Jim Hayes, Huntington, USA.

Change 25.095  Reading VSAM SMF with TYPE42 caused false MXG messages
VMAC42           **ERROR SHORT SMF 42 SUBTYPE 6 ACCESS METHOD SECTION
May 28, 2007        (OFFDSAM=1 confirms it's a false message) and
                 **ERROR INVALID TYPE42 SUBTYPE 5 RECORD
                    (COL=229,S42VTVDO=228 confirms false message).
               and these records were incorrectly deleted, but only when
               the (undumped) VSAM SMF file is read; when the (normal,
               dumped) BSAM SMF file is read, there are no errors.
               Logic to handle OFFSMF for subtype 5 and OFFDSAM revised.
   Thanks to Jim Poletti, Edward Jones, USA.

Change 25.094  Harmless divide by zero when EXCPDASD was zero; the obs
ANALBLSR       is now deleted since it can't be a BLSR candidate.
May 28, 2007
   Thanks to Roger Foreman, TransUnion, USA.

Change 25.093  With BUILDPDB=YES,SUPPRESS=DB2, an %INCLUDE for ASUMCICX
UTILBLDP       was generated, but the prerequisite %INCLUDE for ASUMUOW
May 22, 2007   was not generated, causing ASUMCICX to fail in a SORT.
   Thanks to Robert Sample, Atlanta Journal Constitution, USA.

Change 25.092  Doc only.  The example in the comments to run ASUM70PR
ASUM70PR       against SMF data was incorrect; the corrected example is:
VMXG70PR         %INCLUDE SOURCLIB(TYPS7072,ASUM70PR);
May 21, 2007   Error Dataset PDB.TYPE70PR NOT FOUND resulted if you used
               the example in the comments.
   Thanks to Art Cuneo, Health Care Services, USA.

Change 25.091  After MXG 25.04 QA completed, but before it was packaged,
TESSOTHR       a untested TESSOTHR member was copied into SOURCLIB; the
May 15, 2007   PROC COPY that causes the ERROR in JCLTEST9 is removed.
   Thanks to Randy Parker, Trustmark National Bank, USA.

Change 25.090 -Support for PK37354 SMF 100 Subtype 4 in DB2 V1.9, which
EXDB2ST4       will contain the old IFCID=225 (ID=102 Subtype 225) data.
IMACDB2        This makes my head hurt, because I can't safely use the
VMACDB2        old T102S225 dataset name: combining 100 and 102 records
VMAC102        in the same DATA step would cause SAS to fail due to the
VMXGINIT       duplicate output dataset names.  So the old IFCID=225
May 15, 2007   data will be output in new DB2STAT4 dataset.
              -NEW QW0225BB='STORAGE POOL*MANAGER*BLOCKS BELOW*THE LINE'
               was also added by this APAR, for both DB2 V1.8 and 1.9,
               and it is INPUT and kept in T102S225 and DB2STAT4.

Change 25.089  GMTOFF30 must be calculated because IBM does not put it
VMAC30         in SMF 30 records; it can only be calculated from the
May 14, 2007   subtype 2 or 3 interval records, which contain interval
May 31, 2007   start on both local and GMT clocks (SMF30IST is local and
Jun  1, 2007   SMF3ISS is GMT), and then GMTOFF30 was used to create the
Jun 18, 2007   local zone INTBTIME & INTETIME interval start/end times.
               It was also RETAINed to convert INTETIME in the subtype 6
               record, which has no local counterpart, and from which
               INTBTIME will be created when TYPE30_6 is deaccumulated.
               These problems existed prior to this change:
                - Subtype 6 logic caused GMTOFF30 to be zero, causing
                  INTBTIME/INTETIME in TYPE30_6 to be wrong.  Worse,
                  if the next subtype 2/3 did not have a CPU segment,
                  (MULTIDD='Y' observations have no CPU segment and
                  thus SMF30IST is a missing value), that RETAINed zero
                  GMTOFF30 value was used, causing INTBTIME/INTETIME
                  in TYPE30_V and PDB.SMFINTRV datasets to be wrong.
                - Subtype 2 and 3 records for OMVS tasks do NOT have the
                  interval start time in SMF30IST (they appear to have
                  the original substep initiate time, not the current
                  interval's start time;  this undocumented feature
                  caused very large GMTOFF30 values (like -29 hours).
               This change revised the subtype=6 logic so GMTOFF30=0 is
               not created, and the OMVS records (SUBSTEP GT 0) are not
               used to calculate GMTOFF30; instead, they use the RETAIN
               value of GMTOFF30 to recalculate INTBTIME and INTETIME.

               There can still be errors in the value of GMTOFF30, or
               INTBTIME or INTETIME because of the need to RETAIN the
               GMT offset from prior records, but many records do not
               have the needed data.  These design errors exist in 30s:
                 - SMF30IST is wrong in OMVS (SUBSTEP GT 0) records.
                 - SMF30IST is not populated in subtype 6 records.
                 - SMF30IST is not populated in records with no CPU
                   segment, notably MULTIDD='Y' records with only EXCPs,
                   or records with more MULC segments than fit in one
                   physical SMF 30 record.
               The only solution for auditable SMF 30 data is for IBM to
               add the GMT Offset value in EVERY type 30 record.

              -May 31, 2007: Variable INTRVLTM was missing after May 14
               change, only for SUBSTEP GT 0 (USS - OMVS) tasks, because
               it wasn't calculated in that revised code block.

              -Jun  1, 2007: Variables SMF30IET/INTETIME/SYNCTIME with a
               fixed datetime value of '17SEP2042:23:53:25.37' in all
               subtype 6 records was found at one site; the hex value of
               the field showed it was actually a negative binary value
               of -22 (the number of leap seconds of offset!) when it
               was INPUT as &IB.8.6 and then divided by 4096, which is
               the TODSTAMP algorithm for negative values.
               IBM's SMF manual only documents SMF30IST/SMF30IET for the
               subtype 2 and 3 records; in subtype 6, SMF30IST is always
               missing, but previously SMF30IET was the valid end time.
               Now, additional logic detects the duration rather than
               datetime in SMF30IET, and sets SMF30IET from SMFTIME in
               those cases in TYPE30_6 observations.
              -Jun 18, 2007:  IF TST30IET GT 0 THEN test was corrected
               of IF TST30IET LT -30 THEN because valid TODSTAMP values
               have first bit on, which causes TST30IET to be always be
               negative, but the -30 test detects the invalid values of
               IET that contained leap seconds and not a valid time.
   Thanks to Douglas C. Walter, Citicorp, USA.
   Thanks to Rudolf Sauer, T-Systems Enterprise Services, GERMANY.

Change 25.088  The $VMXGVERS as the last line should have been %VMXGSERS
VGETDDS
May 10, 2007
   Thanks to Jim Horne, Lowes', USA.

Change 25.087  BROKEN CONTROL RECORD error caused by DMN=10 RC=2 record
VMACVMXA       for MDGPROD=:'5739A03RM0000000' logic, now corrected.
May 10, 2007
   Thanks to Tom Draeger, Aurora, USA.

====== Changes thru 25.086 were in MXG 25.04 dated May  7, 2007=========

Change 25.086  New Analysis of CEC-level z/OS Capture Ratio combines PDB
ASUMCAPT       ASUMCEC and RMFINTRV datasets, summing workload CPU & TCB
VMXGCAPT       time for all Service Classes in all z/OS LPARS in the CEC
May  6, 2007   to create new dataset PDB.ASUMCAPT with total CPUACTTM
               from PDB.ASUMCEC and total CPU72TM from PDB.RMFINTRV for
               new variable CECAPTRT='CEC*CAPTURE*RATIO' to be created
                  CECAPTRT=100*CPU72TM/CPUACTTM;
               You can simply add %INCLUDE SOURCLIB(ASUMCAPT); after the
               your %INCLUDE SOURCLIB(ASUM70PR); in your BUILDPDB job.
               The default summarization is by HOUR.

               This hour's data shows how 17532 CPU Seconds of CEC Busy
               time ends up as only 16389 CPU seconds captured in RMF 72
               Service Class records, for a CECAPTRT=93.48 for the CEC:

           __________________________________________________________
           | ASUMCEC   |  RMFINTRV |  RMFINTRV | RMFINTRV |  RMFINTRV |
           | CPUACTTM  |  CPUMVSTM |  RMFACTTM | CPUEFFTM |  CPU72TM  |
           |  17532    |   17500   |   17448   |   17389  |   16389   |
           |           |           |           |          |           |
           |           |           |           |          | __16389__ |
           |           |           |           |          /           |
           |           |           |           |__17389__/|           |
           |           |           |          /|          |           |
           |           |           |__17448__/ |          |           |
           |           |          /|           |          |           |
           |           |__17500__/ |           |          | UNCAPTURED|
           |          /| ??Phys??  | PHYSICAL  | CPUOVHTM |           |
           |__17532__/ |__   32__  | __   84__ | __  143__|__  1143__ |

               Of those 16389 CPUTM seconds, only 14086 was CPUTCBTM,
               showing why you MUST use total CPUTM and not just TCB.

Change 25.085  Strange V9.1.3 z/OS memory failures in the SAS Internal
CONFIGV9       SORT (no error message on SAS log nor in JOBLOG, even no
May  4, 2007   end of step IEF374I message, but SYSLOG shows the job was
               placed in HOLD by JES after a S0F9 ABEND; system couldn't
               acquire storage for an SVRB.  The error was in _BLDEXCL
               of UTILEXCL's sort to create dataset UNIQUE, which must
               use internal SAS sort because its BY list is way over the
               4092 character limit of host sort packages.  By using a
               REGION=256M (not REGION=0M, NO LONGER SAS-RECOMMENDED)
               and by using these replacement values in CONFIGV9 that
               were recommended by SAS Technical Support:
                 MEMLEAVE=25M
                 NOSORTBLKMODE
               the error was eliminated.  So I have added those option
               values to the CONFIGV9 member in this change.
   Thanks to Alexander Raeder, ATOSORIGIN, GERMANY.

Change 25.084  Variable FILSEQ was wrong in TMS.DSNBRECD observations
TYPETMS5       created from the VOL record, for multi-volume, multi-file
VMACTMS5       tapes.  FILSEQ does not exist in the VOL record, but MXG
May  4, 2007   creates a pseudo-DSNBRECD obs with the DSNAME in the VOL
May 29, 2007   record; MXG logic did not handle these cases correctly.
               VMACTMS5 changed only cosmetic DEBUG statements.
               May 29: TYPETMS5 member in MXG 25.04 did NOT contain this
               correction; the member copied into MXG 25.04 was not the
               tested member that is now updated and redated May 29.
   Thanks to Tim Hare, Florida Department of Transportation, USA.
   Thanks to Paul Naddeo, FiServ, USA.

Change 25.083  MXG 25.03 only. APAR OA20077 SMF 21 new compressed bytes
VMAC21         SMF21DBR and SMF21DBW were still wrong after two tries.
May  3, 2007   I missed the 4096 multiplier, and I reversed the label
               text COMPRESSED/UNCOMPRESSED in all four variables.
               Worse, the customer actually had to go to IBM Support,
               who quickly and politely diagnosed my coding errors.
               These old variables always had correct value:
                  BYTEREAD='UNCOMPRESSED*CHANNEL*BYTES*READ'
                  BYTEWRIT='UNCOMPRESSED*CHANNEL*BYTES*WRITTEN'
               These new variables were wrong prior to this change:
                  SMF21DBR='COMPRESSED*DEVICE*BYTES*READ'
                  SMF21DBW='COMPRESSED*DEVICE*BYTES*WRITTEN'
               These two new compression ratio variables are created:
                  SMF21CRR='READ*COMPRESSION*RATIO'
                  SMF21CRW='WRITE*COMPRESSION*RATIO'
   Thanks to Karl Lasecki, Chemical Abstracts Service, USA.
   Thanks to Ken C. Jobbitt, IBM Support, USA.

Change 25.082  Support for new XAMAP segments HSTAPP,VSIAPP,VSINAP,
EXXMHAPP       VSISFT,VSISYS,VSIUSR and STOSCS creates new VMXHSTAPP,
EXXMHAPP       XMVSIAPP,XMVSINAP,XMVSISFT,XMVSISYS,XMVSIUSR, and
EXXMOSCS       XMSTOSCS datasets.  Variables fron new segments SYTSXP
EXXMVNAP       and SYTSXP are added to XAMCPUBY/XAMCPUTO datasets, new
EXXMVSFT       variables from old segments SUBSUM,SYTRSG,SYTXSG,MTRMEM,
EXXMVSYS       STORSG and SYTCPU are added to XAMSYS dataset, variables
EXXMVUSR       from new segments PRCAPC,PRCAPM,SYTSXG,STOSXG are added
IMACXAM        to XAMSYS dataset, new vars from IODVSW,USRCON,USRACT
VMACXAM        will be decoded.
VMXGINIT
May  1, 2007
   Thanks to Robert Obee, IMS Health, USA.

Change 25.081  NDM 'NM' records are now decoded, and output in NDMNM
VMACNDM        dataset (previously output, but with only the header
May  1, 2007   variables). Variable NDMTIME is kept but it is not
               populated in the sample SMF record.
   Thanks to Trevor Ede, EDS New Zealand, NEW ZEALAND.

Change 25.080  Cosmetic protection for a user syntax error if the user
VMXGDUR        failed to specify a DATETIME= variable that cause strange
VMXGSUM        syntax errors.  Now, MXG issues USER ABEND 1916 when that
May  1, 2007   required operand is missing.
   Thanks to Chuck Hopf, Bank of America, USA.

Change 25.079  MXG RMF III code only output the first LPAR's data in the
VMACRMFV       ZRBLCP dataset, which now has one observation for each
May  1, 2007   LCPUADDR for each LPARNAME that has engines assigned.
   Thanks to Jerry Urbaniak, Acxiom, USA.
   Thanks to Sam Knutson, Geico, USA.

Change 25.078  Documentation.  These MXG members issue USER ABENDs with
Many           an ABORT ABEND nnnn; statement.  These MXG members could
May  1, 2007   ABEND with the listed User Abend Code:
                     Member   Code            Member   Code
                    MONTHASC  1111           VMACTMVS    69
                    MONTHBLD  1111           VMACTMV2     1
                    MONTHBLS  1111           VMACTMV2    69
                    MONTHBL3  1111           VMAC110   MXGABND
                    TYPEMOND  1111           VMACRMFI  1913
                    TYPETMON  1111           VMACRMFI  1911
                    UTILDUMP   666           VMACRMFI  1912
                    VMACCADM    99           VMACRMFI   990
                    VMACSMF     69           VMACRMFI  MXGABND
                    VMACMON8  1099           VMACSET   1914
                    VMACTMD8  2099           VMACSET   1915
                    VMACTMDC  2099           VMMXGDUR  1916
                    VMACTMDQ  2099           VMXGSUM    666
                    VMACTMTC  2099           VMXGSUME   666
                    VMACTMVT  2099           VMXGVTOC    99
                    VMACTIMS  1099           VMXGVTOF    99
                    VMACTMO2  1099
               See text of Change 23.184 for the MXGABND option.

Change 25.075  DB2 V8.1 incompatibly changed the QBGL Group Buffer Stats
VMACDB2        segment, making these nine fields now reserved:
Apr 30, 2007      QBGLAD QBGLAN QBGLAR QBGLAZ QBGLMN QBGLRB QBGLRF
                  QBGLSU QBGLXN
               and adding five new variables to PDB.DB2GBPST dataset:
                  QBGLCM QBGLCR QBGLMW QBGLWP QBGLWS
   Thanks to Martin Packer, IBM, WORLDWIDE.

Change 25.074  Extraneous DATA; SET; BY ...; statements, left over from
VMAC7072       debugging the SPLIT70 logic, is removed.
Apr 30, 2007
   Thanks to Chuck Hopf, Bank of America, USA.

Change 25.073  Enhancement to "Nigel's Monitor for AIX and Linux' adds
EXNMONAA       variables HOST and INTERVAL to NMONINTV dataset, decodes
IMACNMON       the IOADAPTR and LPAR data types, and creates new NMONAAA
VMACNMON       dataset with the "AAA" configuration records information.
VMXGINIT
Apr 29, 2007
   Thanks to Massimo Pugliese, ELSAG Spa, ITALY.

Change 25.072  Sample tape statistics reports using STC VTS SMF records
DALYTAPE       and the MXGTMNT tape mount and allocation records.  Can
Apr 26, 2007   be used after a modified BUILDPDB, or with the %UTILBLDP
               example in the comments, the reports can be created from
               an SMF data file.

Change 25.071  MXG 25.03 only UTILBLDP: did not generate the _Sxxxx sort
UTILBLDP       macros when BUILDPDB=NO was specified due to a typo; the
Apr 26, 2007   USERADD= datasets were not sorted into the PDB library.
May  7, 2007   Additionally, these products that need deaccumulation and
               require their _Sxxxx product sort macros to be invoked:
                 7072  DB2  HSM  NTCP  ROSC  TMDB  TPX  103  28
               will now have those macros invoked whenever USERADD= is
               invoked for them.
              -May 7:  Support for SMF ID=102 record, which requires the
               _HDR102, _END102 macros.  With over 300 IFCID/subtypes,
               you can select which T102Snnn datasets are created using
               USERADD=102.63 102.106 102.141 102.142 syntax.  The 102
               tokens must be contiguous in your USERADD= parameter, but
               do not need to be continuously numbered, nor do they need
               to be in numeric order in your USERADD= in you %UTILBLDP.
   Thanks to Chuck Hopf, Bank of America, USA.

Change 25.070 -MXG's SYSLOG-reading program failed, INVALID ARGUMENT TO
SYSLOG         FUNCTION INPUT, because the final tested changed member
Apr 25, 2007   was still in my "USERID.SOURCLIB" from Nov, 2005, when it
Apr 28, 2007   should have been moved into the MXG source library.  The
Apr 29, 2007   output dataset TYPETMSG contains an observation for each
               SYSLOG event (but not for each physical record in SYSLOG:
               records starting with "S" are continuation records, and
               their text is appended in the variable TMTGMTXT so that
               only one output observation is created for these events.
              -Variable TMTGMTXT was increased to $120 from $80, which
               caused text for "S" records to be truncated.
              -In addition to using thid code to read SYSLOG messages,
               you can also write any SYSLOG message to SMF, using the
               MXGTMNT Tape Mount Monitor program (in ASMTAPEE), which
               with then be output in BUILDPDB's TYPESYSL dataset.
   Thanks to MP Welch, SPRINT, USA.
   Thanks to Stephen Van Scyoc, SPRINT, USA.

Change 25.069  Service Class names can be "wild-carded" using the colon
UTILRMFI       symbol, if you have similarly named Service or Reporting
VMXGRMFI       Class names to map to workloads in your WORKnn= argument.
Apr 24, 2007
   Thanks to Chuck Hopf, Bank of America, USA.

Change 25.068  The SQL text from QW0141TX was not printed if the length
ANALDB2R       of text was less that 60 bytes, due to a typo; the line
Apr 23, 2007   ELSE TEXT=QW0141TX; is corrected to ELSE TEXT1=QW0141TX;
   Thanks to Michael Gebbia, Eddie Bauer, USA.

Change 25.067  The VMXGUSE macro is updated to add the _STY70 macro if
VMXGUSE        processing of the SMF 70 records was requested; VMXGUSE
UTILBLDP       is still supported, but the newer UTILBLDP is recommended
Apr 20, 2007   as the better tool, as it offers many more options; it
               was also updated to ensure _STY70 is invoked when needed.
              -MXG25.03 also had double percent instead of %VMXGVERS.
   Thanks to Scott Barry, SBBWorks, Inc., USA.

Change 25.066  DB2 SMF 102 IFCID=225 record with invalid header offset
VMACDB2H       of '0CB5'x, 3253 decimal, for QWHCEUID_Off, but with its
Apr 20, 2007   LRECL of only 486 bytes, caused INPUT STATEMENT EXCEEDED.
               The input now validates that the offset is LE LENGTH.
   Thanks to Robbie A. McCoy, Salt River Project, USA.

Change 25.065  Enhancement to UTILBLDP to select the ASUMxxxx members to
UTILBLDP       be executed when BUILDPDB=YES is specified. The default
Apr 18, 2007   list of members %INCLUDEd after BUILDPDB is not changed,
               but they are now set in the new MXGINCL= argument:
                MXGINCL=
                   ASUMUOW  ASUMCICX ASUM70PR ASUMCACH ASUMTAPE
                   ASUMTMNT ASUMTALO ASUMDB2A ASUMDB2B,
               so you can now remove any unwanted ASUMs.
   Thanks to Tom Kelman, Commerce Bank of Kansas, USA.

Change 25.064  Several QISE variables should have been DIF()'ed as they
VMACDB2        contained accumulated values; now all QISE variables are
Apr 17, 2007   DIF()'d except for those that contain counts of pages or
               statements, in creating the PDB.DB2STATS dataset from the
               SMF 100 Subtype 1 DB2 Statistics records.  Also, QISExxxx
               labels with "Dataspace" were corrected to "DBD POOLS".
   Thanks to Lori Masulis, Fidelity Systems, USA.

Change 25.063  Additional SWAP resaons codes were added to $MGO79SR
ADOC71         format and in the ADOC71 member documentation.
FORMATS            VALUE $MG079SR
Apr 17, 2007        '00'X='00X:UNKNOWN'
                    'AS ='AS:AUXSTOR SHORTAGE (VERY UNLIKELY)'
                    'AW'='AW:APPC WAIT'
                    'DW'='DW:DETECTED WAIT'
                    'EX'='EX:CAP EXCHANGE'
                    'IC'='IC:IMPROVE CSTORE'
                    'IP'='IP:IMPROVE PAGING'
                    'IW'='IW:OMVS INPUT'
                    'LW'='LW:LONG WAIT'
                    'MR'='MR:MAKE ROOM'
                    'NQ'='NQ:CAP ENQUEUE'
                    'NS'='NS:TRANSITION TO NON-SWAPPABLE'
                    'OW'='OW:OMVS OUTPUT'
                    'RQ'='RQ:REQUEST SWAP'
                    'RS'='RS:REAL STORAGE SHORTAGE'
                    'SR'='SR:IN-REAL'
                    'TI'='TI:TERMINAL INPUT'
                    'TO'='TO:TERMINAL OUTPUT'
                    'TS'='TS:TRANSITION'
                    'US'='US:CAP UNILATERAL'
                    'VR'='VR:VIRTUAL REAL REQUEST'
                    'WT'='LW:LONG WAIT'
                    'XS'='XS:AUX STORAGE SHORTAGE'
                   ;
   Thanks to Warren Hayward, TJX, USA.

Change 25.062  Protection for truncates RMF ID=72 SUBTYPE=7 LENGTH=78.
VMAC7072       while the site examines logs for x37 ABENDS and/or opens
Apr 16, 2007   a problem report with IBM.
   Thanks to Ravi Kumar, CSC, USA.

Change 25.061  Variable SMF12WIC is padded with '00'x instead of blanks;
VMAC120        those '00'x are now translated to blanks.
Apr 15, 2007
   Thanks to Stan Dylnicki, Royal Bank of Canada, CANADA

Change 25.060  Using TYPSTPF invoked very old PROC SORTs that still had
VMXGTPFI       invocations of %VMXGFOR, long ago archaic and no longer
VMXGFOR        needed, but they caused a 180 Syntax error for "FORCE".
Apr 12, 2007   The %VMXGFOR calls were removed from VMXGTPFI, and that
               member was revised to "FORCE" is only created for SAS
               V5 and V6 where it was originally required.
               Change 20.327 in 2003 documented the removal of FORCE.
   Thanks to Bruce Widlund, Merrill Consultants, USA.

Change 25.059  All %VMXGVERS(25.03,MEMBER) invocations were typo'ed as
Many           %VMXGVERS(25.03MEMBER);.  Wrong syntax, but, fortunately
Apr 12, 2007   there was no error; the old macros would still be noted
               in the messages to the log, which still had the right
               information, albeit slightly different than expected.
   Thanks to Alexander Raeder, ATOS Origin, GERMANY.

====== Changes thru 25.058 were in MXG 25.03 dated Apr 12, 2007=========

Change 25.058  Variable NDMSNODE appeared twice in the _BNDMCT by list.
VMACNDM
Apr 12, 2007
   Thanks to Trevor Ede, EDS New Zealand, NEW ZEALAND.

====== Changes thru 25.057 were in MXG 25.03 dated Apr 10, 2007=========

Change 25.057  The 9672x CPUTYPE without APAR OW37565 does not populate
VMAC7072       SMF70CIN, causing PARTNCPU to be zero.  Now, MXG forces
Apr 10, 2007   SMF70CIN='CP' when CPUTYPE='9672'X and NRCIXGTO=0.
   Thanks to Alexander Raeder, ATOS ORIGIN, GERMANY.

Change 25.056  DB2STATS SMF 100 Subtype 1 Language Environment QLExxxxx
VMACDB2        LE variables have always been wrong, partially due to MXG
Apr 10, 2007   code errors (I assumed the 8-byte fields contained both a
               duration and a count, and deaccumulated some fields that
               were not accumulated), and partially because IBM's record
               is incorrectly written and does not agree with the DSECT.
               The 8-byte header (normally has the 'QLES' eye catcher)
               doesn't exist, but LENQLES=168, and visual examination of
               hex dumps showed the extra 8 bytes are inserted between
               QLELOWIM and QLESTG1M fields.  DB2 Versions 1.6 thru 1.8
               SMF records all have LENQLES=168 and the inserted field.
   Thanks to Don Deese, Computer Management Sciences, USA.

Change 25.055  Support for SAMS objects 2151,2226,2229 and 2231 has been
EXSAM151       validated and new datasets created.
EXSAM226      -Many variables in many of the existing SAMSnnnn datasets
EXSAM229       were renamed to avoid conflict with same-named variables
EXSAM231       created from other SMF records.
IMACSAMS
VMACSAMS
VMXGINIT
Apr  8, 2007

Change 25.054  DB2TCBTM in DB2ACCT/ASUMUOW includes QWACSPCP,QWACTRET
VMXGUOW        CPU times, but with OTE, the DB2TCBTM includes some of
Apr  6, 2007   the CPU time already recorded in the CICSTRAN's TASCPUTM;
               using PDB.ASUMUOW, the correct CPU metric would be the
               sum of TASCPUTM from CICSTRAN and QWACSPCP and QWACTRET
               from DB2ACCT.  This change SUMs QWACSPCP and QWACTRET
               into PDB.ASUMUOW so that you can add those DB2 CPU times
               to the CICS CPU times with no overlap.

Change 25.053  Variable PCTCPUBY greater than 100% in PDB.ASUMCEC, but
VMXG70PR       only in hour intervals when LPARs were started/stopped,
Apr  5, 2007   and only if the DURATM of the last LPAR (alphabetically)
               was less than the full hour.  DURATM was intended to be
               set to CECINTRV, but MXG set it only for FIRST.SMF70GIE;
               it was then being output from the DURATM of that last
               LPARNAME. DURATM=CECINTRV is now set unconditionally.
   Thanks to David Bixler, FISERV, USA.
   Thanks to Randy Shumate, Lexus-Nexus, USA.

Change 25.052  Support for TDSLink Version 630 adds new ZCOST datasets
EXTDS16        from subtypes 16x, 17x, 18x and 19x:
EXTDS17           dddddd    dataset   description
EXTDS18           TDS16     TDSL16    ZCOST CPC
EXTDS19           TDS17     TDSL17    ZCOST LPAR
IMACTDSL          TDS18     TDSL18    ZCOST SYSPLEX
VMACTDSL          TDS19     TDSL19    ZCOST SYSPLEX/CPC
VMXGINIT
Apr  5, 2007

Change 25.051  Change 24.116 reported NRIFACPU for z990/2084 CPUTYPE was
VMAC7072       not countable - SMF70CIN='ICF' in LPARNAME='PHYSICAL' in
Apr  6, 2007   RMF 70 records instead of 'IFA' - and created the macro
               variable CECIFANR so you could set NRIFACPU if needed.
               Now, Al has found a way using the non-PHYSICAL-LPARNAME
               segments (that do have SMF70CIN='IFA' for IFAs!) to count
               and populate variable NRIFACPU for z990s with IFAs.
              -New field SMF70CTN, the total count of engines of that
               SMF70CIN type (CP,IFL,etc), in the CEC was incorrectly
               INPUT, but it was not kept nor used. It still is not used
               for NRxxxCPU in ASUM70PR, but now it is input correctly
               and kept in PDB.TYPE70PR dataset.  It will have the same
               value in all obs of that engine type, so a 27-engine CEC
               will have SMF70CTN=27 in all obs with SMF70CIN='CP', both
               in both the LPARNAME='PHYSICAL' and LPARNAME='real' obs.
   Thanks to Al Sherkow, I/S Management Strategies, USA.

Change 25.050  Support for CrossSysplexManager user SMF record (Skill
EXCSMDDN       Software) creates two new datasets:
EXCSMJOB         CSMDDN     CSMDDN    CROSS SYSPLEX DDNAME
IMACCSM          CSMJOB     CSMJOB    CROSS SYSPLEX JOB
TYPECSM
TYPSCSM
VMACCSM
VMXGINIT
Apr  4, 2007
   Thanks to ???, ???, Italy.

Change 25.049  Format $MGSASPR, which maps SAS Procedure Name in the SAS
FORMATS        "USER" SMF record, has new QUANTREG and ROBUSTRE values
Apr  2, 2007   added for SAS STAT product.
   Thanks to Len Rugen, University of Missouri, USA.

Change 25.048  Corrections to MXG 25.02 included correction for the
BLDSMPDB       libname=PDB operand, the CALL SYMPUT('SRTDSN',SORTDBY)
VMXGSORT       spelling, and logic related to VGETSORT invocation.
Apr  1, 2007   References to WEEK1 were replaced with WEEK.
Apr 17, 2007   New SORTEDBY= option can be set to sortedby=no to bypass
               the requirement for input weekly/daily datsets to be
               sorted. 17Apr07: Null input library protected with msg.
   Thanks to Loren Mitchell, Los Angeles Couty Office of Education,USA.

Change 25.047 -Support for APAR OA19502, adds SMF14KET, the Key Exchange
FORMATS        Time (Encryption Overhead).  This time is only recorded
VMAC1415       in SMF 15 output records and only for a CLOSE processing
Apr  1, 2007   after a non-parallel OPEN writing file sequence one from
               the loadpoint.  Otherwise, SMF14KET is zero.  This is the
               elapsed "wall clock" duration, and is NOT a CPU time
               metric.  A "non-parallel OPEN" is when the parameter list
               passed to OPEN includes only 1 DCB or ACB.
              -New $MG014CD format decodes the SMF14CD1 and SMF14CD2
               Encoding Mechanisms:
               L:LABEL - the key label itself is to be stored as part
                         of the EEDK structure on the tape cartridge.
               H:HASH  - "Public Key HASH" - a hash of the public key
                         referenced by the key label is to be stored
                         on the cartridge rather than the key label
                         itself. Storing the hash value rather than the
                         key label itself allows for greater flexibility
                         when tapes are exported to another location,
                         especially if that location may be using a
                         different key label (than the originating site)
                         to refer to the same key.
   Thanks to Jack Muehl, CitiGroup, USA.

Change 25.046  Cosmetic.  INVALID DATA FOR MDY message and hex dumps of
VMACSTC        the first two instances are printed when the LSBTIME date
Mar 31, 2007   field contains zeros.  Now, LSBTIME is only created when
               the data exists.  These records with no date also have
               zeros in all other fields, and so the defective records
               were not output into the STCLMU dataset, either before or
               after this change.
   Thanks to David Kaplan, Depository Trust, USA.

Change 25.045  Variable TTTOD was not kept in TPFDH, TPFKC, or TPFSB
VMACTPF        datasets, but were referenced in BY statment in _STPFKC.
Mar 30, 2007   Now, that retained variable is kept in those datasets.
   Thanks to Chris Weston, SAS Institute, USA.

Change 25.044  New intervals (obviously for TRENDing, and not tactical!)
VMXGDUR        of QUARTER, SEMIANN, and ANNUAL will create summary data
VMXGSUM        when those arguments are used.  The code change was in
Mar 28, 2007   VMXGDUR; only comments were changed in VMXGSUM.
   Thanks to Nalini Elkins, Inside Products, USA.

Change 25.043  Support for z/VM 5.3.
EXIODHPC       (Apr 12 changes were moved Apr 17, were not in 25.03.)
EXIODHPP
EXIODLPT
EXMTRHPP
EXPRCAPC
EXPRCAPM
EXPRCDIA
EXPRCINS
EXSAMSDT
EXSCLSCA
EXSTOSCS
EXSTOSXG
EXSTOSXP
EXSYTLCK
EXSYTSPT
EXSYTSXG
EXSYTSXP
EXVNDLSD
EXVNDLSU
EXVNDSES
IMACVMXA
VMACVMXA
VMXGINIT
Mar 28, 2007
Apr 12, 2007

Change 25.042  Enhancement to support HSM records with different SMF IDs
VMACHSM        perhaps from different systems.  HSM writes 2 SMF records
Mar 28, 2007   with and ID and ID+1 architecture, and MXG defined two ID
               macros that you tailored with your SMF ID numbers:
                  MACRO _IDHSMDS  224   %
                  MACRO _IDHSMDS1 225   %
               But I have redefined the second ID macro to now be
                  MACRO _IDSHMDS1  _IDHSMDS+1   %
               which has no impact on your existing IMACKEEP tailoring,
               but now, you could use this logic to redefine them:
                  MACRO _IDHSMDS  512 OR (ID=224 AND SYSTEM='SYS1')
                                      OR (ID=229 AND SYSTEM='SYS2') %
                  MACRO _IDHSMDS1 512 OR (ID=225 AND SYSTEM='SYS1')
                                      OR (ID=230 AND SYSTEM='SYS2') %
               and MXG will process both pairs of HSM records.
               This works because the reference syntax in VMACHSM is
                 IF _IDHSMDS THEN DO;    IF _IDHSMDS1 THEN DO;
   Thanks to Chuck Hopf, Bank of America, USA.

Change 25.041  Support for CICS/TS 3.2 (INCOMPATIBLE).
EXCICDHD      -Major Change: All CICS CPU times are expanded to 8 bytes
EXCICISR       with significant increase in captured TASCPUTM possible.
EXCICLDB      -CICS Transaction Segments in SMF 110 subtype 1 can be
EXITCICS       compressed; the new MXG member EXITCICS is the ASM code
IMAC110        to create a SAS Infile Exit (named "CICS") that will read
UTILEXCL       the compressed (or uncompressed) records.  To install,
VMAC110        you ASM and LinkEdit the EXITCICS code into a load module
VMXGINIT       that you put in a load library you add to the //STEPLIB,
Apr  7, 2006   and tell MXG using  %LET SMFEXIT=CICS;  in your //SYSIN.
Sep 19, 2006   Test records were reduced from 32K to about 6K bytes, but
Oct 14, 2006   only the 110-1 records are compressible.
Mar 27, 2007  -UTILEXCL updated with new CICSTRAN fields added in 3.2.
Apr 12, 2007  -Updates for the changed Statistics Subtypes:
Jun 29, 2007           (INCOMPATIBLE except for DST, DSR, and MNG):
                       STID   DSNAME    New Variables added.

                      -  2       SMS
                              ==> Nothing New in DSECT.
                      - 64    CICDST   DSTCIUHI DSTCIULO DSTNIUHI
                                       DSTNIULO
                              ==> But 20 bytes added are not doc'd.
                      - 65    CICDSR   DSRCIULO DSRCIUHI
                              ==> But 20 bytes added are not doc'd.
                      - 67    CICFCR   DFHA17DS DSECT.
                              ==> Nothing New in DSECT
                      - 74       MQG   MQ Connection Statistics Global
                                       New
                              ==> DFHMQGDS DSECT does not exist
                      - 81       MNG   New Compression Variables
                              ==> DFHMNGDS DSECT is not current.
                      -109       ISR   IP Connection (Resource)
                                       New
                              ==> DFHUSRDS DSECT does not exist
                      -117       SJG
                              ==> Nothing New in DSECT.
                      -117       SJR
                              ==> Nothing New in DSECT.
               MXG 25.03 contained the critical compatibility changes,
               but MXG 25.07 contains the full support for compressed
               ID=110 Subtype=1 CICS/TS 3.2 SMF records.

Change 25.040  Support for APAR OA20077, adds UNCOMPRESSED tape device
VMAC21         read/write bytes to TYPE21/PDB.TAPES, complementing the
ASUMTAPE       existing COMPRESSED tape channel read/write bytes that
Mar 21, 2007   have always been in SMF type 21 records:
Apr 10, 2007     BYTEREAD='COMPRESSED*CHANNEL*BYTES*READ'
                 BYTEWRIT='COMPRESSED*CHANNEL*BYTES*WRITTEN'
                 SMF21DBR='UNCOMPRESSED*DEVICE*BYTES*READ'
                 SMF21DBW='UNCOMPRESSED*DEVICE*BYTES*WRITTEN'
              -Apr 10: ASUMTAPE updated to keep SMF21DBR/SMF21DBW.

Change 25.039  Support for AIX Tapas-C performance data creates these
EXAXTCPS       datasets:
EXAXTCPU         dddddd     DATASET   Description
EXAXTDSK         AXTCPS     AIXTCPUS  CPUS
EXAXTFS          AXTCPU     AIXTCPU   CPU INTERVAL
EXAXTFSS         AXTDSK     AIXTDSK   DISK
EXAXTIP          AXTFS      AIXTFS    FS
EXAXTIPS         AXTFSS     AIXTFSS   FS-S
EXAXTLAN         AXTIP      AIXTIP    IP
EXAXTLPA         AXTIPS     AIXTIPS   IPS
EXAXTMEM         AXTLAN     AIXTLAN   LAN
EXAXTNFS         AXTLPA     AIXTLPA   LPARS
EXAXTPGI         AXTMEM     AIXTMEM   MEM
EXAXTPGS         AXTNFS     AIXTNFS   NFS
EXAXTPRO         AXTPGI     AIXTPGI   PAGSP-S
EXAXTSYC         AXTPGS     AIXTPGS   PAGSP
EXAXTSYI         AXTPRO     AIXTPRO   PROC
EXAXTTCP         AXTSYC     AIXTSYC   SYSCALL
EXAXTUDP         AXTSYI     AIXTSYI   SYSIO
EXAXTWLM         AXTTCP     AIXTTCP   TCP
EXAXTWLS         AXTUDP     AIXTUDP   UDP
VMACAIXT         AXTWLM     AIXTWLM   WLM
IMACAIXT         AXTWLS     AIXTWLS   WLMS
VMXGINIT
TYPEAIXT
TYPSAIXT
Mar 16, 2007

Change 25.038  TMON/DB2-created SMF 101 Subtype 1 caused INPUT STATEMENT
VMACDB2        ERROR because the record is defective; LENQPAC=390 but
Mar 16, 2007   there were only 358 bytes of data in the segment.  This
               INPUT EXCEEDED error is now protected, but the data in
               second and subsequent observations in DB2ACCTP dataset
               will be trashed.
   Thanks to Robert McElhaney, Texas Workers Commission, USA.

Change 25.037  SORTEQUALS option should NOT have been added to CONFIGV8,
CONFIGV8       (MXG 25.02 only, Change 25.028) as that option was added
Mar 16, 2007   in SAS V9, and did not exist in SAS V8.
   Thanks to Alan Gray, CareFirst, USA.

Change 25.036  INPUT EXCEEDED for SMF 1415 in MXG 24.24, when subtype=7
VMAC1415       encrypted tape segment exists; line 743 should have been
Mar 14, 2007   -130 and not -32.  And now, with data, I can see that the
               Encoding Mechanism Key 1 and 2 fields, SMF14CD1/SMF14CD2
               actually contain EBCDIC characters (L, H), although IBM
               still has not answered my queries as to how to decode the
               field or what it contained.  Also, the Key Label 1/2,
               SMF14KL1/KL2 are now FORMATed $HEX128.
               See Change 24.047 additions in MXG 25.03.
   Thanks to Douglas C. Walter, Citicorp, USA.

Change 25.035  Support for SMF 119 for z/OS 1.8 (INCOMPATIBLE, because
VMAC119        MXG INPUT statements for subtype 70 were missing OFF119xx
Mar 14, 2007   to relocate the pointer).  New fields were added to many
               datasets by z/OS 1.8, as noted in the comments.
   Thanks to Marty Rhodes, The Hertz Corporation, USA.

Change 25.034  Support for CopyCross SMF event record, with mounted and
EXCOPYCR       unloaded datetimestamps, VOLSER, data volumes in and out,
IMACCOCR       in the CPYCROSS dataset.  CopyCross was formerly an EMC
VMACCOCR       product, but now is a Diligent product which is named
TYPECOCR       VTF Mainframe 2.1.0 (Virtual Tape Facility Mainframe
TYPSCOCR       Systems.
VMXGINIT
Mar 14, 2007
   Thanks to Brian Felix, Wachovia, USA.
   Thanks to James Bentley, Wachovia, USA.
   Thanks to Lana McCormick, Wachovia, USA.

====== Changes thru 25.033 were in MXG 25.02 dated Mar 10, 2007=========

Change 25.033  Support for ASMTAPEE assembly under z/OS 1.8.  IBM has
ASMTAPEE       deleted fields in internal macro definitions that caused
Mar 10, 2007   "NOT FOUND" errors when assembled under z/OS 1.8.  This
               revision only removed those references, but had no impact
               on the actual execution of MXGTMNT.

Change 25.032  RMF-like "CPU Activity" report was incorrect when IRD was
ANALRMFR       active (ONLINE TIME, MVS BUSY TIME, CPU NUM), in the
Mar 10, 2007   "Partition Data" report, WGT PROCESSOR NUM, LOGICAL
Apr 10, 2007   Processors effective were incorrect, and in the "LPAR
               Cluster" report, LPARCPUS was incorrect.
              -Missing comma in 25.02 after MAX=NRICFCPU ... , added.
   Thanks to David Klein, DOITT City of New York, USA.

Change 25.031  Variable CA7INID was not kept, because it was misspelled
VMACTPMX       as CAC7IDID in the KEEP list.
Mar  7, 2007
   Thanks to Scott Barry, SBBWorks, Inc., USA.

Change 25.030  TYPE42DS variables from Data Set I/O Statistics Section,
VMAC42         input when OFFDSIO is non-zero for this observation:
Mar  7, 2007      AVGCONMS AVGCUQMS AVGDAOMS AVGDISMS AVGIOQMS AVGPNDMS
                  CACHCAND CACHHITS CACHRATE CHITPCT  CIOPCT   DASDMPL
                  DASDRATE DCMEPCT  HITPCT   ICLS     IOCOUNT  MAXRSPTM
                  MAXSRVTM RCIPCT   RDHITPCT RESPTIME RLCS     SEQIOS
                  WRITCAND WRITHITS
               were incorrectly carried forward into the next physical
               TYPE42DS observation, if it did not have a Data Set I/O
               Statistics Section.  Now, IF OFFDSIO=0, those variables
               are set missing.  Note that these variables TYPE42DS
                  S42AMSRB S42AMSRR S42AMSWB S42AMSWR S42AMDRB
                  S42AMDRR S42AMDWB S42AMDWR S42AMZRB S42AMZRR
                  S42AMZWB S42AMZWR
               are only populated when the Access Method Statistics
               Section exists, i.e., when OFFDSAM is non-zero.
               I do not know why some DSNAME observations contain both
               or only DSIO, or only DSAM data, but this sample had:
                  DSIO and DSAM       15808
                  DSAM only             914
                  DSIO only            6112
   Thanks to Diane Eppestine, AT&T, USA.

Change 25.029  The individual IORATEn per-engine I/O rates in PDB.TYPE70
VMAC7072       were divided by DURATM, but IBM Reports use the SMF70ONT
Mar  7, 2007   UpTime as the denominator, so the IORATEn variables are .
               now changed to match the RMF Reports.  The total IORATE
               variable, however, is NOT changed, and is still divided
               by the DURATM, to be consistent with total IORATE data
               in TYPE74, TYPE78, and other data sources that don't have
               and idea about individual CPU engine up times.
   Thanks Bruce Widlund, Merrill Consultants, USA.

Change 25.028  Changing the SAS default option to NOSORTEQUALS created
AUTOEXEC       incorrect values in PDB.ASUM70PR/PDB.ASUMCEC datasets for
CONFIGV9       DURATM,PCTCPUBY,plus, but there was no error message.  A
VMXG70PR       code change in MXG 24.07 in ASUM70PR is the real culprit,
VMXGPRAL       but the code works perfectly with the default SORTEQUALS.
UCOMPSOE       Please run PROC OPTIONS to confirm you have SORTEQUALS.
Mar 10, 2007   If not, then you should use this IMMEDIATE CIRCUMVENTION:
Mar 13, 2007     Change the option for the MXG job that runs ASUM70PR.
Mar 16, 2007     You can change the option:
                    - on the // EXEC statement:
                   //MXGSTEP EXEC MXGSASV9,OPTIONS='SORTEQUALS'
                 or you can change the option
                    - in your SYSIN stream, with an OPTIONS statement;
                   //SYSIN DD *
                     OPTIONS SORTEQUALS;
                     %INCLUDE SOURCLIB(....);

               I didn't really know any of this stuff until this error:

               When SORTEQUALS is specified, SAS ensures that the input
               order is preserved when BY variables have equal values.
               In the SPLIT70 redesign, I added logic that depended on
               LCPUADDR to be ascending order, but I failed to made sure
               it was; with SORTEQUALS, since the original PDB.TYPE70PR
               was in LCPUADDR order, the new logic worked just fine.

               However, when NOSORTEQUALS is specified, you have told
               SAS to not spend any more resources to preserve the input
               order, and, in this case, the output data was no longer
               in LCPUADDR order when NOSORTEQUALS was specified.

               The MXG coding error is now corrected, by adding LCPUADDR
               to the BY LISTs for the CPS70PRn sorts, so the ASUM70PR
               logic works with SORTEQUALS or NOSORTEQUALS.
              -However, now that I have seen this error, and even though
               it's extremely unlikely to occur elsewhere in MXG code,
               since MXG has always used only the SORTEQUALS option, I
               have added SORTEQUALS to CONFIGV9 and AUTOEXEC members,
               to protect for any other exposures.  At worst, changing
               NOSORTEQUALS to SORTEQUALS might make the SORT use a few
               more CPU cycles and do a few more I/O.
              -Since the error results in very bad values, it looks like
               most sites still have the SAS default of SORTEQUALS, or
               this error would have surfaced during earlier testing.
              -Summary of MXG setting of SAS options:
               For z/OS execution of MXG, CONFIGV9 sets MXG SAS options:
                  MXG's CONFIGV9 member still specifies NOTHREADS due to
                    old SAS 9.1.2 errors; see Change 22.207.  However,
                    THREADS is primarily useful in non-z/OS; running
                    multiple z/OS jobs in parallel on multi-engine boxes
                    is essentially what THREADS is all about!
                  MXG's CONFIGV9 member now specifies SORTEQUALS.
               For ASCII execution, AUTOEXEC sets MXG SAS options:
                  MXG's AUTOEXEC member has never specified THREADS, so
                    you get your site's default.
                  MXG's AUOTEXEC now specifies SORTEQUALS;
              -An unrelated, harmless DIVIDE BY ZERO message if PARTNCPU
               was zero is now protected.  Only occurred with old 1999
               test data that was itself defective, but the exposure is
               corrected.
              -The VMXGPRAL ("Print ALL") utility was revised to invoke
               PROC COMPARE on all datasets in two libraries.
              -Why choose NOSORTEQUALS?  It might save a few CPU cycles
               and a few I/Os, since it just merges the final sort segs,
               instead of sorting, but, according to informal feedback
               from SAS folks, it's only really required if you are use
               the THREADS option on ASCII platforms where you have more
               than one CPU.  So what to do if your SAS folks demand you
               don't change NOSORTEQUALS?  The new UCOMPSOE utility will
               run two PDB-builds, with NOSORTEQUALS & SORTEQUALS, and
               then uses the (enhanced) VMXGPRAL to PROC COMPARE each
               datasets in the two PDB's for differences. Unfortunately,
               PROC COMPARE will report all datasets with different sort
               order, even though the two dataset's values are the same.
               You use the PROC COMPARE output to identify differences,
               and then use PROC MEANS N MIN MAX SUM DATA= OLD/ NEW to
               verify that the numeric contents are the same.
               For example, MXG 25.02 found these datasets were built
               in different order with the two options in effect:
                  TYPE70 TYPE70PR TYPE74CO TYPE74DU TYPE74PA
                  TYPE74ST TYPE77
               but the PROC MEANS showed no actual value differences.
               Mar 16: Find four lines with BWM.  Delete the line which
               has PROC PRINT and printed lots of useless output.
   Thanks Salis Gross Curdin, Credit-Suisse, SWITZERLAND.
   Thanks to MP Welch, SPRINT, USA.

Change 25.027  JCLTESTx only. INPUT DATASET PDBMONIDBDS DOES NOT EXIST
VMACMONI       error in no-longer-used VMACMONI due to missing second
Mar  7, 2007   period; the correct syntax is
                    MACRO _LMONDBD &PMONDBD..MONIDBDS %
   Thanks Urs Kugler, Zurich Insurance Company, SWITZERLAND.

Change 25.026  Cosmetic.  DIVISION BY ZERO message if IORATE was zero;
ANALFIOE       now, that denominator is tested prior to the division.
Mar  6, 2007
   Thanks to James Majeski, AT&T, USA.


====== Changes thru 25.025 were in MXG 25.01 dated Mar  5, 2007=========

Change 25.025  Support for APAR OA19453, which adds a new 4-byte counter
VMAC7          (SMF7NROX) that is now used instead of the 2-byte SMF7NRO
Mar  6, 2007   count of lost SMF records when SMF 7 data lost record is
               written.  The MXG Variable LOSTRECS is populated from the
               new SMF7NROX field if it is present and SMF7FL1 bit is
               set that NROX is populated.

Change 25.024  INPUT STATEMENT EXCEEDED for RACF 80 WHEN (301) Extension
VMAC80A        segment for OMVS and PROXY, but neither had any of the
Mar  2, 2007   expected data segments.  Now, LENLEFT is calculated and
               tested prior to the INPUT.
   Thanks to Robert Sample, Atlanta Journal-Constitution, USA.

Change 25.023  The two examples that construct datetime ranges from one
ANAL16         dataset, to build a format for selection from a second
ANAL30         dataset used DATETIME21.2 characters in the format, but
Mar  2, 2007   that failed when months were crossed due to month names.
               This redesign uses PUT(datetime,13.2) to create the text
               (number of seconds since 1/1/1960) for the format item.
               Less pretty when printed, but it will always work.
   Thanks to Tom Elbert, Assurant, USA.

Change 25.022  The RMF III ENC extension was usually not INPUT because
VMACRMFV       the ENCG3XEO offset does not point to the extension that
Mar  1, 2007   was added to the end of the record ASMRMFV creates.  That
               extension is located at ENCG3XEO=ENCG3DEO+ENCD3DEL which
               is now used to INPUT Service and Reporting Class
               information from the ENC Extension.
   Thanks to Brenda Rabinowitz, Merrill Lynch, USA.

Change 25.021  UTILEXCL messages are enhanced if the IMACICEZ EZA fields
UTILEXCL       are found, to point you to read the text of Change 24.033
Mar  1, 2007   because there are multiple EZA segments created, and that
Apr 17, 2007   change text has tailoring instructions.  IMACICE2 message
               for EZ2 fields now also point you to read Change 24.033.

Change 25.020  The QWS3xxxx and QWS4xxxx variables are labeled IRLM and
VMACDB2        DDF (DIST), but the data could be reversed, with the DIST
Feb 28, 2007   data values in the QWS3xxxx variables and IRLM in the 4th
               set of variables, because IBM has changed which data is
               in which segment.  This change tests the QWSnPROC name to
               determine which data is present, so that the QWS3xxxx are
               now ALWAYS the IRLM and QWS4xxxx is now ALWAYS the DDF
               data, so the data always matches the variable labels, no
               matter which segment had that ASID's data.  Variables
               QWSnASCB,ASID,EJST,PROC,PSRB,SRBT,QWSnZSRB are created
               in PDB.DB2STATS from QWSA segments in SMF 100 records.
   Thanks to Rachel Holt, Fidelity Systems, USA.
   Thanks to Lori A. Masulis, Fidelity Systems, USA.

Change 25.019  The RACF 0900-series IRRHFSU Unix System Services unload
VMACRACF       fields all contain EBCDIC, rather than ASCII text.  The
Feb 28, 2007   test data had been converted to ASCII when it was sent;
               all of the $ASCII inputs are changed to $EBCDIC now.

Change 25.018  Support for eleven more optional CICS EZA02 fields with
IMACICE2       these similar names:
VMAC110            EZA0TCON EZA0TSTA EZA0TINV EZA0TDIT EZA0TDIP
Feb 28, 2007       EZA0TGIV EZA0TSEC EZA0TA08 EZA0TA09 EZA0TA10
Apr 16, 2007       EZA0TA11
               because I assumed they were now the default set of fields
               in that optional segment.  However, as I have not seen
               them at other sites, I suspect they were accidentally
               created at this site, and thus not likely to exist in
               your EZA02 fields.  As documented in Change 24.033, you
               must look at the output report from UTILEXCL to see what
               EZAxxxxx fields exist in your data, and then EDIT the
               IMACICE2 to only INPUT and LABEL those in your records.
               Text was revised Apr 16, 2007.  No code change.
   Thanks to Paul C. Gordon, Bank of America, USA.
   Thanks to Peter Krijger, ANZ National Bank, NEW ZEALAND.

Change 25.017  EXITCICS is the Assembly code for a SAS INFILE EXIT that
EXITCICS       will read and uncompress SMF 110 subtype 1 records as
Feb 28, 2007   they are read.  You assemble/link edit the ASM code in
Mar  7, 2007   the EXITCICS member to create a load module CICSIFUE in
MaR 10, 2007   a Load Library, concatenate that DSNAME to //STEPLIB DD
               in your MXGSASV9 JCL procedure, and then tell MXG you
               have the INFILE exit installed, using the (new in 24.24)
               SMFEXIT macro variable:
                  //SYSIN DD *
                  %LET SMFEXIT=CICS;
                  %INCLUDE SOURCLIB(TYPE110);
               and MXG will read compressed and/or uncompressed records
               transparently.  You can alternatively use ENGINE=CICS in
               your FILENAME statement to invoke the INFILE exit.
                 - The LOAD MODULE must be named CICSIFUE.
                 - The INFILE EXIT/ENGINE name is CICS.
               You need EXITCICS dated Mar 7. the Feb 28 didn't work.
   Thanks especially to Rich Anderson, SAS Technical Support, USA, for
          his extensive testing and investigation that made this work!

Change 25.016  Cosmetic.  Variable SMFTIME was added to EXCLUDED FIELDS
VMAC110        FOUND error message to identify when the record was
Feb 27, 2007   written, so it could be compared with the time when the
               CICS Dictionary Records had been written.
   Thanks to Shirly Fung, HSBC, HONG KONG.

Change 25.015  ERROR: BY VARIABLE BLKBINST IS NOT ON INPUT WEEK.BLKBERRY
VMACNTSM       is an INCOMPATIBILITY created by MXG Change 24.162, when
Feb 25, 2007   the new variable BLKBINST was added to the BY list for
               the NTSM dataset BLKBERRY.  The error only occurs in your
               WEEKly or  MONTHly PDB build, and only when you have one
               or more PDBs that were created with the prior MXG version
               (i.e., the variable does not exist in the old datasets).

               Mini-tutorial on BY list variables in MXG:
               Adding a new variable to the BY list for an existing MXG
               dataset is done ONLY when it is absolutely needed.  The
               primary reason MXG has a BY list for each dataset is to
               protect for duplicate records in the input file, When MXG
               uses the NODUP option in PROC SORTing from the "WORK" to
               the "PDB" library.  The BY list must be complete so that
               duplicate observations are adjacent.  A secondary reason
               is for retrieval performance; by creating datasets in
               sorted order, an extra SORT can be avoided in your report
               programs.

               Error correction techniques:
              -Fix it permanently now, by adding the new variable to all
               of the old, existing DAYly and/or WEEKly PDBs that will
               be needed to build the new WEEKly and/or MONTHly PDBs,
               creating the variable with blanks for Character or a
               missing value for Numeric variables.  You will need to
               look up the variable in the DOCVER member to find its
               DATASET, then the variable name in the listing to find
               the CHAR/NUM type and the LENGTH of the new variable,
               and then add that variable to all of the prior-built PDBs
               using this syntax:
                 For a character variable:
                   DATA OLDPDB.BLKBERRY;
                    SET OLDPDB.BLKBERRY;
                    LENGTH BLKBINST $32;
                    BLKBINST=' ';
                 or for a numeric variable:
                   DATA OLDPDB.BLKBERRY;
                    SET OLDPDB.BLKBERRY;
                    LENGTH BLKBNUMR 4;
                    BLKBNUMR=.;
                 You will need to point "OLDPDB" to one of the prior PDB
                 libraries that does not contain the new variable and
                 run the datastep, then change "OLDPDB" to the next PDB,
                 until all of the INPUT PDBs (dailies for WEEKBLD, or
                 weeklies and dailies for MONTHBLD).
                   And if the OLDPDB is a data library on TAPE media,
                   it gets more complicated; you cannot have a TAPE
                   PDB open for both INPUT and OUTPUT, and you cannot
                   replace-in-place a dataset in a Tape media library,
                   so you would need to use this syntax for each "PDB":
                     PROC DELETE DATA=WORK._ALL_;
                     PROC COPY IN=OLDTAPE OUT=WORK;
                     DATA WORK.BLKBERRY;
                      SET WORK.BLKBERRY;
                      LENGTH BLKBINST $32;
                      BLKBINST=' ';
                     PROC DELETE DATA=OLDTAPE._ALL_;
                     PROC COPY IN=WORK OUT=OLDTAPE;
               Once you have added the new variable to all of the INPUT
               PDB libraries, you can then rerun the WEEKBLD/MONTHBLD.
              -Fix it temporarily by redefining the _Bdddddd macro so it
               does not reference the variable for the WEEKBLD/MONTHBLD
               job:
                 -Look in the IMACxxxx member to find the "dddddd" text
                  for the dataset with the error.  In IMACNTSM, it lists
                  that dddddd=NTBLKB for BLKBERRY dataset.
                 -Then, look in he VMACxxxx member for _Bdddddd to find
                  the BY list variables.  In VMACNTSM, _BNTBLKB has
                     MACRO _BNTBLKB DOMAIN SYSTEM BLKBINST STARTIME %
                 -Then, in the //SYSIN for the WEEKly/MONTHly job, you
                  would redefine the _Bdddddd macro with that variable
                  removed:
                     //SYSIN DD *
                       %LET MACKEEP=
                         MACRO _BNTBLKB DOMAIN SYSTEM STARTIME %
                       ;
                       %BLDNTPDB(your arguments for WEEKly/MONTHly);
               Since the new variable does exist in one of the INPUT
               data sets, it will be propagated into the new WEEKly
               PDB, so you would only need to use this circumvention for
               a maximum of five weeks, and then all of your Weekly PDBs
               will contain the new variable, and the redefintion of the
               MACRO _Bdddddd can be removed from your Monthly Job.

               However, this circumvention might fail due to NOTSORTED
               condition, (only if the "PDB" dataset had more than one
               value in BLKBINST variable); in that case, you would need
               to re-SORT those datasets using the _Sdddddd dataset SORT
               macro with the new _Bdddddd BY list definition:
                   //SYSIN DD *
                     %INCLUDE SOURCLIB(VMACNTSM);/*get _Sdddddd def*/
                     %LET MACKEEP=
                       MACRO _BNTBLKB DOMAIN SYSTEM STARTIME %
                     ;
                     DATA WORK.BLKBERRY;
                      SET PDB.BLKBERRY;
                     _SNTBLKB
               NOTE BENE: It is always STRONGLY recommended that you
               install a new version of MXG on the first day of your
               week, so that all of that week's daily PDBs are built
               with the same MXG Version.  It just works better!
   Thanks to Terry Hein, ECOLAB, USA.

Change 25.014  No observations were output in NDMRT because of a missing
VMACNDM        end of comment */ text.
Feb 23, 2007
   Thanks to Mike Creech, Fidelity National Information Services, Ind.

Change 25.013  The PCTMVSBY in PDB.TYPE70PR when IRD was active and the
VMAC7072       engine was not online for the entire interval were wrong;
Feb 23, 2007   This also impacted the SHORTCPS value as well.  Now, the
               SMF70ONT is used instead of DURATM for PCTMVSBY.
   Thanks to John A. Doan, T-SYS, USA.

Change 25.012  INPUT STATEMENT EXCEEDED RECORD for IBM ID=99 Subtype=1
VMAC99         because MXG thought there would always be a System State
Feb 21, 2007   Information Section, but this record had none. The offset
               and segment length fields were populated, but the number
               of segments contained zero.  Now, MXG tests segment count
               non-zero before reading that segment, and before OUTPUT
               of the TYPE99_1 dataset.  This record contained Trace
               Table entries, so was thus a legitimate record.
   Thanks to Lawrence Jermyn, Fidelity Systems, USA.
   Thanks to Warren Cravey, Fidelity Systems, USA.

Change 25.011  IBM Virtualization Engine TS7700 Series Statistics data
TYPEBVIR       can now be created as a RECFM=U or RECFM=VB History file,
TYPSBVIR       or those data can be written to SMF; this change supports
VMACBVIR       both the SMF and History file records.  By default, MXG
Feb 19, 2007   reads SMF data, but you must add  MACRO _IDBVIR nnn % in
Feb 26, 2007   IMACKEEP tailoring member to define your SMF record ID.
               To process the History File, change _SMF to _HISTFI in
               your TYPEBVIR or TYPSBVIR member.  The Point in Time
               subtypes (01,02,10,11) are not written to the SMF file.

Change 25.011  The preliminary ANALMQMC member should no longer be used;
ANALMQMC       it was preliminary and was replaced by revisions to the
Feb 21, 2007   ASUMUOW program.  The dataset MQMUOW is no longer created
               by ANALMQMC, as that logic is in a comment block, and now
               only ASUMUOW is executed with ANALMQMC is executed.
               Comments in the member were revised.
   Thanks to Harald Seifert, HUK-COBERG, GERMANY.

Change 25.010  Support for TELEVIEW Release 4.4 was already in place;
VMACTELE       there were no changes to their SMF record.
Feb 21, 2007
   Thanks to Lawrence Hogg, NYU, USA.

Change 25.009  The new ERASEPDB option was not set to a default; it is
BLDSMPDB       now set to YES.
Feb 15, 2007
   Thanks to Tom Kelman, Commerce Bank of Kansas City, USA.

Change 25.008 -In IMACICOB, OMDBDB2LN should have been spelled OMBDB2LN.
IMACICOB      -In IMACICOM, QMMLN should have been spelled OMMQLN.
IMACICOM
Feb 15, 2007
   Thanks to Tom Kelman, Commerce Bank of Kansas City, USA.

Change 25.007  The optional CICS BMC CMRDATA has variables CMDUDATA and
IMACICMR       CMDDBCCP reversed; the correct order is CMDUDATA first.
Feb 15, 2007
   Thanks to Bill Keezer, SAS Institute, USA.

Change 25.006  Support for MXG IMS Log processing for IMS Version 10:
VMACIMS       -For users of TYPEIMS7, members VMACIMS and TYPEIMS7 with
TYPEIMS7       this Change 25.006 (in MXG 25.01) are required, and you
ASMIMSL6       must update the _IMSVERS to 10.0 in IMACIMS7 in your
JCLIMSL6       "USERID.IMSV10.SOURCLIB(IMACIMS7)" tailoring.
Feb 19, 2007  -For users of ASMIMSL6,TYPEIMSA,JCLIMSL6 job stream, you
Feb 27, 2007   reassemble ASMIMSL6 with the IBM IMS V10 macro library to
               create the "USERID.IMSV10.LOADLIB(MXGIMSL6)" for the
               PGM=MXGIMSL6 for your V10 jobstream.
              -Because there is no Version number in IMS log records,
               separate job streams for each IMS version's log file is
               required, so creating V10-only "USERID" and "LOADLIB"
               datasets is required, along with associated JCL DSNAME=
               changes will, unfortunately, also be required.

               Updates were required to support new fields INCOMPATIBLY
               that were inserted in IMS log 07 and 08 records, and new
               variables are created in IMS0708 and IMSSUMRY datasets.
                 There is a new CPU metric, DLREXETM, that is documented
                 as the total CPU time from 08 to 07, but in test data,
                 it was very close to IMSCPUTM in three BMP transactions
                 but on BMP that ABENDed had much smaller DLREXETM than
                 the IMSCPUTM value, so it is somewhat suspect.
               Other IMS log records will be validated shortly.
   Thanks to Curdin Salis Gross, Credit-Suisse, SWITZERLAND.

Change 25.005  SQLServer:Replication objects now have instance names, so
VMACNTSM       KNOWN SORA OBJECT. UNEXPECTED NRDATA message is gone and
Feb 12, 2007   variables SQRSNAME SQRMNAME SQRLNAME SQRDNAME SQRANAME
Feb 19, 2007   are now created.  Labels for four cachxxxx were added.
   Thanks to Bob Gauthier, Albertsons, USA.

Change 25.004  Change 24.159 added TWOHOUR, FOURHOUR, EIGHTHR arguments
VMXGDUR        to VMXGCICI for CICS summarization; those INTERVAL values
VMXGSUM        are now also supported in VMXGSUM and VMXGDUR %macros.
Feb 11, 2007
   Thanks to Tom Kelman, Commerce Bank of Kansas City, USA.

Change 25.003  Variable NREXPOSR is INCOMPATIBLY changed by IBM for HPAV
VMAC74         to contain the accumulated product of UCBs and samples in
Feb  8, 2007   SMF74PSM.  Now, MXG recalculates for HyperPav using:
                 IF HYPERPAV='Y' THEN NREXPOSR=NREXPOSR/SMF74PSM;
   Thanks to Scott Barry, SBBWorks, Inc., USA.
   Thanks to Gilles Lachassagne, CA, FRANCE.

Change 25.002  VMACMWUX in MXG 24.24 was restored from the last changed
VMACMWUX       member from MXG 22.22; somehow, I replaced MWUX with an
Feb  8, 2007   older and archaic member.
   Thanks to Roman Gudz, Penske, USA.

Change 25.001  Correction to NRICFCPU and NRIFLCPU in ASUM70PR/ASUMCEC
VMXG70PR       datasets, if you had more than one.  The MAX= statement
Feb  8, 2007   in line 295 should have been
                    SUM=X NRICFCPU NRIFACPU NRIFLCPU NRZIPCPU;
               The counts in NRIFACPU and NRZIPCPU were correct because
               they are recalculated to be the Average number based on
               those engines UP-time, in case IRD takes control
LASTCHANGE: Version 25.