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

Newsletter FORTY ONE

 /* COPYRIGHT (C) 1984-2005 MERRILL CONSULTANTS, DALLAS, TEXAS */
****************NEWSLETTER=FORTY-ONE************************************









    MXG NEWSLETTER NUMBER FORTY-ONE, September 1, 2002

Technical Newsletter for Users of MXG :  Merrill's Expanded Guide to CPE

                         TABLE OF CONTENTS                          Page

I.   MXG Software Version 20.05.

II.   MXG Technical Notes

III.  MVS Technical Notes

24.  MSU, Million Service Units per Hour, will replace MIPS.
23.  APAR OW56033 for NPM/IP SMF record elimintes the creation of many
22.  APAR OW56001 will provide four zappable fields to customize SMF
21.  New RMF FICON data is not written to SMF by default; IBM default of
20.  TYPE42DS Data Set Statistics with no Statistics Section S42DSIOO=0,
19.  APAR OW55586 officially documents that swap data sets are no longer
18.  APAR OW52583 corrects blank value in SMF30PFL when a step is
17.  APAR OW55564 corrects zero value in SMF70SER (CPUSERnn) in first
16.  APAR OW55359 describes how SMF type 42 subtypes 15-19 (VSAM RLS)
15.  APAR PQ59911 for WebSphere Application Server V4.0.1 for z/OS and
14.  APAR OW53698 z/OS R1.2, ARCHLVL=2, plus reconfigure storage offline
13.  APAR OW47277 discusses in detail internal corrections for problems
12.  APAR OW54399 corrects problems in 64-bit mode at R10 and above that
11.  The new "Z2 mode" of JES2/JES3 INCOMPATIBLY changes the JCTJOBID
10.  "The writing of SMF record 117 is not documented and should have
 9.  APAR PQ57650 reports that RMF Type 79 subtype 15 (IRLM Long Lock)
 8.  APAR OW43846 reports incorrect value for SMF15NTU (variable TTRN in
 7.  APAR OW52822 alters how CLOSE macro options are handled for VSAM,
 6.  Item RTA000016291 responds to a comparison of the 3470 Get requests
 5.  APAR PQ60740 for TCP SMF record (confusingly listed as "TCB SMF",
 4.  APAR PQ58984 documents performance degradation for WebSphere V4.0.1
 3.  APAR OW54176 for OMVS USS fixes storage shortage in the OMVS ASID
 2.  RMF Reports from IBM incorrectly report IOSQ when a SysPlex report
 1.  APAR OW51126 documents that DASD Connect Time for Ficon Connections

IV.   DB2 Technical Notes.

 1.  APAR PQ53472 corrects internal lengths so that data areas for the

V.    IMS Technical Notes.

VI.   SAS Technical Notes.

16.  SAS Technical Note SN-001705 confirms that SAS Version 8.2 has no
15.  On MVS, MXG's CONFIGxx options specify MSGCASE, which overrides the
14.  Quick way to go from a SAS database on MVS to an EXCEL spreadsheet
13.  Support for SAS Version 9.
12.  How many //SORTWKnn DDs are needed for a large sort?  Divide the
11.  Reading a text file (under ASCII SAS) that contains CTRL+Z (Hex 1A)
10.  SAS HotFIX 82BA77 is still Strongly Recommended to correct errors;
 9.  An SMFTIME value of 'EE1B897F0102050F'x, created by Computer Ass
 8.  Required SAS Hot Fix Bundle is 82BX03 for Version 8.2 TS2M0 on MVS.
 7.  A "DOMAIN ERROR" (MVS only thus far) occurs when SAS V8 creates an
 6.  SAS V8.2 with SAS/SHARE can corrupt updated SAS datasets and/or
 5.  V8 COMPRESS=YES and SEQENGINE=V8SEQ compresses tape and disk data
 4.  If character variables that should have lower case values all have
 3.  SAS note SN-001262 reports a problem under unix that we have also
 2.  It turns out it IS possible to reassign the SOURCLIB fileref in
 1.  Under Windows with SAS V8.2, SAS fix 82BA62 corrected this error:

VII.  CICS Technical Notes.

 2.  A MAJOR change in CICS-DB2 Accounting occurs with DB2 Version 6 or
 1.  APAR PQ63141/PQ63143 adds new statistics to type 110 data.

VIII. Windows NT Technical Notes.

IX.   Incompatibilities and Installation of MXG 20.05.
         See member CHANGES and member INSTALL.
X.    Online Documentation of MXG Software.
         See member DOCUMENT.
XI. Changes Log
     Alphabetical list of important changes
     Highlights of Changes  - See Member CHANGES.

      COPYRIGHT (C) 2002 MERRILL CONSULTANTS DALLAS TEXAS USA

I.   MXG Software Version 20.05 is now available.

 1. Major enhancements added in MXG 20.05:

    See CHANGES.

II.  MXG Technical Notes


III. MVS Technical Notes.

24.  MSU, Million Service Units per Hour, will replace MIPS.

    I now believe that the IBM MSU, Million Service Units per hour, will
    replace MIPS, and that the MSU will be the primary metric to express
    CPU hardware capacity and/or workload consumption, whether or not
    MSU is also used for Software Pricing.  MIPS was a constant provided
    by a consulting company to describe your processor.  MSU is also a
    constant, but provided by IBM to describe your processor. For either
    constant, that constant and CPU seconds are used to describe and
    to measure your capacity and your capacity used in MIPS or in MSU.

    And since one MSU is about 5.8 MIPS, if your management still wants
    to see capacity in MIPS instead of MSU, you can just multiply the
    MSU values by 5.8 to report in MSU-based-MIPS.

    Dataset PDB.RMFINTRV reports MSU capacity and usage for each z/OS
    System ("image"); datasets PDB.ASUM70PR and PDB.ASUMCEC provide the
    MSU statistics for each LPAR and for the hardware ("CPC/CEC").

    -These are the important MSU-related variables:

      CECSUSEC - The IBM-supplied hardware constant raw CPU service per
                 CPU_SEC value of this CEC/CPC platform.  E.g. 10081 for
                 a 2064-104.  Multiply by 3600 times the number of CPU
                 engines and divide by a million to get the CPCMSU.

      CPCMSU   - The total capacity of the CEC/CPC in hourly MSU rate.
                 E.g., the above 2064-104 is a 145 MSU platform.

      MSUINTRV - a count, and not a rate, is CPUseconds*CECSUSEC/1000000
                 and should not normally be used, since it is not a rate
                 and MSU's in general are rates.  It is used only for
                 calculations of rates; use only if you must sum counts.

      MSUPERHR - MSUINTRV * 3600 / DURATM  - is the interval count of
                 MSU (extended to an hourly MSU rate if the interval is
                 less than an hour).

      MSU4HRAV - MXG 4-hour rolling average MSU per hour from RMF
                 Interval data.  MXG calculates the value across an IPL,
                 "SPIN"ing the last four hours for tomorrow's input.
                 Always calculated.

      SMF70LAC - IBM 4-hour rolling average of the MSU rate.  Not
                 calculated when Hardware Capped.  Reset at IPL.

      SMF70WLA - The Defined Capacity of the LPAR MSU rate.  Zero if
                 capacity is not defined.  Based on LPAR share and CPC
                 capacity if Hardware Cap.


    -Al Sherkow's excellent research with IBM has found that:

      The WLM measures MSU for its 4-hour rolling average and max values
      based on 10 second samples of "LPAR Effective CPU Time", averaged
      over a five minute period.

      This value is used internally by WLM when managing (i.e.
      "capping") to "Defined Capacity", but those 5-minute data values
      are not written to RMF 70 records.

      SMF70LAC, IBM's 4-hr Average Hourly MSU, contains the most recent
      calculation of the 4-hr average.  It was calculated within the
      last 5 minutes but represents four hours of data from those 5
      minute data values.

      The WLCTool uses SMF70LAC when it exists but also supports data
      from machines running in basic mode, using their existing RMF data
      and reports at the customers SMF interval.

      The Sub Capacity Reporting Tool uses SMF70LAC.

      The SMF 99 subtype 1 record field SMF99_SLAvgMsu has the current
      WLM view of the four hour average in 48 service buckets with the 5
      minute interval data.  The buckets are broken up by service
      accumulated with the partition was capped and while the partition
      was uncapped.

    -MXG can never exactly match the IBM 10-second sampled MSU values
     from WLM 5-minute buckets using RMF interval data, especially for
     the maximum values, but using 15 minute or hour intervals still
     provides very accurate MSU measures, as demonstrated below.  The
     RMFWDM command was issued at 12:43 and is compared to the 15-minute
     RMF interval at 12:30, and with the hour RMF interval starting at
     12:00:

                                                  Hourly MSU Rate
                                             4-hr Average    Maximum

               RMFWDM snapshot                       41        58
               IBM SMF70LAC in 12:30 RMFINTRV        42        43

               MSU4HRAV (RMFINTRV 15-min data)       41.95     44.4
               MSU4HRAV (RMFINTRV hourly data)       40.28
               MSUPERHR (RMFINTRV 15-min data)                 55.4
               MSUPERHR (RMFINTRV hourly data)                 43.8
               IBM SMF70LAC (one hour RMFINTRV)      43        43

               5-min max=58, 15-min max=55, hour max=44, LAC max=43

                 STARTIME MSUINTRV MSUPERHR MSU4HRAV SMF70LAC

                 08:30:00   11.48    45.93    33.93     31
                 08:45:00   13.84    55.37    35.88     33
                 09:00:00   11.08    44.35    37.01     35
                 09:15:00    8.78    35.14    37.57     36
                 09:30:00   12.66    50.55    39.07     36
                 09:45:02   13.16    52.62    40.56     38
                 10:00:03   10.17    40.77    40.91     40
                 10:15:01   10.73    42.94    41.57     40
                 10:30:01   10.88    43.48    42.30     41
                 10:45:02   10.58    42.35    42.99     41
                 11:00:02   11.18    44.65    43.66     42
                 11:15:04   10.93    43.81    44.48     43
                 11:30:02    9.75    38.98    43.78     43
                 11:45:02    7.89    31.58    43.89     43
                 12:00:02    9.55    38.20    43.54     43
                 12:15:02    9.79    39.20    43.18     43
                 12:30:01    6.65    26.61    41.95     42
                    (This system had SMF70WLA=50, CPCMSU=118.92)

                   This LPAR was the 10th LPAR; PDB.ASUMCEC/PDB.ASUM70PR
                   had these values for 10th LPAR's LPn variables:

                      STARTIME  LPALAC   LPAMSU   LPAMSUHR   LPAMSU70
                       12:30       42      6.65      26.62       50

    -MXG'S MSU calculations use the total LPAR CPU time (LPAR Partition
     Dispatch CPU time), because that is the MSU the LPAR really
     consumed, and that is what you should use for (conservative)
     capacity measurement.  But because the CPU Dispatch time is
     slightly larger than the CPU Effective, and because IBM samples the
     Effective CPU to calculate SMF70LAC for WLC Software Charging,
     MXG's MSU4HRAV can be slightly larger than IBM's SMF70LAC (and
     recall that the value in SMF70LAC is a truncated integer).

    -Keith Munford has also observed that:
      -With Defined Capacity and Hard Capping both enabled:
       -The value in SMF70LAC (4-hr average) is zero; IBM has APAR
         OW55509 open internally and LAC should be fixed.  However,
         MXG's MSU4HRAV variable is always valid.
       -The value in SMF70WLA is not the Defined Capacity that you set
        on the HMC Management Console for that LPAR, but instead
        SMF70WLA is the MSU rating of the CPC, weighted by the LCPUSHAR
        for the LPAR:
         Eg:   WLA Set Value = 18    CPCMSU = 119
               LCPUSHAR = 43 (out of 299) = 14.38%
               IBM recorded  SMF70WLA=17  (.1438*119=17.11).
      -With Defined Capacity not enabled but with Hard Capping enabled,
       SMF70LAC is still zero, and SMF70WLA is again the CPCMSU rating
       weighted by its LCPUSHAR:
         Eg:   WLA Set Value = none  CPCMSU = 153
               LCPUSHAR = 85 (out of 400) = 21.25%
               IBM recorded SMF70WLA=33 (.2125*153=32.51).

    -The text of MXG Changes 20.046, 20.043, 19.083, 19.018 and 18.317
     all had something to say about WLA and MSU; some were revised to be
     accurate when read now, and to be consistent with what is now
     known.  See also Changes 20.168, 20.169 for associated MSU notes.

23.  APAR OW56033 for NPM/IP SMF record elimintes the creation of many
     duplicate observations.  As long as you used MXG to sort the data
     in NPMIP01 or NPMIP02 datasets into your PDB, those duplicates were
     automatically removed, but this APAR eliminates their creation.
     16Aug02.

22.  APAR OW56001 will provide four zappable fields to customize SMF
     buffer options (minimum size, expansion increment, etc?).  No date
     set yet for its availability.  15Aug02.
     04Oct02: PTFs now exist, and the text of this APAR has extensive
     documentation of how SMF buffers are allocated and how you can
     prevent loss of SMF data due to "spikes" in SMF data volume.

21.  New RMF FICON data is not written to SMF by default; IBM default of
     NOFCD must be changed to FCD in ERBRMFxx member in SYS1.PARMLIB.

20.  TYPE42DS Data Set Statistics with no Statistics Section S42DSIOO=0,
     have missing values in D42DSIOR thru S42DSMXs are reportedly caused
     by BMC's Mainview Batch Optimizer 2.2.0 (data optimizer component),
     and BMC is working on a fix.  7AUG02.

19.  APAR OW55586 officially documents that swap data sets are no longer
     supported, starting with z/OS, and the SMF 75 mapping no longer
     mention "Swap Data Sets", but only refer to "Page Data Sets".
     It also corrects errors in TYPE74CF Coupling Facility R744RSST.

18.  APAR OW52583 corrects blank value in SMF30PFL when a step is
     skipped via the COND parameter when using SCHENV JCL Parm in WLM.

17.  APAR OW55564 corrects zero value in SMF70SER (CPUSERnn) in first
     RMF interval, after OW53929 has been installed.   This would impact
     the PDB.ASUMCEC dataset, since the CECSER is taken from SMF70SER.

16.  APAR OW55359 describes how SMF type 42 subtypes 15-19 (VSAM RLS)
     can be accidentally not written.

15.  APAR PQ59911 for WebSphere Application Server V4.0.1 for z/OS and
     OS/390 is an internal defect fix and new function APAR to provide
     the complete Java interface, and the Web Container will use this
     interface to sent web container activity (such as HttpSession and
     servlet) to the SMF data, in the form of two new subtypes (7,8) to
     the SMF type 120 record.  An MXG change to VMAC120 will be needed.
     21Jun2002.

14.  APAR OW53698 z/OS R1.2, ARCHLVL=2, plus reconfigure storage offline
     command corrupts OUXB fields (which show up in type 30 records in
     service unit fields (SERVICE,CPU,SRB,MSO) to be billions.  IBM says
     to IPL and set RSU=0,REAL=0 in IEASYSxx to tell z/OS the system has
     no reconfigurable storage, so the function (take storage offline).
     that causes the corruption will never be invoked.  21Jun2002.
     My comment: don't reconfigure storage offline.

13.  APAR OW47277 discusses in detail internal corrections for problems
     found during the tests of LPAR CPU Management and License Manager
     in OS/390 R11. 19Jun2002.

12.  APAR OW54399 corrects problems in 64-bit mode at R10 and above that
     surfaced as lots of auxilliary paging slots in use, periodic high
     page rates, and high UIC and high AFQ.

11.  The new "Z2 mode" of JES2/JES3 INCOMPATIBLY changes the JCTJOBID
     field, which impacts not only the JESNR and TYPETASK variables in
     many MXG datasets, but may impact applications, exits, utilities
     and vendor products, especially message-based automation products,
     that use or display JOBID, JESNR, or TYPETASK.  The z2 mode of JES
     was released with z/OS 1.2, but there was no vendor alert from IBM!
     This new mode permits 200,000 jobs and 9,999,999 job numbers, but
     it replaced the current JOBID format JOBnnnnn/TSUnnnnn/STCnnnnn,
     with Jnnnnnnn/Tnnnnnnn/Snnnnnnn/Onnnnnnn format when z2 mode is
     enabled. (The old mode of JES is now called "OS/390 Release 4
     Compatibility Mode").  Many exposures are documented by IBM in
     JES2/JES3 Flash 10114, dated November, 2001, at this url:

 http://www-1.ibm.com/support/techdocs/atsmastr.nsf/PuballNum/Flash10114

     MXG Change 20.101 documents the (VERY MANY) MXG members that have
     to be modified to fully support the Z2 mode; that Change will be in
     MXG Version 20.03, to be available later this month. 12JUN02.

     Added 19Aug02:  These new JESNR values can be seen on an OS/390
     system, if that system is part of a JESplex that has a z/OS 1.2
     system; jobs read in on the z/OS 1.2 system that are then sent to
     the OS/390 system will carry thru the original 7-digit JESNR.

     And Levi, Ray, and Shoup's VPS product's maintenance to support the
     z/OS operating system will also create the 7-digit JESNR, even when
     running under OS/390 R2.10.


10.  "The writing of SMF record 117 is not documented and should have
     been removed on an earlier release of MQSeries/390.  It was not
     meant for customer usage."  APAR PW60966.  06Jun02.

 9.  APAR PQ57650 reports that RMF Type 79 subtype 15 (IRLM Long Lock)
     has blank DBNAME in field R79FRSNA, when the database is DL/I (but
     not if the DB is FP). 06Jun02.

 8.  APAR OW43846 reports incorrect value for SMF15NTU (variable TTRN in
     dataset TYPE1415) for striped extended format datasets that go thru
     partial release.  6Jun02.

 7.  APAR OW52822 alters how CLOSE macro options are handled for VSAM,
     and cannot be installed with OBJECTSTAR, and could impact other
     applications.  From the APAR text:
     "It is documented in the 'Macro Instructions for Data Sets'
     publication that the CLOSE macro options should be ignored for VSAM
     ACBs but CLOSE was not ignoring them. Specifically the FREE option
     of CLOSE and it's corresponding FREE=CLOSE JCL parameter were
     incorrectly being honored causing the VSAM data set to be
     prematurely unallocated by CLOSE.  IFG0202L was modified to ignore
     all CLOSE options for VSAM ACBs.  It should be noted that any
     application that depended upon the VSAM data set being unallocated
     by CLOSE will need to be modified prior to this APAR being
     installed. Otherwise, the application could fail."

     Object Star Flash May 27, 2002 :
     "Situation:
      IBM has released APAR OW52822 for z/OS which can adversely affect
      the behavior of ObjectStar.  This APAR removes the ability to
      de-allocate a closed VSAM data set (FREE=CLOSE).  If this APAR is
      applied, VSAM data sets, including Pagestore data sets, Journals,
      and the DBDLIB, will be unavailable for processing in offline mode
      if they have been opened by the Data Object Broker.
     Corrective Action
      DO NOT apply this APAR until a suitable ObjectStar solution can be
      developed and tested."

     There is no indication in SMF records that FREE=CLOSE was used in
     any program, for VSAM or non-VSAM.   31May2002.

 6.  Item RTA000016291 responds to a comparison of the 3470 Get requests
     in SMF 110 data with the SMF 64 count of 10999 retrieves (while the
     count of deletes, inserts, and updates were identical).  IBM reply:
     "CICS stats record the activity requested by the CICS application,
     and NOT the number of SIO/EXCPs required to satisfy each request.
     Unless a VSAM KSDS is using LSR and there are a sufficient number
     of buffers in the LSR pool to hold the entire sequence set, then it
     is likely 2 SIOs will be required for each GET or GET UPDATE issued
     by an application program.  And if the entire index set is not in
     memory, then more than 2 SIOs will be required."
     See MXG member ANALBLSR and ADOCBLSR to enable BLSR (recommended!).

 5.  APAR PQ60740 for TCP SMF record (confusingly listed as "TCB SMF",
     because TCP/IP development uses "TCB" for "TCP Control Block"),
     documents that variable CURRESTA (Current ESTABS) in the Stat
     record (dataset TYPETCPS) can be negative.  OPEN as of 20May02.

 4.  APAR PQ58984 documents performance degradation for WebSphere V4.0.1
     for z/OS and OS/390, when SMF server and container interval records
     were turned on.  The APAR text describes the design changes in how
     WebSphere creates SMF records (available now in PTF UQ66083) that
     improve the SMF recording performance (by eliminating and reducing
     many calls and restructuring string objects).  The observed impact
     of WebSphere SMF records, before the APAR, reported that LoadRunner
     response dropped from 400 per second at .04 seconds response, to
     130 per second at .16 seconds when pre-APAR SMF was turned on, but
     no post-APAR statistics were reported.

 3.  APAR OW54176 for OMVS USS fixes storage shortage in the OMVS ASID
     caused by failure to free the DSSB Control Block when an hfs was
     unmounted. 20May02.

 2.  RMF Reports from IBM incorrectly report IOSQ when a SysPlex report
     is requested; one-system-report request  (WLMGL(RCPER,SYSNAM(AB)))
     will properly report the IOS Queue Time.  See APAR OW53514.

 1.  APAR OW51126 documents that DASD Connect Time for Ficon Connections
     includes both productive connect time, and delays due to multiplex
     delays in the Ficon architecture, and changes the way WLM measures
     the I/O delay contribution to Performance Index, by replacing the
     measured connect time with a fixed 1 millisecond per Ficon I/O
     request, in the WLM calculation of PI when I/O Priority Management
     is in effect.

IV.  DB2 Technical Notes.

 1.  APAR PQ53472 corrects internal lengths so that data areas for the
     DISPLAY DATABASE CLAIMERS, LOCKS, and USE are valid.

V.   IMS Technical Notes.


VI.  SAS Technical Notes.

16.  SAS Technical Note SN-001705 confirms that SAS Version 8.2 has no
     problems with OS/390 thru R2.10, nor with z/OS, nor with the 64-bit
     hardware of z900-z/800s, nor with larger real storage addresses.

15.  MXG's CONFIGxx options (MVS only) specify MSGCASE and CAPSOUT which
     override the SAS defaults of NOMSGCASE and NOCAPSOUT, so that all
     MVS SAS output and messages are upper case: some printers did not
     support lower case and printed garbage with SAS defaults, and JCL
     text you create must be upper case.  This is a problem when you
     need to create lower case text under SAS on MVS (for example, for
     case-sensitive passwords when you ftp to non-MVS sites); you will
     need to specify OPTIONS NOMSGCASE NOCAPSOUT; for that program.
       Also: SAS/GRAPH may refuse to print graphs if you use CAPSOUT.

     MXG's AUTOEXEC (ASCII execution only) does not change the defaults,
     since SAS under ASCII has always supported mixed case.

14.  Quick way to go from a SAS database on MVS to an EXCEL spreadsheet
     if you have SAS Connect; there is an upper limit on how many rows
     EXCEL can handle (but if that is exceeded, there is an option to
     create a comma separated values or tab delimited or DBASE or ACCESS
     output file that can be imported:
        Start a CONNECT session
        Issue a LIBNAME command
        Go To FILE/EXPORT and follow the onscreen directions.
     And the inverse function, to read the EXCEL file into a SAS dataset
     is there, under FILE/IMPORT.

13.  Support for SAS Version 9.

     A more extensive technical note on SAS V9 will be written in a
     later Newsletter article, but initial tests are very encouraging:

    -MXG has been tested under SAS Version 9 Early Adopter Release on
     both z/OS and Windows platforms, with no errors, and with no data
     incompatibilities between V8 and V9.  Data libraries and catalogs
     built with V8 can be read and written with SAS V9, and libraries
     and catalogs built with V9 can be read and written with SAS V8.

     Following paragraph was revised, March 1, 2003:
     Although the V9SEQ sequential engine was supposed to have been
     redesigned as we have wanted, i.e., it was supposed to NOT honor
     the OPTIONS COMPRESS=YES global option, the V9SEQ engine still does
     compress tape datasets, so SEQENGINE=V6SEQ is still the MXG default
     in CONFIGV8 and CONFIGV9.  We do NOT recommend the use of either
     the V8SEQ (which has destructive errors) nor the V9SEQ (because it
     still compresses tape datasets, even in the V9TSM0 Release.
     Since all "MVS" tape devices have hardware compression, you don't
     want SAS to also use sofware compression and CPU time when writing
     to tape.  And if you write a large dataset in sequential format to
     DASD, so that it can be an extended-format and hardware-compressed
     file, again, you don't want SAS to also use software compression.
       But if you ever should need to have SAS software compress data
       that is written with the sequential engine, you can still use the
       COMPRESS=YES option on your DATA statement, and SAS will honor
       your request and compress that dataset and write to that device.

     Very briefly, in MXG 20.04 and 20.05, there was a CONFIGV9 member
     that did not have a SEQENGINE option, so those two releases did use
     the V9SEQ engine, but in MXG 20.06 (but not documented with a
     Change), the CONFIGV9 was changed to specify SEQENGINE=V6SEQ.

    -Noted in testing the Early Adapters Release, to be corrected in
     SAS V9.1 or later:

     Almost too obscure to document: on MVS (in CONFIGxx), MXG changes
     the SAS default option from NOMSGCASE to MSGCASE (so SAS Messages
     are printed in upper case), but in the V9 Early Adopter release, if
     you enabled its new DLEXCPCOUNT option (displays EXCP counts on the
     MVS log), those counts are corrupted; using  OPTIONS=NOMSGCASE;
     correctly printed the counts, and this error is fixed in real V9.
       Note 15Nov2002: Fixed in SAS V9.1 per Usage Note SN-008247.

     The message "WARNING: Compression was Disabled ...." set a Return
     Code (a/k/a Condition Code) of four.

12.  How many //SORTWKnn DDs are needed for a large sort?  Divide the
     size of the file to be sorted, in MegaBytes, by 1000, round up to
     the next integer, and allocate that many 1500 cylinder sort works:
       A work file of 1500 cylinders will be easier to allocate during
         peak use of your work pool, to avoid allocation failure reruns.
       Each file of 1500 cylinders holds about 1180 MegaBytes.  Using a
         divisor of 1000 instead of 1180 and rounding adds 20-25% extra
         work space for the sort program.

11.  Reading a text file (under ASCII SAS) that contains CTRL+Z (Hex 1A)
     character is stopped at that character, because it is treated as an
     end of file character.  In SAS V8.2 and later, a new option exists,
     IGNOREDOSEOF, which will allow these characters to be read.

10.  SAS HotFIX 82BA77 is still Strongly Recommended to correct errors;
     a new problem is caused by that fix and reported under SN-007513,
     but that error ONLY applies to the use of PROC SOURCE, and 7513 has
     a back-out zap if you encounter the 0C1 running PROC SOURCE after
     you have installed 82BA77.  12Jun02.

 9.  An SMFTIME value of 'EE1B897F0102050F'x, created by Computer Ass
     products that overlay the first byte of time field with 'EE'x or
     'EF'x, is invalid for SMFSTAMPw informat, but SAS does not error.
     Instead, SAS treats the time part's first bit as a negative, so the
     time value is several days earlier.  SAS will not correct SMFSTAMP.
       The real source of the problem, of course, is CA - for every case
       in which they overlay the Reader Time Field, they are supposed to
       provide code for your CA guru to install in the appropriate SMF
       exit (IEFU83/U84/U85) that removes their overlay, so your CA guru
       needs to read the installation notes and do it right.  But if SAS
       had chosen to detect and report the invalid time value, you would
       know you have invalid SMF data from CA, and could get it fixed.

 8.  Required SAS Hot Fix Bundle is 82BX03 for Version 8.2 TS2M0 on MVS.
     This note in Sept had 82BA77, but was revised Oct, 2002.  The new
     SAS Hot Fix Bundle 82BX03 is now required for MXG under "MVS".  The
     new 82BX03 bundle includes 82BB15, 82BA77, and 82BA57, so the fixes
     SN-006609,SN-007032,SN-006754,SN-007000,SN-007065, and SN007066
     are included, but there are new fixes after 82BA77 that correct new
     I/O errors; it is ALWAYS wises to install the current SAS Hot Fix.


 7.  A "DOMAIN ERROR" (MVS only thus far) occurs when SAS V8 creates an
     invalid internal value for a floating point data value read with RB
     (floating point) informat.  With RB informat, SAS does not validate
     that the exponent is valid (because of performance concerns), and a
     data value of '0000000000000001'x creates invalid data values with
     no error message on the SAS log at time of create.  Only later when
     the data are read with PROC MEANS does the "DOMAIN ERROR" message
     print on the log, stopping the job, with no identification of what
     variable contained the invalid data.  (Under PC SAS, wrong values
     like 1E-74 are created, but do not cause the DOMAIN ERROR.)

     But the ultimate cause of the DOMAIN ERROR is the incorrect use of
     RB informat, or a mis-alignment in MXG's INPUT logic.  Thus far:
      Change 20.051, SMF 89, the field should have been INPUT with PIB.
      Change 20.050, SMF 78, MXG's INPUT statement was mis-aligned.
      Change 20.083  SMF 79, MXG should have used PIB instead of RB.
      Change 20.097  SMF 91, SDI/SDO doc RB wrong, fields are PIB.

 6.  SAS V8.2 with SAS/SHARE can corrupt updated SAS datasets and/or
     cause DOMAIN ERROR condition.  SAS/SHARE Hot Fix 82SH02 has their
     downloadable correction.  21Mar02.

 5.  V8 COMPRESS=YES and SEQENGINE=V8SEQ compresses tape and disk data
     sets, and there is no global option to disable tape compression.
     You do NOT want to compress tape data, because all tape drives have
     hardware compression, so software compression only wastes CPU time.
     And even tape-format datasets written to disk should not use SAS
     software compression, since they can be written to extended-format
     datasets that are hardware compressed on modern disks.

     Luckily, MXG 19.19 CONFIGV8 Options still sets  SEQENGINE=V6SEQ
     (early V8 SEQ had errors, not fixed until V8.2) and the V6 tape
     engine never compressed tape datasets, so MXG 19.19's addition of
     COMPRESS=YES (accidentally!) only compresses SAS disk data sets.

     I have opened a dialogue with SAS Technical Support to eliminate
     compression of tape datasets (or at least default tape compression
     off, and provide an option, if someone somewhere can actually show
     that there is an advantage to them to compress tape datasets).

 4.  If character variables that should have lower case values all have
     upper case values instead, it is because MXG's CONFIGxx members for
     MVS set the SAS option CAPSOUT, which converts all lower case to
     upper case.  Specify  OPTIONS NOCAPSOUT; if you want both cases.

 3.  SAS note SN-001262 reports a problem under unix that we have also
     caused on MVS:  if you have //USER DD or if you have a directory
     named "user" off of the sas root, the USER environmental variable
     is not ignored in V8 like it was in V6, and data sets are sent to
     the USER libref instead of WORK, but subsequent reference expects
     it in WORK, so it is not found!  Don't use //USER or don't have a
     directory named user, or you can add  -user  work   to your config
     file to circumvent this problem.

 2.  It turns out it IS possible to reassign the SOURCLIB fileref in
     your MXG jobs, although it is not clear that you would want to, but
     an MXG site that successfully had reassigned SOURCLIB in their PDB
     job years ago found that their statements FILENAME SOURCLIB CLEAR;
     with "FILE IS ALREADY OPEN" when testing MXG 19.19.  After much
     research, a call to SAS Institute Technical Support revealed that
     this has been a documented limitation since SAS Version 6 in their
     Technical Note V6-4731: you cannot clear an AUTOCALLed LIBREF.  I
     was ready to accept this, and the site redesigned without the need,
     but a complete description from SAS developers of the limitation:
        Once the autocall libraries have been searched, filerefs remain
        assigned until both SASAUTOS= option is changed AND there is a
        subsequent request for an autocall macro.  If it is recognized
        that the new SASAUTOS= option is different, then the filerefs
        associated with the previous SASAUTOS are cleared, and the new
        filerefs are assigned and are the new autocall list.
     showed a circumvention was available, if this were ever really
     needed.   You can reassign SOURCLIB if you first change the current
     SASAUTOS= option, then autocall a macro from the new SASAUTOS, so
     that then you can clear the SOURCLIB fileref, and then can reassign
     SOURCLIB to the new source libraries (for %INCLUDEs), and reset the
     SASAUTOS= option to resolve %macros from the reassigned SOURCLIB.

     Here is an example of what you would need to do.  The "MDUMPEBC"
     %MACRO exists only in member/file MDUMPEBC in the MYSTUFF fileref:

         // EXEC MXGSASV8
            FILENAME MYSTUFF 'D:\MXG\MYSTUFF';
            OPTIONS SASAUTOS=MYSTUFF;
            %MDUMPEBC(DUMPIN=SMF,FIRST=1,LAST=1);
            RUN;
            FILENAME SOURCLIB CLEAR;RUN;
            FILENAME SOURCLIB ('D:\MXG\USERID' 'D:\MXG\SOURCLIB') ;
            RUN;
            OPTIONS SASAUTOS=(SOURCLIB SASAUTOS);
            RUN;
            %INCLUDE SOURCLIB(TYPE0);RUN;


 1.  Under Windows with SAS V8.2, SAS fix 82BA62 corrected this error:
     FATAL ERROR: WRCODE=80000805, MODULE='wtdelet': Unexpected return
     from vtswtch().



VII. CICS Technical Notes.

 2.  A MAJOR change in CICS-DB2 Accounting occurs with DB2 Version 6 or
     later when called from CICS Version 2.2 or later.

     The change is documented in CICS DB2 Guide for CICS/TS for z/OS
     Version 2.2, Section 9.11.4, titled 'Calculating CICS and DB2
     Transaction Processor Times for DB2 Version 6 or later'.

    -Key points:

     This is the new Open Transaction Environment, OTE.

     CICS must be at V2.2 and DB2 must be at V6 for this to happen.

     With DB2 V6, DB2 CPU time is now recorded in SMF 110s in CICSTRAN!

     Do NOT add DB2ACCT DB2TCBTM to the CICSTRAN CPUTM with OTE!

     Some CICS CPU time is now also recorded in the DB2TCBTM in DB2ACCT.

     It is only the SMF 110 subtype 1 CICS transaction data (CICSTRAN)
     and the DB2 SMF 101 (DB2ACCT) CPU times that are changed.  With or
     without OTE, when CICS calls DB2, the DB2 CPU time continues to be
     captured in the CICS type SMF 30 records (for the calling address
     space), and that DB2 CPU time is also captured in the CICS RMF 72
     Service Class or Performance Group data, and it is also captured in
     the SMF 110 subtype 2 CICS statistics data (CICDS or PDB.CICINTRV).

     This is the new OTE Open Transaction Environment architecture, and
     the accounting change applies to both THREADSAFE and non-THREADSAFE
     transactions.

     For transactions that are declared as THREADSAFE, OTE can reduce
     the real CPU time significantly (especially for transactions that
     make many DB2 calls).  However, the capture of DB2 time in CICSTRAN
     and CICS in DB2 is a result of the OTE architecture and thus it
     occurs whether the transaction is threadsafe or not.
       So expect CICS CPUTM to be less for THREADSAFE transactions.

     Thread create and thread terminate CPU time is now captured in the
     CICSTRAN and DB2ACCT records for the transaction that created or
     terminated the thread; previously this was uncaptured in both.

    -IBM's note (mildly edited) states:

     "When CICS is connected to DB2 Version 6 or later, the CICS DB2
     attachment facility uses CICS-managed open TCBs rather than CICS
     subtask TCBs.  This means that the CICS monitoring facility can
     measure activity that was previously only reported in the DB2 SMF
     101 accounting record, such as processor time consumed in DB2 (the
     Class 1 and Class 2 CPU time).  For example, the L8 open TCB CPU
     time captured by CICS does include all DB2 Class 1 CPU time.

     When CICS is connected to DB2 V6 or later, do not add together the
     CPU time from the CICS (SMF 110-1) and the DB2 accounting (SMF 101)
     records when calculating the total CPU time for a single
     transaction, because the DB2 CPU time would then be included twice.

     The total CPU time for a single CICS transaction is simply the CPU
     time from the CICS record, performance class, data field 008, field
     name USRCPUT (MXG variable TASCPUTM).  This field includes all the
     TCB CPU time used by the transaction when it was running on any TCB
     managed by the CICS dispatcher, including L8 TCBs, the QR TCB, and
     TCBs in any other modes."

    -My additional comments:

     All CICS transactions connected to DB2 V6 do exploit the OTE (open
     transaction environment), which was not clear from that IBM note.

     While all MXG notes telling you to use ASUMUOW program to combine
     CICSTRAN and DB2ACCT data to create and then use PDB.ASUMUOW to get
     the total CPU time for account for CICS+DB2 are now wrong with OTE,
     ASUMUOW does not add the two CPU times together; (luckily?) they
     are kept in two separate variables, so you must check to see if you
     were using their sum for you CICS billing and capacity measurement.

     Since the total CICS+DB2 billable CPU time is now captured in CPUTM
     in CICSTRAN, you may not need to create PDB.ASUMUOW for your CICS
     and DB2 chargeback and capacity measurement.  However, ASUMUOW is
     still valuable for its other DB2 metrics.  And even without DB2,
     ASUMUOW combines all of the TOR, AOR, FOR, etc., MRO transactions
     from CICSTRAN into one ASUMUOW observation for each UOW (and with
     the real TRANNAME from the AOR and the real LUNAME from the TOR!),
     and lots fewer observations for billing and capacity measurement.

     IBM's note is correct that USRCPUT/TASCPUTM does contain all of the
     CICS and DB2 TCB CPU time for the combined activity, but that isn't
     the total CPU time that is captured in CICSTRAN.  Instead, the MXG
     variable CPUTM in CICSTRAN is the sum of TASCPUTM + RLSCPUTM and is
     the the correct total CPU time to use for billing and capacity,
     because the RLSCPUTM (field 175, RLSCPUT) is SRB CPU time that is
     not included in TASCPUTM.  (Fortunately, RLSCPUTM is rarely large,
     so if you've been using TASCPUTM instead of CPUTM, your numbers may
     be okay, but variable CPUTM in all MXG datasets is the one variable
     to use for the total unoverlapped captured CPU time!)

     IBM's note also states that the CPU time captured in the SMF 110
     will be larger with DB2 V6+:
       The CICS L8 CPU time also includes the cost of creating a DB2
       thread.  With DB2 V5 or earlier, this CPU time was not captured
       in either CICSTRAN nor in DB2ACCT.  With DB2 V6 or later, if a
       transaction causes a DB2 thread to be created, the thread create
       CPU time is charged to the creating transaction, and, if at the
       end of a CICS transaction, the thread is terminated (because it
       is unprotected and no other task is waiting to us it), that
       thread terminate CPU time is charged to that transaction."

     Finally, the Class 1 CPU time in DB2ACCT (DB2CPUTM) is no longer
     just due to DB2; a significant amount of CICS application code is
     now included in that CPU time in the SMF 101 record, and there is
     no way to measure how much Class 1 was DB2 and how much was CICS.

     My thanks to Tony Steward and Nick Jealous who alerted me to the
     change, and to IBM CICS gurus Chris Baker and John Tilling from
     Hursley, whose very timely SHARE 99 papers and answers were used to
     write this note.  20AUG02, revised and reordered 27AUG02.

    Added 01Sep02:
    -An excellent IBM publication, Redpaper REDP0162, "DB2 for z/OS and
     OS/390 Version 7 Selected Performance Topics", February 19, 2002,
     easily found at www.ibm.com/redpaper, provides additional useful
     information on CICS and DB2 Accounting changes:

       -The H8, J8, and L8 Open TCBs are documented:
        H8 - TCBs allocated by hot-pool HPJ-compiled Java Programs
        J8 - TCBs allocated for the execution of a JVM Program (Java
                  programs that requires a JVM)
        L8 - TCBs allocated by non-Java program accessing a resource
                  manager through a task-related user exit enabled with
                  OPENAPI option.  Used by the CICS/DB2 attachment.

       -Figure 5-13 in the Redpaper is an excellent schematic of where
        CICS and DB2 CPU times are currently captured, and a revised
        Figure 5-13 for the OTE environment was presented by IBM at the
        SHARE 99 meeting:

                        Figure 5-13  CPU Accounting Before OTE

              |----CICS ADDRESS SPACE-----||--DB2 ADDRESS SPACE--|

              . CICS QR     .  CICS       ..          DB2        .
              . MAIN TCB    .  ATTACH TCB ..          TCB        .
              .             .             ..                     .
              .             .             ..                     .
              . 1|__________________      ..                     .
              .             .      2|___________________         .
              .             .       ____________________|3       .
              .   __________________|4    ..                     .
              . 5|__________________      ..                     .
              .             .      6|___________________         .
              .             .       ____________________|7       .
              .   __________________|8    ..                     .
              . 9|          .             ..                     .
              |---------------------------||---------------------|

                CICS CMF CPU = 1+5+9                ==> TASCPUTM
                DB2 Class-1 CPU = 2+3+4+6+7+8       ==> DB2TCBTM
                DB2 Class-2 CPU = 3+7



                  Revised Figure 5-13  CPU Accounting with OTE

              |----CICS ADDRESS SPACE-----||--DB2 ADDRESS SPACE--|

              . CICS QR     .  CICS (L8)  ..          DB2        .
              . MAIN TCB    .  OPEN TCB   ..          TCB        .
              .             .             ..                     .
              .             .             ..                     .
              . 1|__________________      ..                     .
              .             .      2|___________________         .
              .             .       ____________________|3       .
              .             .   ____|4      ..                   .
              .             . 5|____        ..                   .
              .             .      6|___________________         .
              .             .       ____________________|7       .
              .   __________________|8      ..                   .
              . 9|          .             ..                     .
              .             .             ..                     .
              |---------------------------||---------------------|

                CICS CMF CPU = 1+2+3+4+5+6+7+8+9    ==> TASCPUTM has mor
                DB2 Class-1 CPU = 2+3+4+5+6+7+8     ==> DB2TCBTM has CIC
                DB2 Class-2 CPU = 3+7


        The CPU "5" moves from under the QR TCB to the L8 Attach TCB;
          i.e., QR TCB may be less, L8 TCB may be more.
        The DB2 Class-1 CPU changes to 2+3+4+5+6+7+8 (was 2+3+4+6+7+8);
          i.e., CPU time for CICS functions ("5") is now recorded in the
                DB2 SMF 101, in dataset DB2ACCT, in variable DB2TCBTM.
           ==>  DB2 101's didn't record CICS CPU time before OTE.
        The DB2 Class-2 CPU is unchanged, 3+7.
        The CICS TASCPUTM is now 1+2+3+4+5+6+7+8+9 (was 1+5+9);
          i.e., DB2 CPU time ("2","3","4","6","7","8") is now included
                in CICS SMF 110 CICSTRAN dataset, in variable TASCPUTM.
           ==>  CICS 110's didn't record DB2 CPU time in the transaction
                records before OTE.

        The SHARE paper is in the SHARE San Francisco Proceedings,
        Session 1042, Tuesday, August 20th, 2002.


 1.  APAR PQ63141/PQ63143 adds new statistics to type 110 data; IBM has
     finally made the documentation of those changes available in Oct,
     2002, and Change 20.225 added support and documents the STIDs that
     were changed.


VIII. Windows NT Technical Notes.

IX.   Incompatibilities and Installation of MXG 20.05.

 1. Incompatibilities introduced in MXG 20.05 (since MXG 19.19):
    See CHANGES.

 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 JCLINSTL.


X.    Online Documentation of MXG Software.

    MXG Documentation is now described in member DOCUMENT.


XI.   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 after MXG 19.19 now in MXG 20.xx:

  Dataset/
  Member   Change    Description

  See Member CHANGES or CHANGESS in your MXG Source Library, or
  on the homepage www.mxg.com.

Inverse chronological list of all Changes:

Changes 20.xxx thru 20.001 are contained in member CHANGES.