MXG Tools and Usage - PowerPoint PPT Presentation

About This Presentation
Title:

MXG Tools and Usage

Description:

MXG Tools and Usage Chuck Hopf PPT Available at MXG.COM Download Site VMXGSUM Usage Notes NORMx operands must be contiguous starting at 1. That is, you cannot have ... – PowerPoint PPT presentation

Number of Views:921
Avg rating:3.0/5.0
Slides: 179
Provided by: DavidC224
Category:
Tags: mxg | tools | usage

less

Transcript and Presenter's Notes

Title: MXG Tools and Usage


1
MXG Tools and Usage
  • Chuck Hopf

PPT Available at MXG.COM Download Site
2
Agenda Building the PDB
  • Installing MXG zOS and ASCII
  • Tailoring MXG
  • UTILWORK
  • VMXGALOC\VGETALOC
  • UTILBLDP
  • BLDSMPDB
  • READDB2
  • VMXGSUM

3
Agenda - Analysis
  • ANALID
  • ANALGRID
  • ANALCOMP
  • VMXGPRNT
  • VMXGFIND
  • VMXGSRCH
  • ANALCNCR
  • ANALCAPD

4
Installing MXG zOS
  • Download either the TRSversion.TRS or the
    EBCversion.EBC datasets from the MXG website.
    TRS is a tersed copy of the MXG SOURCLIB and when
    untersed creates the PDS containing all of the
    SOURCE. The EBC version is in IEBUPDTE format
    and requires you to run IEBUPDTE to create the
    SOURCLIB. Either will work it is a matter of
    which you find easier.

5
Installing MXG zOS
  • FTP Tersed
  • //FTPMXG EXEC PGMFTP,PARM'(EXIT4'
  • //SYSPRINT DD SYSOUT,DCBBLKSIZE133
  • //SYSABEND DD SYSOUT
  • //SYSOUT DD SYSOUT
  • //FTPOUT DD SYSOUT
  • //SYSIN DD
  • 70.86.188.234
  • USERID
  • PASSWORD
  • LOCSITE LRECL1024 RECFMFB BLKSIZE6144
  • LOCSITe uNITSYSDA PRIMARY5000 SECONDARY300
  • BINARY
  • GET TER3006.TER 'MXG.TER3006.TER' (REPLACE
  • CLOSE
  • QUIT

6
Installing MXG - zOS
  • FTP IEBUPDTE
  • //FTPMXG EXEC PGMFTP,PARM'(EXIT4'
  • //SYSPRINT DD SYSOUT,DCBBLKSIZE133
  • //SYSABEND DD SYSOUT
  • //SYSOUT DD SYSOUT
  • //FTPOUT DD SYSOUT
  • //SYSIN DD
  • 70.86.188.234
  • USERID
  • PASSWORD
  • LOCSITE LRECL80 RECFMFB BLKSIZE0
  • LOCSITE UNITSYSDA PRIMARY5000
    SECONDARY300
  • GET EBC3006.EBC 'MXG.V3006.EBCDIC (REPLACE
  • CLOSE
  • QUIT

7
Installing MXG - zOS
  • UNTERSE
  • //UNTERSE EXEC PGMTRSMAIN,PARM'UNPACK'
  • //SYSPRINT DD SYSOUT
  • //INFILE DD DSNMXG.TER3006.TER,DISPSHR
  • //OUTFILE DD DSNMXG.V3006.MXG.SOURCLIB,UNITSYSD
    A,
  • // DISP(NEW,CATLG),RECFMFB,LRECL80,B
    LKSIZE0,
  • // AVGRECM,SPACE(80,(3,1,1199)) PDS
    3 MIL 80 BYTE RECS

8
Installing MXG - zOS
  • IEBUPDTE
  • //STEP1 EXEC PGMIEBUPDTE,PARMNEW
  • //SYSPRINT DD DUMMY PRINTS 3,000,000 LINES,
    THE ENTIRE MXG
  • // SOURCE LIBRARY, IF
    UN-DUMMIED DON'T DOIT.
  • //SYSIN DD DSNMXG.V3006.EBCDIC,DISPSHR
  • //SYSUT2 DD DSNMXG.V3006.MXG.SOURCLIB,UNITSYSD
    A,
  • // DISP(NEW,CATLG),RECFMFB,LRECL80,B
    LKSIZE0,
  • // AVGRECM,SPACE(80,(3,1,1199)) PDS
    3 MIL 80 BYTE RECS

9
Installing MXG - zOS
  • Building one or more USERID.SOURCLIBs.
  • Why more than one??
  • Sometimes putting in an entire new release is not
    necessary but it can result in mounds of
    paperwork (which we all love.)
  • Putting in a single member can reduce the
    paperwork since it then becomes a fix and not a
    new release
  • Putting those fixes into a CHANGES.SOURCLIB
    between new releases and then emptying CHANGES
    when you put in the new release can be simpler

10
Installing MXG zOS
  • Building USER SOURCLIBs
  • //STEP2 EXEC PGMIEFBR14
  • //USERID DD DSNMXG.USERID.SOURCLIB,UNITSYSDA,
  • // DISP(NEW,CATLG),RECFMFB,LRECL80,B
    LKSIZE0,
  • // SPACE(CYL,(15,15,99))
  • //CHANGES DD DSNMXG.CHANGES.SOURCLIB,UNITSYSDA
    ,
  • // DISP(NEW,CATLG),RECFMFB,LRECL80,B
    LKSIZE0,
  • // SPACE(CYL,(15,15,99))

11
Installing MXG - zOS
  • Run FORMATS
  • //FORMATS EXEC SAS,ENTRYSAS,
  • // CONFIG'MXG.V3006.MXG.SOURCLIB(CONFI
    GV9)'
  • //SASLOG DD SYSOUT
  • //SASLIST DD SYSOUT
  • //SOURCLIB DD DSNMXG.USERID.SOURCLIB,DISPSHR
  • // DD DSNMXG.CHANGES.SOURCLIB,D
    ISPSHR
  • // DD DSNMXG.V3006.MXG.SOURCLIB
    ,DISPSHR
  • //LIBRARY DD DSNMXG.V3006.MXG.FORMATS,
  • // UNITSYSDA,DISP(NEW,CATLG),SPACE(C
    YL,(12,2))
  • //SYSIN DD
  • INCLUDE SOURCLIB(FORMATS)
  • //

12
Installing MXG - zOS
  • An MXGSAS PROC is no longer required.
  • In your USERID.SOURCLIB create a member MXGNAMES
    as follows
  • LET MXGSOURCMXG.V3006.SOURCLIB
  • LET MXGFORMTMXG.FORMATS
  • LET MXGUSER1MXG.CHANGES.SOURCLIB
  • LET MXGUSER2MXG.USERID.SOURCLIB
  • LET MXGUSER3

13
Installing MXG - zOS
  • Now you can use the base SAS PROC which keeps SAS
    changes out of the way.
  • //STEP1 EXEC SAS,CONFIGMXG.SOURCLIB(CONFIMXG)
  • //MXGNAMES DD DSNMXG.USERID.SOURCLIB(MXGNAMES),DI
    SPSHR
  • //whatever other DDs are needed for the job
  • //SYSIN DD
  • your SAS program

14
Installing MXG zOS
  • NOTE You cannot use the CONFIMXG CONFIG and the
    MXGNAMEs structure with the build of FORMATS.
    That requires the DISP on the LIBRARY DD to be
    OLD. But you also do not need a special PROC
    just the JCL above a few slides.
  • Now MXG is installed on zOS and it is time to
    move on to tailoring.

15
Installing MXG zOS
  • The JCL to complete these tasks can be found in
    the JCLINST members in the SOURCLIB

16
Installing MXG - ASCII
  • There are things you have to decide first
  • Where will you put the MXG SOURCLIB and FORMATS
    libraries?
  • Where do you want to store the data? It does not
    have to be the same drive as the SOURCLIB/FORMATS
  • Do you want to use fixed datasets or pseudo-GDG
    datasets (recommended)?

17
Installing MXG ASCII
  • Create directories use / rather than \ on LINUX
  • MKDIR C\MXG
  • CD MXG
  • MKDIR FORMATS
  • MKDIR USERID
  • MKDIR CHANGES
  • MKDIR SMFDATA
  • MKDIR PDB
  • MKDIR SPIN
  • MKDIR CICSTRAN
  • MKDIR DUMMY
  • MKDIR DB2ACCT
  • MKDIR MWINPUT (optional only needed for VM data)

18
Installing MXG - ASCII
  • Download zip file following the instructions you
    were sent after requesting a download. You are
    looking for dirversion.zip
  • Unzip the file into the SOURCLIB directory
  • Copy AUTOEXEC.SAS into your USERID directory

19
Installing MXG - ASCII
  • Editing AUTOEXEC.SAS use whatever editor you
    like. I use SPFPC largely because it is what I
    have become accustomed to using over the last 4
    decades.
  • Look for
  • FILENAME SOURCLIB ('C\MXG\USERID'
    'C\MXG\SOURCLIB')
  • LIBNAME LIBRARY 'C\MXG\FORMATS'
  • Change
  • Modify to match your configuration (if you put
    MXG somewhere other than c\MXG) and add
    C\MXG\CHANGES between USERID and SOURCLIB.

20
Installing MXG ASCII
  • Editing AUTOEXEC.SAS these should also be
    changed to match your configuration. SMFSMALL
    can be an empty file as can MONWRITE.U. If you
    have no VM systems the MWINPUT line can be
    deleted.
  • FILENAME SMF 'C\MXG\SMFDATA\SMFSMALL.U'
  • RECFMS370VBS
    LRECL32760 BLKSIZE32760
  • LIBNAME PDB 'C\MXG\PDB'
  • LIBNAME CICSTRAN 'C\MXG\CICSTRAN'
  • LIBNAME SPIN 'C\MXG\SPIN'
  • LIBNAME DB2ACCT 'C\MXG\DB2ACCT '
  • / MXG REQUIRED FOR SOME PROGRAMS - CREATE AS
    ZERO LENGTH /
  • FILENAME INSTREAM 'C\MXG\USERID\INSTREAM.SAS'
  • / MXG REQUIRED FOR MONTHBLD /
  • LIBNAME DUMMY 'C\MXG\DUMMY '
  • / FOLLOWING EXAMPLES ARE FOR VM/ESA (AND VM/XA)
    PROCESSING /
  • FILENAME MWINPUT 'C\MXG\VMDATA\MONWRITE.U'
  • RECFMF LRECL4096
    BLKSIZE28672

21
Installing MXG - ASCII
  • Create an MXG shortcut on your desktop
  • Copy a SAS shortcut and add the autoexec so that
    it looks like
  • "C\Program Files\SASHome\SASFoundation\9.3\sas.ex
    e" -CONFIG "C\Program Files\SASHome\SASFoundation
    \9.3\nls\en\sasv9.cfg" -autoexec
    c\mxg\userid\autoexec.sas
  • Change the ICON if you wish here is the one I
    use

22
Installing MXG - ASCII
  • Now click on the ICON you just created that
    should start an interactive SAS session
  • Put include sourclib(formats) in the program
    window and press PF3 to build the FORMATs
    library.
  • Now MXG is installed and it is time to move on to
    tailoring.

23
Tailoring MXG
  • Copy these members from the SOURCLIB to your
    USERID SOURCLIB
  • IMACACCT formats accounting information
  • IMACSHFT sets shift boundaries
  • IMACSPIN sets SPIN limits
  • IMACUCB can change DEVICE type for specific
    UCBS
  • RMFINTRV defining WORKLOADs

24
Tailoring MXG - IMACACCT
  • IMACACCT lets you control the size of the
    individual account fields and the number of
    account fields that are kept for job level
    information. There is documentation in the
    member on tailoring it to meet your site
    standards for accounting data.

25
Tailoring MXG - IMACSHFT
  • IMACSHFT defines the shift boundaries this may
    or may not be important depending on your
    reporting requirements.
  • There is documentation in the member on modifying
    the defaults
  • The MXG defaults are
  • 8AM-5PM Mon-Fri P
  • 5PM-8AM Mon-Fri N
  • 0800 Sat-0800 Mon W
  • There is an optional H for holidays that can also
    be coded

26
Tailoring MXG - IMACSHFT
  • Often times the first time a manager sees a
    report by SHIFT (and the next 150 times) they
    will ask What does P mean?
  • You can assign a format to the SHIFT variable
    that better describes it.
  • PROC FORMAT LIBLIBRARY
  • VALUE SHIFT
  • P0800-1700 Mon-Fri
  • N1700-0800 Mon-Sat
  • WWeekends
  • HHoliday
  • And then add
  • LET MACSHFTquote(FORMAT SHIFT SHIFT.)
  • to your AUTOEXEC.SAS after the invocation
    of VMXGINIT.

27
Tailoring MXG - IMACSPIN
  • Controls the number of times JOB information is
    spun. Complete doc on SPIN logic can be found
    in the DOCPDB member.
  • A job comes in pieces read. Step term. Job
    term, print, purge. Spinning keeps the data out
    of the PDB until all records are received.
  • If accounting/chargeback is important you may
    want to change IMACSPIN to the number of days
    output can sit on the spool before being purged.
  • MACRO _SPINCNT
  • 0 ? to the number of days you want to SPIN

28
Tailoring MXG - IMACUCB
  • Only important if you have many different types
    of tape or disk drives and want to discretely
    identify the TYPE of device.
  • IF 220X LE DEVNR LE 26FX THEN DEVICE'SILO'
  • ELSE IF 0F270X LE DEVNR LE 0F277X THEN
    DEVICE'AUTOLOD'
  • ELSE IF 800x le 9FFx then DEVICEIBM8800
  • ELSE IF 1000x le 1FFFX then DEVICEHDS8000

29
Tailoring MXG RMFINTRV
  • This may be the single most important tailoring
    you need to do. It defines the workloads used in
    constructing the RMFINTRV dataset and is based on
    your WLM profile as recorded in the TYPE 72 RMF
    data.
  • You can use either service classes or report
    classes but trying to use both will invariably
    result in recording more than 100 CPU busy and
    will be flagged as an error.

30
Tailoring MXG - RMFINTRV
  • If you use report classes (recommended) then
    every workload must have a default report class
    defined in your classification rules in WLM.
  • If you use service classes, the granularity of
    the data is restricted to the number of service
    classes.

31
Tailoring MXG - RMFINTRV
  • If you are not familiar with your WLM profile you
    need to become very good friends with the person
    that maintains WLM.
  • UTILWORK is designed to give you a head start on
    constructing the RMFINTRV member in your USERID
    SOURCLIB.

32
UTILWORK
  • Dont understand the documentation on defining
    your workloads to RMFINTRV? This utility will
    build you a skeleton RMFINTRV member based on
    your TYPE72GO records.

33
UTILWORK - Parameters
  • PDB may be either SMF or some libname that
    contains a TYPE72GO dataset. SMF is preferred
    since the normal _ETY72GO exit will suppress
    service classes with no activity in an interval.
    You only need to use a single RMF interval.

34
UTILWORK Parameters
  • USEREPRT YES/NO do you want to use report
    classes or service classes to define workloads.
    Strongly recommended that you use report classes
    since there can be many many more at no real cost.

35
UTILWORK - Example
  • UTILWORK(PDBPDB, OUTFILERMFINTRV,
    USERPRTYES, INTERVALQTRHOUR)

36
UTILWORK - zOS
  • JCL to run UTILWORK
  • //STEP1 EXEC SAS,CONFIGMXG.PROD.SOURCLIB(CONFIMX
    G)
  • //MXGNAMES DD DSNMXG.USERID.SOURCLIB(MXGNAMES),DI
    SPSHR
  • //RMFINTRV DD DSNMXG.USERID.SOURCLIB(RMFINTRV),DI
    SPOLD
  • //SMF DD DSNYOUR.SMF.DATA,DISPSHR
  • //SYSIN DD
  • UTILWORK(PDBSMF,OUTFILERMFINTRV,
  • USERPRTYES,INTERVALQTRHOUR)

37
UTILWORK - ASCII
  • Run UTILWORK on ASCII
  • FILENAME SMF FTP YOUR.SMF.DATA USER'username'
  • HOST'where.i.loading.from RCMD'SITE RDW'
  • S370VS LRECL32760 PASS'password
  • FILENAME RMFINTRV C\MXG\USERID\RMFINTRV.SAS
  • UTILWORK(PDBSMF,OUTFILERMFINTRV,
  • USERPRTYES,INTERVALQTRHOUR)

38
UTILWORK - Example
  • VMXGRMFI( INTERVALQTRHOUR, USEREPRTGOAL,
  • USECNTRLNO,
  • WORK1WORK1/ADABASP//ADABASP/1 ,
  • WORK2WORK2/ADABAST//ADABAST/1
  • WORK3WORK3/ADREPROD//ADREPROD/1 ,
  • WORK4WORK4/ADRETEST//ADRETEST/1 ,
  • WORK5WORK5/BATPROD//BATPROD/2 ,
  • WORK6WORK6/BATTEST//BATTEST/2 ,
  • WORK7WORK7/BPRMGMT//BPRMGMT/1 ,
  • WORK8WORK8/BUSREPRT//BUSREPRT/1 ,
  • WORK9WORK9/CICSNIPP//CICSNIPP/1 ,
  • WORK10WORK10/CICSOTHR//CICSOTHR/1 ,
  • WORK11WORK11/CICSPROD//CICSPROD/1 ,
  • WORK12WORK12/CICSTA//CICSTA/1 ,
  • WORK13WORK13/CICSTAH4//CICSTAH4/1

39
UTILWORK -Editing
  • Once you have the base RMFINTRV, you may want to
    combine some of the workloads it found into a
    single workload
  • These all represent production CICS response time
    service classes
  • WORK12WORK12/CICSTA//CICSTA/1 ,
  • WORK13WORK13/CICSTAH4//CICSTAH4/1 ,
  • WORK15WORK15/CICSTRNT//CICSTRNT/1 ,
  • WORK16WORK16/CICSTXM//CICSTXM/1 ,
  • And could be combined into
  • WORK12PRODCICS/PRODCICS//CICSTA CICSTAH4
    CICSTRNT CICSTXM/1 ,

40
UTILWORK - Caveat
  • WORKLOADs must be continuous so when you combine
    multiples into one you will need to renumber and
    remove the unneeded ones
  • WORK1 WORK2 WORK3 etc works
  • WORK1 WORK3 will not fail but will never see
    work3 or anything beyond WORK1

41
UTILWORK - Workloads
  • Each workload has up to 7 possible sub-parameters
  • First x characters of the variable names in
    RMFINTRV (if this is PRODCICS you would see
    variable names like PRODCICSCPU in the RMFINTRV
    dataset.)
  • Text used in labels (up to 9 characters)
  • Blank was for performance groups now archaic
    and is ignored
  • Service/report classes in the workload
  • Number of periods in the workload
  • System IDs to which this workload applies
  • Sysplex IDs to which this workload applies

42
UTILWORK Final Edit
VMXGRMFI(PDBPDB, OUTDATAPDB.RMFINTRV,
SYNC591.1, INTERVALQTRHOUR,
IMACWORKNO, USECNTRLNO,
USEREPRTGOAL, WORK1BAT/TEST BATCH/ /
BATTEST, WORK2CICS/PROD CICS/ /CICSNIPP
CICSOTHR CICSTA CICSTXM CICSPROD,
WORK3DB2/PROD DB2/ /DB2PROD,
WORK4CICT/CICS TEST/ /CICSTEST CICSTRNT,
WORK5DB2T/DB2 TEST/ /DB2TEST,
WORK6ADAP/ADABAS PROD/ /ADABASP,
WORK7ADAT/ADABAS TEST/ /ADABAST,
WORK8REPP/REP DATABASE PROD/ /ADREPROD,
WORK9REPT/REP DATABAEE TEST/ /ADRETEST,
WORK10BATP/BATCH PROD/ /BATPROD,
43
UTILWORK Final Edit
WORK11DDFP/DDF PROD/ /DDFDB2P TESTDB2,
WORK12DDFU/DDF UXX PROD/ /UXXIF3 UXXMS3 UXXRS3
UXXCOM UXXCLB BPRMGMT BUSREPRT
CLIADMIN CLIAUDIT CLIBILL CLIREQST
CONSADMN CONTMGMT COREINFR DQMMGMT ENTARCH
ESBBUS GSMUTIL IDSRCH IDSRVICE
PASADMIN PRTADMIN RPTDELIV RPTJOBS
RPTQUERY SYSCONF TAXAUTH UNISEC UTILCOMN
UTILORDR UXXPRC, WORK13DDFW/DDF TEST/
/DDFDB2W UXXIF12 UXXMS12 UXXRS12 DDFTEST
DDFACCT DDFAPP, WORK14HSM/HSM/
/DFHSM, WORK15EXBP/REP BROKER PROD/
/EXBPROD, WORK16EXBT/REP BROKER TEST/
/EXBTEST, WORK17NDM/NDM/ /NDM,
WORK18REPB/REP SRV PROD/ /REPLPROD,
WORK19REPS/REP SRV TEST/ /REPLTEST REPL23,
WORK20STCP/STC PRODUCTS/ /STCPROD NETWORK
MONITORS, WORK21STCS/STC SYSTEM/ /STCSYS,
WORK22TSO/TSO/ /TSO, WORK23XPTR/XPTR
PROD/ /XPTRPROD, WORK24XPTT/XPTR TEST/
/XPTRTEST, WORK25STAG/STAGING/ /STAGING,
WORK26OMVS/OMVS/ /REPOMVS)
44
Getting Ready for BUILDPDB
  • Do you want to use GDGs or fixed datasets? GDGs
    are recommended.
  • No need for backups
  • Data retention is simpler
  • On zOS HSM can handle migration and recalls as
    needed
  • On ASCII pseudo-GDG structure using dates in
    the directories has similar advantages

45
Building GDGs - zOS
  • //STEP1 EXEC PGMIDCAMS
  • //SYSPRINT DD SYSOUT
  • //SYSIN DD
  • DEFINE GENERATIONDATAGROUP -
  • (NAME(MXG.DAILY.PDB) LIMIT(255) -
  • NOEMPTY )
  • DEFINE GENERATIONDATAGROUP -
  • (NAME(MXG.DAILY.SPIN) LIMIT(7) -
  • NOEMPTY )
  • DEFINE GENERATIONDATAGROUP -
  • (NAME(MXG.WEEKLY.PDB) LIMIT(255) -
  • NOEMPTY )
  • DEFINE GENERATIONDATAGROUP -
  • (NAME(MXG.DAILY.DB2ACCT) LIMIT(20) -
  • NOEMPTY )
  • DEFINE GENERATIONDATAGROUP -
  • (NAME(MXG.DAILY.CICSTRAN) LIMIT(20) -
  • NOEMPTY )
  • DEFINE GENERATIONDATAGROUP -

46
Building GDGs - zOS
  • List above is incomplete. Depending on how you
    structure your jobs you may need more datasets
  • GDG limits are arbitrary they can be anything
    up to 255 as written above you would have 2/3
    of a year of daily datasets, almost 5 years of
    weekly, and 5 years of monthly data. It may be
    more or less than you need.
  • JCL to define GDGs is in the SOURCLIB as JCLSPGDG

47
GDGs on ASCII
  • ASCII systems dont support the concept of a GDG
    so MXG uses VMXGALOC and VGETALOC to simulate GDG
    structures by building directories in a place of
    your choice with a character (D for daily)
    followed by a date in the format of your
    choosing. It then keeps as many copies as you
    specify and deletes them when their time has come.

48
VMXGALOC Pseudo GDGs
  • ASCII ONLY Windows or LINUX
  • Allocates directories and assigns LIBNAMEs using
    a date based structure
  • Allows you to keep as many generations as you
    wish of each type of data daily, weekly, trend,
    spin, db2acct, cicstran, monthly

49
VMXGALOC Parameters
  • BASEDIRC\MXG where do you want to put the
    directories? Can be any valid location so long
    as it is connected to the system executing
    SAS/MXG
  • FORCEDAY used in the event of a rerun or the
    need to report for some given day - can be a SAS
    date value 27AUG12 or a relative value
    today()-2

50
VMXGALOC - Parameters
  • WEEKSTRTMON the day of the week on which your
    week starts. MON is the MXG default
  • Number of generations -
  • WEEKKEEP12 keep 12 weeks
  • DAYSKEEP14 keep 14 days
  • MNTHKEEP15 keep 15 months
  • CICSKEEP15 keep 15 days of CICSTRAN
  • DB2KEEP14 keep 14 days of DB2ACCT

51
VMXGALOC Parameters
  • RUNWTDNO change to yes to run week logic but
    will only run on the first day of the week
  • WTD to run week to date
  • RUNMTDNO change to yes to run month logic but
    will only run on the first day of the month
  • MTD to run month to date logic
  • TRENDINGdaily or weekly how often to update
    TREND databases
  • READONLYyes/no if NO the aging of old
    generations is suppressed
  • CLEARALLYES clears the normal default LIBNAMEs
    from AUTOEXEC

52
VMXGALOC Parameters
  • DATEFMT can be any valid DATE format
  • date date7 date9
  • mmddyy6 8 10
  • ddmmyy 6 8 10
  • yymmdd 6 8 10
  • julian 5 7
  • If the format (mmddyy8. for example) contains /
    then the equivalent mmddyyd8. is substituted
  • An invalid datefmt will result in an ABEND

53
VGETALOC
  • VGETALOC will fetch a range of dates for
    daily/weekly/monthly PDBs and pass that
    information to VMXGSET so that you could say
    something like
  • vgetaloc(getdaterange12jul12 23jul12,
    typeofdatadaily,ba
    sedirc\mxg)
    data jobs
  • Set vmxgset(datasetjobs)

54
VGETALOC
  • Can only be used on ASCII systems where VMXGALOC
    has been used to create pseudo-GDGs
  • If a date in the date range does not exist it is
    skipped

55
VGETALOC - Parameters
  • GETDATERANGE the range of dates in the form of
    SAS date values to be searched or relative days
    from today as in -5 -10
  • TYPEOFDATA DAILY WEEKLY MONTHLY?
  • DATEFORMAT the DATE format used in VMXGALOC
  • BASEDIR the directory as specified in VMXGALOC

56
UTILBLDP
  • Normally the code to read an SMF record is
  • INCLUDE SOURCLIB(TYPE30)
  • And to read two types you might code
  • INCLUDE SOURCLIB(TYPE30)
  • INCLUDE SOURCLIB(TYPE1415)
  • But that would cause two passes of the SMF
    dataset which can be very large and make this an
    expensive and time consuming process.
  • With UTILBLDP this becomes
  • UTILBLDP(USERADD30 1415, BUILDPDBNO,SORTOUTNO,
    OUTFILEINSTREAM)
  • INCLUDE INSTREAM

57
UTILBLDP
  • UTILBLDP is a macro designed to simplify adding
    records to the normal MXG PDB (performance data
    base.) The coding in exits is not difficult if
    you understand it all but can be arcane to the
    uninitiated.
  • It can also be used to read multiple kinds of SMF
    data in a single pass of the SMF data and create
    the SAS datasets in WORK or in a PDB.

58
UTILBLDP
  • For documentation on all parameters and usage see
    the member in the MXG SOURCLIB
  • For our purposes there are only a few important
    parameters
  • SORTOUTNO suppresses sorting and writing of
    the data to the PDB DD. You may want to use the
    sort (just add a PDB DD to your JCL) as it will
    remove any duplicate records.
  • USERADD a list of the record types you wish to
    read 30 6 1415 64 70 etc.

59
UTILBLDP
  • OUTFILE INSTREAM writes the data to the
    temporary dataset defined by the INSTREAM DD. You
    can then simply INCLUDE INSTREAM to execute the
    code. If you want to STORE the code for future
    use (or just to see what the generated code looks
    like) route to a PDB member or a sequential
    dataset.
  • BUILDPDBNO suppresses the logic that builds
    the full MXG PDB.

60
BLDSMPDB
  • Build the daily/weekly/monthly/trend databases
    from a single job on ASCII platforms (the JCL
    just would not work on zOS could be done using
    DYNALLOC and LIBNAME statements but that would
    preclude the use of GDGs.)

61
BLDSMPDB
  • There are numerous parameters too many to
    mention here but all are documented in the member
    of SOURCLIB
  • Allows for reruns
  • User code
  • Run daily/weekly/monthly
  • Run WTD MTD
  • Run TRENDing daily/weekly
  • Read DCOLLECT and Tape management data
  • And much much more

62
Usage
  • Combine these to tailor your PDB
  • Use UTILBLDP to add/subtract record types and
    specify things to run after BUILDPDB
  • Use BLDSMPDB to control the execution of BUILDPDB

63
Example 1
  • Suppress CICSTRAN and DB2ACCT but process
    statistics datasets for both CICS and DB2
  • Add TYPE6156 and TYPE42 data to the PDB
  • Suppress TYPE74 data

64
Example 1- Break up SMF
  • Break the daily SMF data into the pieces you need
  • For the base PDB you need
  • 0 21 26 30 42 61 65 66 70-73 75-79 100 102 110.2
  • To process CICSTRAN you need 110.1
  • To process DB2ACCT you need 101 102

65
Example 1- Break up SMF
  • IFASMFDP with 4 OUTPUT DDs
  • ALLDATA
  • PDBDATA
  • CICSDATA
  • DB2DATA
  • 1 INPUT DD pointing to DUMPED SMF data DUMPIN

66
Example 1- Break up SMF
  • INDD(DUMPIN,OPTIONS(DUMP))
  • OUTDD(ALLDATA,TYPE(000255))
  • OUTDD(CICSDATA,TYPE(110(1)))
  • OUTDD(DB2DATA,TYPE(101,102))
  • OUTDD(PDBDATA,
  • TYPE(0,21,26,30,42,61,65,66,7073,
  • 7579,100,102,110(2))

67
Example 1 Allocate the SMF Data
  • zOS a simple DD statement
  • ASCII there are two ways
  • Download as RECFMU
  • Use the SAS/FTP engine

68
Example 1 Allocate the SMF Data
  • FTP Access the best choice as it avoids moving
    the data twice once to store it and once to
    read it
  • FILENAME SMF FTP "'MVS.DSNAME'" USER'USERNAME'
    HOST'YOUR HOST NAME S370VS PASS'pswd'
    RCMD'SITE RDW' LRECL32760 DEBUG
  • Note if your SMF data is on
    tape, you should use
  • RCMD'SITE RDW
    READTAPEFORMATS'

69
Example 1 Allocate the SMF Data
  • Download
  • //FTP EXEC PGMFTP,PARM'(EXIT4'
  • //SYSPRINT DD SYSOUT
  • //OUTPUT DD SYSOUT
  • //SMFFILE DD DSNYOUR.SMF.DATA,
  • // DCBRECFMU,BLKSIZE32760,DISPSHR
  • //INPUT DD
  • ftp.mxg.com
  • mxgtech mxgtech
  • quote PASV
  • bin
  • put //DDSMFFILE c\yourname.smf
  • close
  • quit
  • /

70
Example 1 Allocate the SMF Data
  • Download then you need a filename statement
  • FILENAME SMF C\yourname.smf RECFMS370VBS

71
Example 1 - MACKEEP
  • LET MACKEEPQUOTE(
  • MACRO _WCICTRN _NULL_ MACRO _LCICTRN _NULL_
  • MACRO _WCICBAD _NULL_ MACRO _LCICBAD _NULL_
  • MACRO _SCICBAD MACRO _WDB2ACC _NULL_
  • MACRO _LDB2ACC _NULL_ MACRO _SDB2ACC
  • MACRO _WDB2ACP _NULL_ MACRO _LDB2ACP _NULL_
  • MACRO _SDB2ACP MACRO _WDB2ACB _NULL_
  • MACRO _LDB2ACB _NULL_ MACRO _SDB2ACB
  • MACRO _WDB2ACG _NULL_ MACRO _LDB2ACG _NULL_
  • MACRO _SDB2ACG MACRO _WDB2ACR _NULL_
  • MACRO _LDB2ACR _NULL_ MACRO _SDB2ACR
  • MACRO _WDB2ACW _NULL_ MACRO _LDB2ACW _NULL_
  • MACRO _SDB2ACW
  • )

72
Example 1 - UTILBLDP
  • UTILBLDP(SUPPRESS74,
  • USERADD42 6156,
  • OUTFILEINSTREAM,
  • MXGINCL,INCLAFTRASUM70PR ASUMTAPE)

73
Example 1 - BLDSMPDB
  • ASCII systems
  • BLDSMPDB(
  • RUNDAYYES,RUNWEEKWTD,RUNMONTHMTD.
  • AUTOALOCYES,BASEDIRC\MXG,DATEFMTYYMMDD8.,
  • BUILDPDBINSTREAM,
  • RUNTRNDDAILY,
  • WEEKSTRTSUN
  • )
  • There are many other parameters that can be
    specified - limit the number of
    days/weeks/months/spin etc that are kept. See
    the doc in the member.

74
Example 1 - BLDSMPDB
  • zOS systems
  • BLDSMPDB(
  • RUNDAYYES,RUNWEEKNO,RUNMONTHNO.
  • BUILDPDBINSTREAM
  • )
  • Not all parameters are applicable on zOS. See
    the doc in the member.

75
Example 1 DB2/CICS Data
  • On ASCII this is not as big an issue as it is on
    zOS. On an ASCII platform it may be simpler to
    let the DB2 and CICS data flow through the daily
    PDB but they can still be separated using these
    techniques. The downside of running them as a
    part of BUILDPDB is increased run times. The
    downside of running them separately is the number
    of threads that will be running at the same time.

76
Example 1 DB2 Accounting
  • Once again using the same techniques already
    described allocate the SMF data for DB2
  • VMXGALOC(BASEDIRC\MXG,DATEFMTYYMMDD8.)
  • READDB2(IFCIDSACCOUNT,PDBOUTPDB)

77
Example 1 - CICSTRAN
  • Once again using the same techniques already
    described allocate the SMF data for DB2
  • VMXGALOC(BASEDIRC\MXG,DATEFMTYYMMDD8.)
  • let mackeepquote(
  • _N110
  • MACRO _WCICTRN PDB.CICSTRAN
  • MACRO _LCICTRN PDB.CICSTRAN
  • MACRO _WCICBAD PDB.CICSBAD
  • MACRO _LCICBAD PDB.CICSBAD
  • MACRO _SCICS
  • )
  • INCLUDE SOURCLIB(TYPE110)

78
Example 1 - ASUMUOW
  • Important if you have a lot of MRO CICS and/or
    CICS with DB2
  • VMXGALOC(BASEDIRC\MXG,DATEFMTYYMMDD8.)
  • INCLUDE SOURClIB(ASUMUOW)
  • Be sure to read the comments in the ASUMUOW
    VMXGUOW and ADOCUOW you will likely need to
    make modifications to ASUMUOW

79
Examples
  • All of these and others are in the SOURCLIB as
    members BLDSPSM and JCLSPSM (for zOS).
  • These members will break up the processing of SMF
    data into more bite sized chunks and (especially
    on zOS) make better use of resources since the
    jobs can be run at the same time up to the point
    where the DB2/CICS data gets brought into the
    PDB.
  • There is DOC in the members and in ADOCSPLT

80
ANALID
  • New MACRO to create an SMF Audit dataset and
    report
  • READSMFNO
  • PRINTYES
  • PDBOUTPDB
  • PERCENTSYES
  • ODS parameters

81
ANALID READSMF
  • READSMFYES will read an SMF dataset. The
    default of NO is used in BUILDPDB to read the ID
    dataset already being created.
  • Driven by the value of the SMFAUDIT macro
    variable in VMXGINIT. If set to NO with a LET
    the older style report is created with fewer
    variables.

82
ANALID PRINT/PDBOUT/PERCENTS
  • PRINTYES prints SMF Audit report. To suppress
    the report specify NO.
  • PDBOUTPDB the destination of the new SMFRECNT
    dataset.
  • PERCENTSYES calculates the percentage of the
    data for each system represented by a single
    type/subtype.

83
ANALID ODS Parameters
  • ODSTYPE if you want to create HTML output
    specify HTML or specify some other valid ODS
    value. If blank ODS is not used.
  • ODSPATH the pathname for the ODS output
    typically a directory on ASCII or a PDSE or zFS
    directory on zOS
  • ODSFILE the name of the output that will be
    created

84
ANALID - Example
  • ANALID(
  • READSMFYES,
  • PDBOUTPDB,
  • PRINTYES,
  • ODSTYPEHTML,
  • ODSPATHE\.
  • ODSFILEANALID.HTML)

85
ANALID Sample
86
ANALID - Sample
87
ANALID - Sample
88
ANALID Sample
89
ANALID - Sample
90
ANALID - Sample
91
ANALID - Sample
92
ANALID - Sample
93
ANALID - Sample
94
ANALGRID
  • Creates a dense color coded grid of values using
    PROC REPORT
  • Does not require SAS/GRAPH
  • Works on all SAS versions 9.1.3 and above

95
ANALGRID
  • Example 1
  • Read ASUM70LP and for the specified system create
    a grid of CPU busy for a day.
  • This is the default with addition of an INCODE to
    select a specific LPAR
  • ANALGRID(INCODEIF LPARNAMESYSG)

96
ANALGRID
97
ANALGRID
  • Example 2 compare year to year same month
    excluding weekdays and holidays
  • ANALGRID(
  • INDATARMFINTRV,
  • SORTBYSYSTEM MONTH,
  • SYSTEMSYSG,
  • INCODEMONTHDATEPART(STARTIME)-DAY(DATEPART(STAR
    TIME))1
  • FORMAT MONTH MONYY.
  • if 1 lt weekday(datepart(startime)) lt 7
  • if month(datepart(startime))1
  • if datepart(startime) not in('26dec11'd,'24nov
    11'd,'25nov11'd,
  • '05sep11'd,'04jul11'd,'30may11'd,'21feb11'd
    ,'17jan11'd,'24dec10'd,
  • '25nov10'd,'26nov10'd,'16jan12'd,'02jan12'd
    ,'16jan12'd,'20feb12'd),
  • TITLE1 CPU Busy,
  • VARIABLEpctcpuby,VARLABEL CPU,varformat5.2,
  • ROWVARIABLEDATE,ROWLABELDATE,ROWFORMATDATE.,
  • ODSPATHe,ODSFILEapril.html)

98
ANALGRID
99
ANALGRID
100
ANALGRID
  • You have complete control of
  • Colors and levels
  • Column and row variables
  • Column and row labels
  • Column and row formats

101
ANALGRID
  • ANALGRID(

  • SYSTEMSYSG,

  • INDATARMFINTRV,

  • SORTBYSYSTEM,

  • VARFORMATTIME12.2,

  • dateslastweek,

  • BKT1'0100'T/BLUE/WHITE,

  • BKT2'0200'T/GREEN/WHITE,

  • BKT3'0300'T/CYAN/BLACK,

  • BKT4,

  • WEIGHT,

  • SORTLABELSystem,

  • STATSUM,

  • VARIABLECPUTM,

  • odspathe,

  • odsfilecputime.html,

  • VARLABELCPU TIME,

  • COLVARIABLETIME,COLLABELTIME,COLFORMATTI
    ME5.,
  • ROWVARIABLEDATE,ROWLABELDATE,ROWFORMATDA
    TE.

102
ANALGRID
103
ANALCOMP
  • Compare variables across time
  • Days
  • Weeks
  • Months
  • Years

104
ANALCOMP
  • Uses ODS graphics to create plots of results
  • May be summarized to any valid VMXGDUR value
  • Too low a level of summarization is messy
  • For a week, QTRHOUR yields 967 or 672 data
    points and becomes hard to interpret

105
ANALCOMP
filename html /u/mvsdir/public_html ods
graphics on/height7in width9in
imagename'cpuyears' outputfmtgif ods html
pathhtml body'trending.html' analcomp(indatar
mfintrv, compintvweek, xaxisHOUR,
datetimestartime, summaryyes, incodeif
system'SYSG' cputmcputmsu_sec/28070.1784
cputm cpuziptm time8. label
shift'Shift', footnoteCPU Time Normalized to
2098-Y03, varscputm cpuziptm, companyMXG
Sample, compare26jun13, nrperiods3 ) run
106
ANALCOMP
107
ANALCOMP
108
ANALCOMP
proc format value shift 'P''Mon-Fri
800-1700' 'N''Mon-Fri 1700-800'
'W''Weekend' filename html /u/mvsdir/public_htm
l ods graphics on/height7in width9in
imagename'cpuyears outputfmtgif ods html
pathhtml body'trending.html' analcomp(indatar
mfintrv, sortbyshift, compintvyear,
xaxisweek, datetimestartime, incodeif
system'SYSG' cputmcputmsu_sec/28070.1784
format shift shift. cputm cpuziptm time8.
label shift'Shift', footnoteCPU Time
Normalized to 2098-Y03, varscputm cpuziptm,
companyMXG Sample, compare01jan11,nrperiods3
)
109
(No Transcript)
110
ANALCOMP
111
VMXGPRNT
  • Utility to print any SAS dataset with labels
    modified to include the variable name and/or
    create a comma delimited output (CSV).

112
VMXGPRNT Parameters
  • SP_DSET dataset to be printed defaults to
    _LAST_
  • SP_NOBS number of OBS to be printed defaults
    to 20
  • SP_REMV remove from labels in CSV file
    defaults to NO

113
VMXGPRNT Parameters
  • TMPPRNT destination for a temporary dataset
    on zOS it will be constructed and dynalloced as
    a temporary dataset but on ASCII will be placed
    in your SASUSER directory. Defaults to
    TMPPRNT.SAS
  • BYLST list of BY variables defaults to a null
    string

114
VMXGPRNT Parameters
  • VARLST list of variables to be printed. Default
    is a null string which will print all variables
  • NOEXIMSG suppresses various warnings/notes
    default is YES
  • SP_OPNS PROC PRINT options default is SPLIT

115
VMXGPRNT Example 1
  • VMXGPRNT(SP_DSETPDB.DB2ACCT,SP_NOBS3)
  • Print PDB.DB2ACCT

116
VMXGPRNT Example 1
117
VMXGPRNT Example 2
  • Create a CSV file
  • Filename csv h\mxg\vmxgprnt.csv
  • ods csvall filecsv

  • vmxgprnt(SP_DSETPDB.DB2ACCT,SP_NOBS3,sp_remvY)

  • run

  • ods csvall close

  • run


118
VMXGPRNT Example 2
119
VMXGFIND
  • Utility that will find every OBS in every dataset
    where some condition is satisfied and make a
    copy/print the observations.
  • For example
  • Find all obs where JOBCICS

120
VMXGFIND Parameters
  • PDB LIBNAME to be searched default is PDB
    can be 1 or many
  • PDBOUT where to put the output datasets
    datasets here will be named DDNAME_dataset where
    DDNAME is the libname where they were found

121
VMXGFIND Parameters
  • KEEPIN a list of variables that are used in the
    comparison
  • FIND the comparison for example
  • JobCICS
  • KEEPINSTARTIME STRTTIME INTBTIME,
  • FIND IF ('31JAN2010101112'DT LE STARTIME LE
    '31JAN2010222324'DT )
  • OR ('31JAN2010101112'DT LE STRTTIME LE
    '31JAN2010222324'DT )
  • OR ('31JAN2010101112'DT LE INTBTIME LE
    '31JAN2010222324'DT ) ,

122
VMXGFIND Parameters
  • PRINT default is NO
  • YES print all the observations
  • NO no print
  • xxx print xxx observations

123
VMXGFIND
  • If PRINTYES or xxx then VMXGPRNT is used to do
    the printing
  • Example 1
  • VMXGFIND(FINDQWHSSSIDDBTB,PRINT3)

124
VMXGFIND
125
VMXGSRCH
  • Utility that will find every observation in every
    dataset in every allocated SAS data library where
    the value of the observation contains some
    string.
  • Note libraries must have been allocated either
    explicitly (LIBNAME statement) or by a DATA/PROC
    step.

126
VMXGSRCH Parameters
  • LIBNAME the libname to be searched. Default is a
    NULL string. _ALL_ will search all allocated SAS
    data libraries (they dont have to be MXG) and
    anything else will search that specific LIBNAME.
    Only LIBNAMEs that have been opened will be
    found!!!!! You may need to insert a LIBNAME on
    zOS.

127
VMXGSRCH - Parameters
  • COPYTO copy the datasets and observations that
    match to this LIBNAME
  • NOBS the number of OBS to print default is MAX
  • LOG a large number of lines may be generated
    LOGNO suppresses them. Default is YES

128
VMXGSRCH - Parameters
  • VALUE the value to search for
  • Results what you want us to do
  • PRINT just print the obs/datasets that match
  • COPYONLY copy the datasets but dont print
  • COUNT just produce a count of
    datasets/obs/variables that match
  • LABEL produce a list of variables/datasets
    where the value is in the label
  • FORMAT produce a list of variables/datasets
    where the value is in the format

129
VMXGSRCH Example 1
  • VMXGSRCH( LOGNO,RESULTSCOUNT,
    VALUED2DD,LIBNAMEPDB)

130
VMXGSRCH- Example 1
131
VMXGSRCH Example 2
  • VMXGSRCH( LOGNO,RESULTSPRINT,NOBS2,
    VALUED2DD,LIBNAMEPDB)

132
VMXGSRCH Example 2
133
VMXGSRCH Example 3
  • VMXGSRCH( LOGNO,RESULTSPRINT,NOBS2,
    VALUED2DD,LIBNAMEPDB, COPYTOWORK)

134
VMXGSRCH Example 3
135
VMXGSRCH Example 4
  • VMXGSRCH( LOGNO,RESULTSCOPYONLY,
    VALUED2DD,LIBNAMEPDB, COPYTOWORK)

136
VMXGSRCH Example 4
137
VMXGSRCH Example 5
  • VMXGSRCH(VALUECPU,RESULTSLABEL)
  • NOTE Values are case sensitive

138
VMXGSRCH Example 5
139
VMXGSRCH Example 6
  • VMXGSRCH(VALUETIME,RESULTSFORMAT)

140
VMXGSRCH Example 6
141
READDB2
  • MXG supplied macro that generates the code to
    read all of the different types of DB2 SMF data
    (all IFCIDs). It has been enhanced to make a
    copy of the SMF data and allow for selection
    based on reading the record headers only which
    makes it very fast.

142
READDB2
  • For a full list of parameters and usage see
    READDB2 member in the MXG SOURCLIB
  • Concentration here will be on selection
    parameters and copying of SMF data

143
READDB2
  • SMFOUT DDNAME to which SMF data will be copied
    if blank no copy is made
  • COPYONLY YES/NO only copy SMF data do not
    format SAS datasets
  • Useful to make mini-SMF files to feed to DB2PM or
    send off to vendors
  • PDBOUT DDNAME to which SAS datasets are written
    (WORK is default if left blank)

144
READDB2 - Parameters
  • SYSTEM list of systems
  • PLAN list of plan names
  • AUTHID list of authorization IDs
  • CORRID list of correlation IDs
  • CONNID list of connection IDs
  • DB2 list of DB2 subsystems
  • CONNTYPE list of connect types

145
READDB2 - Parameters
  • TRANNAME list of end-user transaction names
  • PACKAGE list of package names
  • SMFBEGIN SAS datetime constant starting point
    of data
  • SMFEND SAS datetime constant end point of
    data
  • SAS datetime constants are of the form
    01sep10013000 no quotes are needed

146
READDB2
  • All values in lists separated by spaces
  • All parameters separated by commas (except the
    last one)
  • All values are automatically wild carded that
    is, however many bytes are in the value is the
    length of the compare
  • SMFBEGN earliest time in form ddmmmyyhhmmss
    or 10OCT08150000
  • SMFEND latest time in same form

147
READDB2
  • READDB2(TRANNAMEOLB_DISP, COPYONLYYES,SMFOUTS
    MFOUT)
  • Copy records where TRANNAME starts with OLB_DISP
    to SMFOUT DD but do not create SAS datasets
  • READDB2(TRANNAMEOLB,PDBWORK, SMFOUTSMFOUT)
  • Copy records where TRANNAME starts with OLB and
    also place them in SAS datasets in the WORK
    dataset

148
VMXGSUM
  • Generalized summarization of ANY SAS dataset
  • Uses PROC MEANS to do summarization
  • SORTs data
  • Allows for changes in input and output data
  • Optimizes variables kept
  • Carries labels and formats thru summarization
  • Allows for long variable names
  • Allows for normalization of variables and
    changing time intervals

149
VMXGSUM
  • Common in reporting
  • DATA xxxx
  • SET yyyy
  • PROC SORT DATAxxxx
  • PROC MEANS DATAXXXX OUTzzzz
  • DATA final
  • SET zzzz

150
VMXGSUM
  • VMXGSUM is a short-hand way of coding a
    repetitive set of commands.
  • Used extensively internally in many MXG members
    but especially common in ASUM and TRND
    members.

151
VMXGSUM - SYNTAX
  • VMXGSUM(
  • INDATA input dataset(s) name
  • OUTDATA output dataset name
  • SUMBY list of variables by which data should be
    sorted
  • INCODE a stub of SAS code executed during the
    first data step
  • OUTCODE a stub of SAS code executed during the
    final data step

152
VMXGSUM - SYNTAX
  • INTERVAL how to change the time interval.
    Valid values are
  • QTRHOUR HALFHOUR HOUR THREEHR
  • MINUTE WEEK MONTH MYTIME
  • DATETIME the variable name of the variable
    containing the datetime value on which INTERVAL
    will be applied
  • SYNC59 if your time is synched to 59 minutes,
    will add 60 seconds before calculating interval
    if set to YES

153
VMXGSUM - SYNTAX
  • ID list of variables that will be carried
    forward as ID values
  • AUTONAMEYES/NO AUTONAME YES says to use the
    autonaming functions of SAS V8 to name the output
    variables.
  • This allows the specification of the same
    variable name in multiple lists but changes the
    output variable name to variable_suffix where
    suffix is the name of the function performed on
    the variable.

154
VMXGSUM - SYNTAX
  • SUM list of variables to be summed
  • MAX list of variables to be maxxed
  • MIN list of variables to be minned
  • MEAN list of variables to be meaned
  • P1 list of variables to get percentile 1
  • P5 5th percentile variables
  • P10 10th percentile variables

155
VMXGSUM - SYNTAX
  • P25 P50 P75 P90 P95 P99 - percentile values
  • STD - Standard Deviation
  • VAR - variance
  • CV - coefficient of variance
  • STDERR - Standard error
  • KURTOSIS - Kurtosis
  • T - T value

156
VMXGSUM - Syntax
  • NORM1-NORM99 - normalization of data.
    Maintaining rates as rates and not averages of
    averages. On the front-end, the rate has to be
    multiplied by the duration and on the back end
    divided again to recalculate the correct rate.

157
VMXGSUM - SYNTAX
  • NORM1-NORM99 - syntax
  • rate1 rate2 rate3ratex/duration
  • List the variables to be normalized followed by a
    / then the variable to be used to do the
    normalization.

158
VMXGSUM - SYNTAX
  • There are other parameters. See the documentation
    in the member for usage and the member ADOCSUM.

159
VMXGSUM - Example 1
  • Summarize the dataset TYPETMNT by DEVICE and
    TMNTTIME calculating average mount delay and the
    total number of mounts per quarter hour.

vmxgsum( indatapdb.typetmnt,
outdatatapemnts, sumbydevice tmnttime,
intervalqtrhour, datetimetmnttime,
meantapmnttm, freqmounts )
160
VMXGSUM - Example 2
  • Summarize the Goal Mode type 72 records for the
    TSO service class calculating the average
    response time, the number of transactions at one
    hour intervals by period.

161
VMXGSUM - Example 2
VMXGSUM( INDATAPDB.TYPE72GO,
OUTDATATSOSUM, SUMBYSTARTIME PERIOD,
INCODE IF SRVCLASSTSO, SUMRESPAVG
NUMTRAN, NORM1RESPAVG/NUMTRAN,
INTERVALHOUR, DATETIMESTARTIME )
162
VMXGSUM Usage Notes
  • NORMx operands must be contiguous starting at 1.
    That is, you cannot have NORM1 and NORM3 without
    a NORM2.

163
VMXGSUM Usage Notes
  • The first data step is almost always converted to
    a VIEW rather than a real data step.
  • KEEPALLNO is resource intensive and not really
    needed except in odd cases. KEEPALLYES is much
    preferred. The keep lists on all output
    datasets are optimized regardless of KEEPALL
    setting.

164
Why VMXGSUM?
  • So why not just use PROC MEANS with CLASS
    operands?
  • VMXGSUM in tests is usually much more efficient
    and in some cases will do the summarization where
    using PROC MEANS or PROC SUMMARY with CLASS
    operands runs out of memory.
  • This is especially true with the current release
    of SAS (9.1.3 SP4) on zOS which is defaulting to
    using THREADS.

165
ANALCNCR
  • Counts concurrent events. How many of something
    were happening at the same time.

166
ANALCNCR - History
  • Method used in original release of MXG
  • DO TIMEBEGIN TO END BY 5
  • OUTPUT
  • END
  • Then add up all the observations with a given
    value of TIME. Created a HUGE number of
    observations and was cumbersome.

167
ANALCNCR - History
  • Method used with ANALCNCR
  • TIMEBEGINCOUNT1OUTPUT
  • TIMEENDCOUNT-1OUTPUT
  • Now add up the counts by time and you are done
    (basically.) Many many fewer observations.

168
ANALCNCR - History
  • If there are three tape allocations
  • Allocation 1 begins at 0800 ends at 0830
  • Allocation 2 begins at 0815 ends at 0825
  • Allocation 3 begins at 0820 ends at 0845

169
ANALCNCR - History
  • MAX of 3 concurrent allocations
  • 15 minutes of 1
  • 5 minutes of 2
  • 5 minutes of 3
  • 5 minutes of 2
  • 15 minutes of 1
  • Old method
  • Allocation 1 - 1800/5360 obs
  • Allocation 2 - 600/5120 obs
  • Allocation 3 - 1500/5300 obs
  • Total 780 obs
  • New Method
  • Each allocation is 2 OBS
  • Total 6

170
ANALCNCR - Example 1
  • How many jobs are running concurrently in class A
    average and max.

ANALCNCR(INDATAPDB.JOBS, OUTSUMRYRUNTIME,
SUMBYJOBCLASS, INCODEIF TYPETASKJOB,
INTERVALQTRHOUR, STARTIMEJINITIME,
ENDTIMEJTRMTIME, OTCODESM
AVGRUNCONCURNT/DURATM RENAME
MAXCNCRMAXRUN ) PROC PRINT ID JOBCLASS
TIMESTMP VAR AVGRUN MAXRUN
171
ANALCNCR - Example 2
  • Now suppose you want the INPUT QUEUE time for the
    same job class.

ANALCNCR(INDATAPDB.JOBS, OUTSUMRYQUETIME,
SUMBYJOBCLASS, INCODEIF TYPETASKJOB,
INTERVALQTRHOUR, STARTIMEREADTIME,
ENDTIMEJINITIME, OTCODESM
AVGQUECONCURNT/DURATM RENAME
MAXQUEMAXRUN ) PROC PRINT ID JOBCLASS
TIMESTMP VAR AVGQUE MAXQUE
172
ANALCNCR - Example 3
  • Now put the two outputs together

DATA JOBSTAT MERGE RUNTIME QUETIME BY JOBCLASS
TIMESTMP PROC PRINT ID JOBCLASS TIMESTMP VAR
AVGQUE AVGRUN MAXQUE MAXRUN

173
ANALCAPD
  • Can you save money by capping the MSUs consumed?
  • Billing is based on the peak of the rolling 4
    hour MSU average
  • Rolling average will (almost) always lag behind
    actual usage
  • So, you can set a cap lower than the actual peak
    and possibly reduce software billing
  • ANALCAPD will let you play with values to find
    a happy MSU value that allows work to run while
    reducing the peak MSU value

174
ANALCAPD
  • Uses the ASUMCEC dataset in the PDB as input
  • Best granularity is when you match CECINTRV to
    INTERVAL in ASUM70PR

175
ANALCAPD Parameters
  • PDBPDB where is the ASUMCEC data
  • GRAPHICSYES use SAS/GRAPH (it will detect if
    it is not there)
  • DEFCAP the MSU value you want to model
  • CECINTRVHOUR the CECINTRV value in use
    QTRHOUR HALFHOUR etc

176
ANALCAPD - Results
177
ANALCAPD Results
  • Black line is current capacity
  • Cyan line is current cap (in this case there is
    not one)
  • Blue line is actual usage
  • Green line is rolling 4 hour average
  • Red are the intervals where the CEC would have
    been capped

178
(No Transcript)
Write a Comment
User Comments (0)
About PowerShow.com