Record Segment MXG Dataset
TA ARQ MONIARQ
AWT MONIAWT
DSP MONIDSP
DBD MONIDBDS
MRO MONIMRO
USR MONIUSR
UTG MONIUTG
TAS MONITASK
TD TDQ MONITDQ
TF TFI MONITFI
TI SYS MONISYST
CMX MONICMX
IDS MONIIDS
IRQ MONIIRQ
IWT MONIIWT
TM TMC MONITMC
TP TP MONITP
TPD MONITPD
TPG MONITPG
TR TR MONITR
DSA MONIDSA
EXP MONIEXP
XMC MONIXMC
TS TS MONITS
TSQ MONITSQ
TT TTR MONITTR
TX TX MONITX
TXN MONITXN
T2 T2 MONIT2
T2E MONIT2E
-ANALMONI's example reports using MONISYST were disabled
because many old variables no longer exist, and the old
examples weren't all that good, anyhow!
Change 15.280 Landmark's The Monitor for MVS Version 2.0 INCOMPATIBLE.
VMACTMV2 Essentially all records have been tested and do not fail.
IMACTMV2 Not all datasets have all variables decoded; as users
TYPETMV2 request them, they will be built. You must use member
Nov 19, 1997 TYPETMV2 instead of TYPETMVS for Version 2 records.
Thanks to Chris Taylor, VF, USA.
Change 15.279 MXG 15.04-MXG 15.05. DB2 report PMTRN01 caused APPARENT
ANALDB2R MACRO &SORTUOW UNRESOLVED, because Change 15.173 added a
Nov 18, 1997 new option to %ANALDBTR (UOWSORT=, that creates &SORTUOW
as a local macro variable), but old-style macro _TRANSIT
that is also defined in member ANALDBTR is also invoked
in ANALDB2R, but the &SORTUOW was local to %ANALDBTR and
did not exist when _TRANSIT was invoked. &SORTUOW is not
actually used by _TRANSIT, so the correction is to insert
%LET SORTUOW=; immediately before the _TRANSIT line.
Thanks to Tom Elbert, John Alden, USA.
Change 15.278 Calculation of B1HITRAT,B2HITRAT,B3HITRAT, and B4HITRAT
DIFFDB2 had mis-located parenthesis; there was no syntax error,
Nov 18, 1997 but the value was wrong. (Variable BPHITRAT was fine.)
The four calculations for the BnHITRAT variables need to
look like this
B1HITRAT=(QB1TGET-(QB1TSIO+QB1TDPP+QB1TLPP+QB1TSPP))/QB1TGET;
with all of the parens in the numerator.
Thanks To Yao-Chun Rickert, First National Bank of Chicago, USA.
Change 15.277 Under VM/CMS SAS, it is not possible to specify a MACLIB
INSTALL member in the CONFIG option, so the INSTALL instructions
Nov 18, 1997 for MXG under CMS were revised; now you can create the
CONFIGVM SAS A file from the copy file, and then use
SAS (NODMS CONFIG=CONFIGVM syntax.
Thanks to Sue Kent, CHEVRON, USA.
Change 15.276 IOA/Control-T 5.0 input of variable DSEXPDT was changed.
VMACCTLT If DSEXPTYP is 'C' or 'L', DSEXPDT is INPUT as PIB.4, as
Nov 18, 1997 if 'C' it is a numeric with the number of active cycles,
or if 'L' it is a numeric with the number of days since
last access; if 'D' or 'J' it is INPUT as PD4. as then
it is a date value.
Thanks to Joseph G. Ogurchak, Westfield Companies, USA.
Change 15.275 SAP IMS timestamp SAPTIMTR must be used as the Start of
VMACIMSA Transaction, and the true End time is SAPTIMTR+SAPELTI.
Nov 17, 1997 Subtracting the SAPELTI from the Log Time produced bad
results; there appears to be a delay between the true
End time and the Log Time that is being examined.
The LABEL for SAPTIMTR now indicates "START TIME..."
Thanks to Cary Jones, Philip Morris, USA.
Change 15.274 Support for CICS TS 1.2 a/k/a CICS Transaction Server 1.2
EXCICD2G is INCOMPATIBLE because IBM inserted new fields into the
EXCICD2R middle of the Type 110 Subtype 1 Monitor (Transaction)
EXCICXQ1 record, instead of adding them at the end of the record!
EXCICXQ3 You must install this Change to process TS 1.2 records.
EXCICXQ3 In addition, new variables were added to CICSLGS Stats
FORMATS dataset, and five new (and important) interval statistics
IMACEXCL data sets are created with CICS TS 1.2, described below:
VMAC110 Dataset STID Description
Nov 15, 1997 CICD2G 102 DB2 Global Statistics
CICD2R 103 DB2 Resource Statistics
CICXQ1 121 Shared TS Queue Server Coupling Facility
CICXQ2 122 Shared TS Queue Server Buffer Statistics
CICXQ3 123 Shared TS Queue Server Storage Stats.
-New variables added to CICSTRAN dataset:
BRDGTRAN='BRIDGE*TRANSACTION*ID'
CPUTM ='TOTAL*CPU TIME*CAPTURED'
ICTOTCN ='IC START*CANCEL*DELAY*RETRIEVE*REQUESTS'
PCLURMCN='LINK URM*REQUESTS'
WTDWIOCN='DISPATCHABLE*WAIT*GIVE UP*DELAY*COUNT'
WTDWIOTM='DISPATCHABLE*WAIT*GIVE UP*DELAY*DURATION'
WTICIOCN='INTERVAL*CONTROL*DELAY*COUNT'
WTICIOTM='INTERVAL*CONTROL*DELAY*DURATION'
WTLMIOCN='LOCK*MANAGER*DELAY*COUNT '
WTLMIOTM='LOCK*MANAGER*DELAY*DURATION'
WTOTIOTM='TOTAL*OTHER*WAIT*TIME*DURATION'
WTSHIOCN='SHARED*TEMP STORE*DELAY*COUNT'
WTSHIOTM='SHARED*TEMP STORE*DELAY*DURATION'
WTTOIOTM='TOTAL*I/O*WAIT TIME*DURATION'
WTUNIOTM='UNCAPTURED*WAIT*TIME*DURATION'
WTWCIOCN='WAIT*CICS/EVENT*WAIT*DELAY*COUNT'
WTWCIOTM='WAIT*CICS/EVENT*WAIT*DELAY*DURATION'
WTWEIOCN='WAIT*EXTERNAL*WAIT*DELAY*COUNT'
WTWEIOTM='WAIT*EXTERNAL*WAIT*DELAY*DURATION'
-The CPUTM is TASCPUTM + RLSCPUTM, the sum of TCB and SRB
CPU time used by the transaction.
-Three very useful new Wait variables WTTOIOTM, WTOTIOTM
and WTUNIOTM are created in CICSTRAN based on IBM's
equations in the CICS Performance Guide an help explain
why a CICS transaction is waiting:
WTTOIOTM = Total I/O Wait Time, is the sum of:
WTTCIOTM+ Terminal Control I/O Wait
WTTSIOTM+ Temporary Storage I/O Wait
WTSHIOTM+ Shared Temporary Storage I/O Wait
WTTDIOTM+ Transient Data I/O Wait
WTJCIOTM+ Journal Control I/O Wait
WTFCIOTM+ File Control I/O Wait
WTRLIOTM+ RLS File I/O Wait
WTIRIOTM+ Interregion (MRO) I/O Wait
LU61IOTM+ LU 6.1 TC I/O Wait
LU62IOTM+ LU 6.2 TC I/O Wait
SZWAIOTM FEPI Suspend I/O Wait
WTOTIOTM = Total Other Wait Time, is the sum of:
DSPDIOTM+ First Dispatch Delay (MXT+TRANCLASS)
ENQDIOTM+ ENQ Delay
WTICIOTM+ Interval Control Delay
WTLMIOTM+ Lock Manager Delay
WTWEIOTM+ Wait External Wait
WTWCIOTM+ Wait CICS/Event Wait
WTDWIOTM+ Dispatchable or Give Up Wait
RMISIOTM RMI Suspend
WTUNIOTM = Uncaptured Wait Time, is calculated as:
WTUNIOTM=SUSPNDTM-(WTTOIOTM+WTOTIOTM);
The uncaptured time (time unexplained by any variable
in CICS) is the suspend time minus the DB2/IO wait time
and the CICS wait time. What can this uncaptured time
be? We have found in SAP/CICS MRO that if 2
transactions (an update task and dialog task) are
running in tandem, then the dialog task may wait until
the update task is complete and so this wait time is
uncaptured wait time due to it waiting for another task
to complete - monitor this closely, but in most
instances WTUNIOTM is zero.
-New variables added to CICLGS Statistics dataset:
LGSAUTOD='DATA*AUTO*DELETE*FLAG?'
LGSDONLY='DASD*ONLY*FLAG'
LGSMAXBL='MAXIMUM*BLOCK*LENGTH'
LGSRETPD='DATA*RETENTION*PERIOD'
LGSSTRUC='CF*STRUCTURE*NAME'
LGSSYSLG='SYSTEM*LOG*FLAG'
-New dataset CICD2G DB2 Global Statistics contains:
D2GABORT='ABORTS'
D2GACCOU='ACCOUNTREC*SETTING'
D2GATHID='STATIC*AUTHID'
D2GATHTY='AUTHTYPE'
D2GCALLS='CALLS*USING POOL'
D2GCOMIT='COMMITS'
D2GCONGM='CONNECT*TIME*GMT'
D2GCONLO='CONNECT*TIME*LOCAL'
D2GDB2ID='DB2*SYSID'
D2GDB2RL='DB2*RELEASE'
D2GDBCON='NAME*OF THE*DB2CONN'
D2GDISGM='DISCONNECT*TIME*GMT'
D2GDISLO='DISCONNECT*TIME*LOCAL'
D2GDSNAT='DSNC*STATIC*AUTHTYPE'
D2GDSNAU='DSNC*STATIC*AUTHID'
D2GDSNCC='DSNC*COMMAND*CALLS'
D2GDSNCU='DSNC*CURRENT*NUMBER OF*THREADS'
D2GDSNLM='DSNC*LIMIT*NUMBER OF*THREADS'
D2GDSNOV='DSNC*OVERFLOWS*TO POOL'
D2GDSNPK='DSNC*PEAK*NUMBER OF*THREADS'
D2GDSNSI='DSNC*SIGNONS'
D2GDSNTT='DSNC*THREAD*TERMINATES'
D2GPLEXI='PLANEXIT*NAME'
D2GPLNAM='STATIC*PLAN NAME'
D2GRDQCU='NUMBER OF*TASKS ON*READYQ'
D2GRDQPK='PEAK NUMBER*OF TASKS*ON READYQ'
D2GSIGNO='SIGNONS'
D2GSPCMM='SINGLE*PHASE*COMMITS'
D2GTCBCU='CURRENT*NUMBER*OF TCBS'
D2GTCBFR='CURRENT*NUMBER OF*FREE*TCBS'
D2GTCBHW='HIGH*WATER*MARK*OF TCBS'
D2GTCBLM='LIMIT*NUMBER*OF TCBS'
D2GTHRCU='CURRENT*NUMBER OF*THREADS'
D2GTHRLM='LIMIT*NUMBER OF*THREADS'
D2GTHRPK='PEAK*NUMBER OF*THREADS'
D2GTHRPR='THREAD*PRIORITY'
D2GTHRRE='THREAD*REUSES'
D2GTHRTE='THREAD*TERMINATES'
D2GTHRWA='THREAD*WAITS'
D2GTHWSE='THREADWAIT*SETTING'
D2GTRQCU='NUMBER OF*TASKS ON*TCB*READYQ'
D2GTRQPK='PEAK NUMBER*OF TASKS*ON TCB*READYQ'
D2GTSKCU='CURRENT*NUMBER OF*TASKS'
D2GTSKPK='PEAK*NUMBER OF*TASKS'
D2GTSKTO='TOTAL*NUMBER OF*TASKS'
-New dataset CICD2R DB2 Resource Statistics contains:
D2RABORT='ABORTS'
D2RACCOU='ACCOUNTREC*SETTING'
D2RATHID='STATIC*AUTHID'
D2RATHTY='AUTHTYPE'
D2RCALLS='CALLS*USING*DB2ENTRY'
D2RCOMIT='COMMITS'
D2RDBENT='NAME*OF THE*DB2ENTRY'
D2RPLEXI='PLANEXIT*NAME'
D2RPLNAM='STATIC*PLAN NAME'
D2RRDQCU='NUMBER OF*TASKS ON*READYQ'
D2RRDQPK='PEAK NUMBER*OF TASKS*ON READYQ'
D2RSIGNO='SIGNONS'
D2RSPCMM='SINGLE*PHASE*COMMITS'
D2RTHPCU='CURRENT*NUMBER OF*PROTECTED*THREADS'
D2RTHPLM='LIMIT*NUMBER OF*PROTECTED*THREADS'
D2RTHPPK='PEAK*NUMBER OF*PROTECTED*THREADS'
D2RTHRCU='CURRENT*NUMBER OF*THREADS'
D2RTHRLM='LIMIT*NUMBER OF*THREADS'
D2RTHRPK='PEAK*NUMBER OF*THREADS'
D2RTHRPR='THREAD*PRIORITY'
D2RTHRRE='THREAD*REUSES'
D2RTHRTE='THREAD*TERMINATES'
D2RTHRWA='THREAD*WAITS*OR OVERFLOWS'
D2RTHWSE='THREADWAIT*SETTING'
D2RTSKCU='CURRENT*NUMBER OF*TASKS'
D2RTSKPK='PEAK*NUMBER OF*TASKS'
D2RTSKTO='TOTAL*NUMBER OF*TASKS'
-New dataset CICXQ1 CICS Shared Temporary Storage Queue
Server Coupling Facility Statistics (i.e., how much of
the CF does each structure use) contains:
S1ASYCT ='ASYNCHRONOUS*REQUESTS'
S1CNNAME='NAME FOR*CONNECTION*TO STRUCTURE'
S1CRLCT ='CREATE*LIST*FOR A BIG*QUEUE'
S1DLLCT ='DELETE*LIST*1 PER*OVERALL*DELETE'
S1DLQCT ='DELETE*QUEUE*INDEX*ENTRY'
S1ELEMCT='CURRENT*ELEMENTS*IN USE'
S1ELEMHI='HIGHEST*ELEMENTS*IN USE'
S1ELEMLN='DATA*ELEMENT*SIZE'
S1ELEMLO='LOWEST*FREE*ELEMENTS*='/
S1ELEMMX='MAX ELEMENTS*RETURNED BY*IXLCONN'
S1ELEMPE='MAXIMUM*ELEMENTS*PER ENTRY'
S1ELEMPW='DATA*ELEMENT*SIZE*POWER OF 2'
S1ELEMRT='ELEMENT*SIZE OF*ENTRY*ELEMENT*RATIO'
S1ENTRCT='CURRENT*ENTRIES*IN USE'
S1ENTRHI='HIGHEST*ENTRIES*IN USE'
S1ENTRLO='LOWEST*FREE*ENTRIES'
S1ENTRMX='MAX ENTRIES*RETURNED BY*IXLCONN'
S1ENTRRT='ENTRY*SIZE OF*ENTRY*ELEMENT*RATION'
S1FREECT='ENTRIES*ON*FREE LIST'
S1FREEHI='HIGHEST*ENTRIES*IN*QUEUE INDEX'
S1HDRS ='MAXIMUM*NUMBER OF*LIST*HEADERS'
S1HDRSCT='HEADERS*USED FOR*CONTROL*LISTS'
S1HDRSQD='HEADERS*AVAILABLE*FOR QUEUE*DATA'
S1INDXCT='ENTRIES*IN*QUEUE INDEX'
S1INDXHI='HIGHEST*ENTRIES*ON*USED LIST'
S1INLCT ='INQUIRE*ON*LIST*ENTRY'
S1INQCT ='READ*QUEUE*INDEX*STATUS*ONLY'
S1NAME ='FULL NAME*OF LIST*STRUCTURE'
S1RDLCT ='READ*LIST*ENTRY'
S1RDQCT ='READ*QUEUE*INDEX*ENTRY'
S1RRLCT ='REREAD*LIST*DATA*FOR FULL*LENGTH'
S1RRQCT ='REREAD*INDEX*DATE*FOR FULL*LENGTH'
S1RSP1CT='RESPONSES*NORMAL*EVERYTHING*OK'
S1RSP2CT='RESPONSES*BUFFER*LENGTH*TOO SHORT'
S1RSP3CT='RESPONSES*NO*MATCHING*ENTRY'
S1RSP4CT='RESPONSES*ENTRY*VERSION*NO MATCH'
S1RSP5CT='RESPONSES*LIST*AUTHORITY*MISMATCH'
S1RSP6CT='RESPONSES*MAX LIST KEY*REACHED'
S1RSP7CT='RESPONSES*STRUCTURE*OUT OF SPACE'
S1RSP8CT='RESPONSES*OTHER*IXLLIST*RTRN CODE'
S1RWLCT ='REWRITE*LIST*ENTRY'
S1SIZE ='STRUCTURE*SIZE'
S1SIZEMX='MAXIMUM*STRUCTURE*SIZE'
S1USEDCT='ENTRIES*ON*USED LIST'
S1USEDHI='HIGHEST*ENTRIES*ON*USED LIST'
S1WRACT ='WRITE*QUEUE*INDEX*ADUUNCT*AREA ONLY'
S1WRLCT ='WRITE*LIST*ENTRY'
S1WRQCT ='WRITE*QUEUE*INDEX*ENTRY'
-New dataset CICXQ2 CICS Shared Temporary Storage Queue
Server Buffer Statistics measures the queue index buffer
pool and contains:
S2BFACTS='ACTIVE*BUFFERS*OWNED*BY TASKS'
S2BFEMPS='EMPTY*BUFFERS*ON*FREE CHAIN'
S2BFENTH='BUFFERS*USED*SO FAR'
S2BFFNOS='FREE ERRORS*BUFFER*NOT OWNED'
S2BFFRES='FREES*PUT BACK*BUFFER*AS EMPTY'
S2BFGETS='GET*REQUESTS'
S2BFGFRS='GETS*WHICH USED*A FREE*BUFFER'
S2BFGLRS='GETS*WHICH*USED*THE LRU*BUFFER'
S2BFGNBS='GETS*WHICH*RETURNED*NO*BUFFER'
S2BFGNWS='GETS*WHICH*USED*A NEW*BUFFER'
S2BFHITS='GET*WHICH FOUND*A VALID*BUFFER'
S2BFKEPS='KEEPS*PUT BACK*BUFFER*AS MODIFIED'
S2BFLRUS='VALID*BUFFERS*ON*LUR CHAIN'
S2BFLWTS='GET*WAITS*ON*BUFFER*LOCK'
S2BFPNFS='PURGES*WITH NO*MATCHING*BUFFER*FOUND'
S2BFPNOS='PURGE ERRORS*BUFFER*NOT OWNED'
S2BFPURS='PURGES*MARK*BUFFER*INVALID'
S2BFPUTS='PUTS*PUT BACK*BUFFER*AS VALID'
S2BFPWTS='WAITS*ON*BUFFER POOL*LOCK'
S2BFQTY ='TOTAL*BUFFERS*DEFINED'
-New dataset CICXQ3 CICS Shared Temporary Storage Queue
Storage Statistics measure usage of AXMPGANY & AXMPGLOW
storage pool areas, with:
S3ANYFR ='FREE PAGES*IN THE*STORAGE*ANY POOL'
S3ANYLO ='LOWEST*FREE PAGES*ANY POOL*SINCE RESET'
S3ANYMX ='TOTAL PAGES*IN THE*STORAGE*ANY POOL'
S3ANYNAM='POOL*NAME*AXMPGANY'
S3ANYPTR='ADDRESS OF*STORAGE*ANY POOL*AREA'
S3ANYRQC='ANY*COMPRESS*DEFRAGMENTATION*ATTEMPTS'
S3ANYRQF='ANY GETS*FAILING*TO OBTAIN*STORAGE'
S3ANYRQG='ANY POOL*STORAGE*GET*REQUESTS'
S3ANYRQS='ANY POOL*STORAGE*FREE*REQUESTS'
S3ANYSIZ='SIZE OF*STORAGE*ANY POOL*AREA'
S3ANYUS ='USED PAGES*IN THE*STORAGE*ANY POOL'
S3LOWFR ='FREE PAGES*IN THE*STORAGE*LOW POOL'
S3LOWLO ='LOWEST*FREE PAGES*LOW POOL*SINCE RESET'
S3LOWMX ='TOTAL PAGES*IN THE*STORAGE*LOW POOL'
S3LOWNAM='POOL*NAME*AXMPGLOW'
S3LOWPTR='ADDRESS OF*STORAGE*LOW POOL*AREA'
S3LOWRQC='LOW*COMPRESS*DEFRAGMENTATION*ATTEMPTS'
S3LOWRQF='LOW GETS*FAILING*TO OBTAIN*STORAGE'
S3LOWRQG='LOW POOL*STORAGE*GET*REQUESTS'
S3LOWRQS='LOW POOL*STORAGE*FREE*REQUESTS'
S3LOWSIZ='SIZE OF*STORAGE*LOW POOL*AREA'
S3LOWUS ='USED PAGES*IN THE*STORAGE*LOW POOL'
-Formats MGCICDA, MGCICDT, and MGCICDP are created.
-Eight STIDs are no longer created in CICS TS 1.2, so
these datasets(STID) will have zero observations:
CICAUSS(22), CICDLIG(72), CICDLIR(70), CICDLIR(73)
CICDQR (43), CICDTB (33), CICIRCB(75), CICJCR (49).
The table of Dataset/STID/DSECT/etc. has been updated in
member ADOC110.
Change 15.273 MXG 15.05 only. Change 15.228 did not input the ACCOUNT
VMAC26J3 fields because IF SMF26IND='.......1........' THEN DO;
Nov 14, 1997 should have been IF SMF26IND='.......1........'B THEN DO;
the "B" at the end of the bit test was missing, so SAS
did a character comparison, which was never satisfied.
Additionally, JES3 sites must install APAR UW41108, or
you will get INPUT STATEMENT EXCEEDED RECORD LENGTH on
ID=26 record; without that APAR, the bit in SMF26IND was
turned on, but the data segment was not present! This
was for JES3 running with OS/390 Release 1.3.
Thanks to John Allender, National Computer Systems, USA.
Change 15.272 This Change was not implemented. A future change will
XUILD005 change hardcoded PIB. references to a global macro, and
XUIL3005 that will eliminate the need to keep WORK.STEPS.
Nov 14, 1997 The original text of the change was:
Nov 21, 1997 For ITSV, dataset WORK.STEPS is no longer deleted from
the //WORK library in these two "Phase-Five" members that
are used by ITSV and some smart users in place of the
"All Phases" members BUILDPDB/BUILDPD3. The ITSV product
needs the STEPS dataset to be kept in addition to the
"PDB.STEPS" dataset, and ITSV actually has been modifying
the MXG source code during execution to remove the PROC
DATASETS that deleted STEPS! By now leaving the STEPS
dataset in the work library, ITSV will no longer need to
modify the MXG source code. "STEPS" is first renamed to
"REALSTEP" where it was previously deleted (because the
SPUNJOBS member creates a dataset named STEPS so that the
macro _PDBSUMS can summarize PDB.JOBS and PDB.SPUNJOBS),
and after SPUNJOBS has been run, "REALSTEP" is then
renamed back to "STEPS".
I did not include this logic in the BUILDPDB/BUILDPD3
members that do all five phases in one step, because ITSV
does not use those members, and leaving the STEPS dataset
instead of deleting it requires somewhat more DASD space
in the work library. Sites that have created their own
PDB job using the "phase" members may want to add a
delete of the WORK.STEPS dataset after their include of
members BUILD005 or BUIL3005 if more members are included
subsequently in the same SAS step execution.
Thanks to Chris Weston, SAS Institute Cary, USA.
Change 15.271 Further consistency enhancements. All interval datasets
VMAC23 should have SYSTEM DURATM STARTIME (especially for ITSV)
VMAC24 and these didn't:
VMAC94 TYPE23 - STARTIME variable created and kept.
Nov 14, 1997 TYPE24 - SYSTEM variable kept.
TYPE94 - DURATM variable created and kept.
Thanks to Chris Weston, SAS Institute Cary, USA.
Change 15.270 OS/390 R2.4, Goal Mode Only. INVALID DATA FOR R723CIDT
VMAC7072 or R723CDQT error. The SMF Manual showed R723CTSA as
Nov 14, 1997 four-byte binary, but the DSECT shows it is eight-byte
floating point! Change PCTEXTSA &PIB.4. to &RB.8. and
three lines earlier change LENSCS GE 432 to GE 436 and
fourteen lines later change SKIP-48 to SKIP-52.
Thanks to Diane Eppestine, Southwestern Bell, USA.
Change 15.269 The eight-byte variable UOWTIME (created by INPUTing the
ADOCDB2 first six bytes of UOWID with PIB6.6 and then dividing by
ANALDB2C sixteen to convert time units into seconds) can have the
ANALDBTR same value for two unique values of the six-byte UOWID!
ASUMUOW Since UOWTIME is used to combine CICS MRO observations
IMACEXCL for the same unit-of-work, and is used to combine the
VMAC102 CICSTRAN and DB2ACCT data by unit-of-work, only members
VMAC110 that used UOWTIME (ANALDB2C,ANALDBTR, and ASUMUOW) were
VMACDB2 directly affected; the duplicate values lumped different
VMACDB2H units-of-work's transactions into one observation.
Nov 13, 1997
I had believed that any 6-byte field could be input,
converted, and stored with full resolution in a SAS
8-byte variable, but in an eight-byte floating point
non-integer, SAS can only store 15 digits on MVS and
only 14 digits on ASCII. In UOWTIME, it happens that
16 digits are required to resolve adjacent unitary
changes in the 6-byte UOWID value; one unit change in
UOWTIME is one third of a microsecond, so 8 digits are
needed for the seconds of DATETIME since 1960, and 7
fractional digits were not enough as shown in the table:
The table shows duplicate DIVIDED BY 16 values for the
different UOWID input values, and shows that adjacent
UOWID values could not be resolved:
UOWID 6-bytes INPUT PIB6.6 DIVIDED BY 16
(15 digits) (15 digits)
DDDDDDDDE100 243974979.816704 15246561.2385440
DDDDDDDDE101 243974979.816705 15246561.2385440
DDDDDDDDE102 243974979.816706 15246561.2385441
DDDDDDDDE103 243974979.816707 15246561.2385441
DDDDDDDDE104 243974979.816708 15246561.2385442
DDDDDDDDE105 243974979.816709 15246561.2385443
DDDDDDDDE106 243974979.816710 15246561.2385443
DDDDDDDDE107 243974979.816711 15246561.2385444
DDDDDDDDE108 243974979.816712 15246561.2385445
DDDDDDDDE109 243974979.816713 15246561.2385445
DDDDDDDDE10A 243974979.816714 15246561.2385446
This error wasn't seen earlier in "real" CICS systems
because UOWTIME was the real time of day when a real
transaction started, and real microseconds occurred
between successive events, so UOWTIME values resolved to
unique values for different units-of-work. But clients
like CICS/OS2 and AS/400 now send transactions into CICS,
and these originators store not a timestamp in UOWID,
but rather a counter value that is incremented for each
transaction, and as one counter unit is one third of a
microsecond, MXG's choice of storing the six-byte UOWID
token as an eight-byte datetimestamp is now proven to be
incorrect to resolve adjacent counter values.
The solution is to create a new 6-byte character variable
UOWIDCHR in both CICSTRAN and DB2ACCT datasets containing
the first six bytes of UOWID, and then to insert UOWIDCHR
after UOWTIME in each BY statement so BY NETSNAME UOWTIME
becomes BY NETSNAME UOWTIME UOWIDCHR to guarantee unique
instances are correctly merged. The logic in ASUMUOW was
revised to protect the SPIN library against a variable
UOWIDCHR NOT FOUND error.
Thanks to Carol Arnold, Brown Brothers Harriman & Co., USA.
Thanks to John Krall, Brown Brothers Harriman & Co., USA.
Change 15.268 The new IHDR110 "Type 110 Header Exit" member can be
IHDR110 used to select CICS records by APPLID or other fields,
VMAC110 since the exit is taken after the header of the CICS
Nov 13, 1997 record has been input. It can save lots of time if you
have lots of Test CICS Regions whose SMF data you want
recorded (for problem determination) but whose records
you do not want in your daily CICS PDBs, because you can
use IHDR110 to delete all records from your test regions.
See the IHDR110 member for the list of fields that exist
in the Subtype 0/1/2, for Journal/Transaction/Statistics.
Thanks to Chuck Hopf, MBNA, USA.
Change 15.267 Variable SMFRECNR was added to KEEP= list for TYPE90
VMAC90 dataset. See Technical note on Y2K Test System's SMF
Nov 13, 1997 data in MXG Technical Newsletter THIRTY-THREE.
Thanks to Carol Arnold, Brown Brothers Harriman & Co., USA.
Change 15.266 MXG 15.04-MXG 15.05. Current dates in CREATIME, STRTTIME
TYPETMON ENDTIME, UOWTIME, TIESDATE, and TIREDATE were wrong. The
Nov 6, 1997 three lines IF O LE YY LE 1959 THEN YY=YY+2000; should
have been IF 0 LE YY LE 59 THEN YY=YY+2000;
This error caused 1997 TMON dates to be in the year 2097.
Thanks to Colin J. Fester, Engen Petroleum, SOUTH AFRICA.
Change 15.265 NTSMF version 2.0.H caused INPUT STATEMENT EXCEEDED for
VMACNTSM the 0,0 (Discovery) record. The quick circumvention is
Nov 3, 1997 to replace STOPOVER with MISSOVER by using
MACRO STOPOVER MISSOVER % as the first statement, before
the %INCLUDE statement. The fix is contained in 15.06.
Dostları ilə paylaş: |