MVS TOOLS AND TRICKS OF THE TRADE APRIL 2000 Sam Golob MVS Systems Programmer P.O. Box 906 Tallman, New York 10982 Sam Golob is a Senior Systems Programmer. He also participates in library tours and book signings with his wife, author Courtney Taylor. Sam can be contacted at sbgolob@cbttape.org. Information about the CBT MVS Tapes can be found on the web, at http://www.cbttape.org. LEARNING ABOUT YOUR MVS SYSTEM MVS systems programmers have a lot in common with EDP auditors, except that we have a difference in emphasis. EDP auditors have the job of finding out what's in an MVS system, without getting a lot of outside help. We MVS systems programmers actually set up the system, so in that case, we know what's in it. But sometimes, when taking a first look at some installation's running system, we MVS sysprogs aren't in much of a different situation than the EDP auditors. That can be true if we're just starting a new job, or if we're a consultant coming into a shop for a relatively short time. This actual skill subset of MVS system programming--learning about the "guts" of a running system without outside help--is actually almost identical to what EDP auditors do every day. Some years ago, a noted EDP auditor, Lee Conyers, contributed two files full of his tools, Files 220 and 221, to the CBT MVS Tape, a huge collection of free software utilities that is publicly available. The aim of most of Lee's tools was to get information about the running system's essential parts, from the system itself, without outside help. Some of the things that Lee's tools look for, are: PARMLIB information, lists of APF libraries, defined SUBSYSTEMS, online TAPE, DISK, terminal, and communication devices, ENQUEUE displays, ENQUEUE contentions, and much more similar information. In reality, the MVS system contains all this information in control blocks--you just have to know where to look for it, and how to format it. Lee's tools date from XA 2.2.3 times. However, I've recently seen some modern, and free, packages, which work for OS/390 systems and which display not only all the info that Lee was looking for, but even more. These are the tools that we're going to talk about today. These remarkable publicly available packages are: MXI from Rob Scott, TASID from Doug Nadel, and SHOWMVS from Gilbert Saint-flour and his helpers. All of these three packages work under ISPF. Each works in a different way from the others, and all of them show a surprisingly large amount of information about what's going on in your MVS system, even when they're not running authorized. Please refer to Figure 1, as a reference to where to download these and other tools. HOW TO GET GOING. MXI is the only one of these three packages which requires a significant amount of setup. You copy the MXI load modules into a load library that is available to your TSO session, and you copy the MXI panels into a library that's in your ISPPLIB concatenation. Then you copy the MXI table members into a library in your ISPTLIB concatenation. If you don't want to change any defaults, all you have to do now, is to execute the MXI load module by saying: TSO MXI from the ISPF command line. The other two packages require just about no startup installation at all. Just copy the SHOWMVS and TASID load modules into your ISPLLIB or TSO STEPLIB library and execute them from the ISPF command line. TASID has the ISPF panels built into its load module, and SHOWMVS doesn't require any panels at all. Then the fun begins. All you have to do is to execute any of the three programs by typing TSO followed by the program name (MXI, TASID, or SHOWMVS) on the ISPF command line. With any of these three programs, amazing things start to happen, and you get your "EDP Auditor's information", pretty much to your heart's content. Let's talk about MXI first, then TASID, then SHOWMVS. When you first get into MXI, you get a screen like the one shown in Figure 2. Most of the options are highlighted, and some might not be. If you're not running MXI (or one of the other two products) as an "authorized" TSO command, some of the options will not be available, but they are very few in number. In MXI's case those missing options will show, but they'll be un-highlighted. I'll talk later about how to run a TSO command "authorized". Once you're in MXI's main menu, all you have to do is to move the cursor to one of the highlighted options, and press Enter. You'll get a sub-display with much more detail. In the sub-display, the general rule is that if you move the cursor to a highlighted field and press Enter, you'll be able to obtain another, more specific, sub-display. Both MXI and TASID have excellent storage browsing facilities which display main memory in the computer. If an MXI display shows a main storage address, you can usually move the cursor to it, press Enter, and obtain a nicely formatted display of the "incore" storage. Take a good look at Figure 2. At a glance, you'll see all kinds of categories of information about your running system, that would make an EDP auditor's mouth water. If you want more detail, MXI seldom disappoints you. For example, if you want to know more information about what load libraries are APF authorized, just move the cursor to APF on the main menu, and press Enter. The full list of authorized libraries will appear on the screen. But there's a bonus, as there is with many of MXI's displays, and this is only a typical example. As you know, an APF authorized library is characterized by both a dataset name and a volume serial of a DASD volume. In the MXI APF display of datasets, you can "click" (move the cursor and press Enter) on the volume serial. Then you'll immediately get a DASD detail display, with more fields in turn, on that display, that you can "click" on. So you can see that MXI's displays are not strictly hierarchical or tree-like. They also have a lot of internal relationships with each other. This makes finding information very convenient, using MXI. My experience with MXI tells me that you have to spend time with it, and explore your system. There is so much information available, that I can't mention it all here. You have to use the product yourself. It is utterly fascinating. Thanks, Rob! Now, on to TASID. TASID is written by Doug Nadel, an ISPF developer who works for IBM. Doug wrote TASID as a tool for himself, but since it was written on IBM equipment, it carries an IBM copyright notice. That's why TASID can't be put on the CBT Tape, since it's the property of IBM. Nevertheless, TASID is downloadable and available for everyone to use. See Figure 1 for the URL to get TASID, and the URLs for all the other tools we're going to mention. Since Doug is an ISPF developer, you'd expect that TASID would be coded very slickly. It definitely is very smooth to use, and all the panels are built in to the load module. Look at Figure 3, which shows the main menu of TASID. Besides having a choice of options at the top, the TASID main menu immediately displays your system's IPL, configuration, and software level information. Like MXI, TASID is panel oriented, but TASID is more hierarchical to operate, and doesn't cross-connect as much as MXI does. One of the really nice features of TASID is its SNAPSHOT display, which has the potential of showing information about many of the system's internal characteristics and current states. This is done via ISPF BROWSE. In a sense, TASID's SNAPSHOT display is somewhat similar to what's done by Gilbert Saint-flour's SHOWMVS. Again, TASID is a big product, and you have to spend time exploring TASID to properly appreciate it. Now our quick tour goes to SHOWMVS. You execute SHOWMVS as a TSO command, but SHOWMVS is different from the other two products. Even though SHOWMVS needs ISPF to operate, it has no panels at all. The SHOWMVS display is presented to the terminal user through ISPF BROWSE. All of the information is displayed, seemingly at once, and the SHOWMVS display can be 4000 lines long or more, on a large system. There is one amazing fact about the SHOWMVS display, which makes it quite different from most datasets and objects that are ISPF BROWSE'd. The difference is, that the SHOWMVS display is dynamically refreshed. I'll tell you how. Some of the information presented by SHOWMVS, for example, the dynamically obtained UCB information, takes time to gather. Initially, SHOWMVS presents IPL and system software level info at the top of the display immediately, and keeps the UCB information, the Link List and LPA List and APF List library information further down, where you can't immediately see it, without using an ISPF FIND command. Initially, much of that latter information is displayed as a blank shell, and SHOWMVS attaches a subtask, to go look for this information and gradually refresh the BROWSE'd display. Every time you press Enter after SHOWMVS is running, the subtask is called, to further refresh the screen. I'll illustrate. Suppose you invoke SHOWMVS with an immediate FIND command afterwards. For example, invoke: TSO SHOWMVS;FIND 'Link-List' The Link List datasets will display as a shell, with no DASD informataion available yet, from the UCB's. Then press Enter a couple of times. You'll see the DASD information magically appearing in the display. I'd bet you've never seen an ISPF BROWSE which acted like that! SHOWMVS gives an enormous amount of information about your running system and about your own TSO session. All the information is displayed as though it were in one big "file". If SHOWMVS has some difficulty obtaining some of the information to you, that component simply doesn't display, while all the rest of the information does. That's how it works. You usually have to use a FIND command to find what you're looking for. If SHOWMVS is running as an authorized TSO command, it'll display more info, such as the PPT (Program Properties Table) information, which you need APF authorization to get. When SHOWMVS is not running authorized, the PPT information simply isn't there. It works the same way with the other authorized functions. But SHOWMVS, even running non-authorized, will get so much information for you, that it'll boggle your mind. SHOWMVS uses some undocumented IBM functions to obtain info. For example, SHOWMVS can do a UCB scan and get the real UCB's, not just a copy, even though it's running non-authorized. In my January 1996 column, I wrote about this interface, and how SHOWMVS does this. SHOWMVS needs the real UCB, to be able to do its dynamic refresh of information. I'll conclude with a quick remark about TSO command authorization. A TSO command is a load module. In order for it to run with APF authorization, several conditions have to be satisfied. First, the load module has to be APF authorized, having a bit set in its pds directory. At linkedit time, you set this bit on, with the SETCODE AC(1) Linkage Editor statement. The free PDS 8.5 program from File 182 of the CBT MVS Tape, or the STARTOOL vendor product from Serena, can set this bit on dynamically, by its subcommand: ATTRIB modname AUTH . Next, the module must reside in an APF authorized library. All of the products, MXI, TASID, and SHOWMVS, can tell you which libraries on your system are APF authorized. Finally, TSO has to know about the module, and TSO has to give it authorized status. How does TSO "know" about running a module as an authorized command? TSO keeps a table in storage, that's initialized in a PARMLIB member IKJTSOnn. You can see this member from MXI. Just "click" on PARM, "click" on an active PARMLIB library, top first, and you'll see an ISPF BROWSE member list of all the members in the library. BROWSE the appropriate member, and you'll see an AUTHCMD NAMES list. If a program is in this list, and the other two criteria mentioned above are also satisfied, then TSO treats the command as authorized. If you can get permission, it will help to put MXI, TASID, and SHOWMVS in this list. If you can't get this permission, and you can run your TSO session with an authorized STEPLIB library, you can obtain your own personal TSO authorization. I've talked about "private TSO authorization" in my October 1995 column, and you can find further information by downloading Files 185 and 186 from the CBT Tape web site. I am sure you will profit greatly from the infromation in this month's column. I hope to see you again, happy and smiling, next month. * * * * * * * * * * * * * * * * * * * * * Figure 1. Some URL's you can use. Here are some URL's which you can use, to obtain the free, publicly available software materials mentioned this month. Rob Scott's home page: http://www.secltd.co.uk/home.htm Doug Nadel's home page: http://www.mindspring.com/~somebody Gilbert Saint-flour's home page: http://members.home.net/gsf Useful FTP for downloads: ftp://ftp.cbttape.org/pub/cbttape (See contents in subdirectories--you'll figure them out.) * * * * * * * * * * * * * * * * * * * * * Figure 2. The main menu of MXI from Rob Scott. You can see how numerous and abundant are the kinds of MVS system information which MXI makes available. What doesn't show is the amount of detail available in the sub-categories which lie underneath these main categories, such as the "main memory display" for many of the active system modules. MXI - P390 - MVS Extended Information Primary Option Menu --------- Row 1 of 33 Command ===> Scroll ===> CSR APF APF List Dataset Information NTOK System Name/Token Information ASID Address Space Usage Information NUC Display System Nucleus Modules CAT Catalog Information PAGE Page Dataset Information CA1 CA-1 Configuration Information PARM Active PARMLIB Information CF Coupling Facility Information PC PC Routine Information CPU CPU and LPAR Information PLEX Display Sysplex Information CS Common Storage Usage PPT Program Properties Information CSR Common Storage Remaining RS Real Storage Usage Information DA Active Address Space Information SCLS SMS Storage Class Information DASD Online DASD Information SGRP SMS Storage Group Information DCLS SMS Data Class Information SMF SMF General Information DDNS Allocated Dataset Information SMFD SMF Dataset Information DYNX Dynamic Exit Information SMS SMS Configuration Information EDT Display EDT Information SMSM SMS Module Map ENQ Display ENQ Information SP Common Storage Subpool Usage ENQC Display ENQ Contention SPD Subpool Definitions EXC System Exceptions SSI Subsystem Information GRS GRS Resource Name Lists STOR System Storage Information HSMQ HSM Request Queue Information SVC SVC Information IPL IPL and Load Information SYM Static System Symbols LINK Linklist Dataset Information SYSX System Exit Information LLS Linklist Set Information TAPE Online TAPE Information LLSU Linklist Set Usage Information TCB TCB and RB Information LPA LPA List Dataset Information UIC UIC Information LPD Link Pack Directory Entries USP User Subpool Information MCLS SMS Management Class Information VMAP Display Virtual Storage Map MEM Display Memory XCFM Display XCF Members MPF MPF Information XCFS Display XCF Structures NET VTAM Major Node Information MXI Version 2.1d (c) Scott Enterprise Consultancy Ltd http://www.secltd.co.uk * * * * * * * * * * * * * * * * * * * * * Figure 3. The Main Screen of TASID by Doug Nadel. Even though this product is free, it was written on IBM equipment, and it carries an IBM copyright. File Navigate Settings ------------------------------------------------------------------------------- TASID option menu Option ===> Select one of the following options: Version 5.06c 1 - Address space list 5 - Miscellaneous displays 2 - System ENQ contention 6 - Current dataset allocations 3 - Total system ENQ status 7 - Storage View Facility 4 - Initiator Status List 8 - Snapshot More: + +----------------------------------------+-----------------------------+ | Current time 21:56 on 2000/02/28 | TSO users 2 | | Last IPL time 14:38 on 2000/02/19 | Started tasks 15 | | IPL Parameters 0130 06 1 | Jobs 2 | | OS/390 02.06.00 JES version JES2 | System addrs 25 | | SMF ID P390 JES level 2.5.0 | Free initiators 6 | | User ID SBGOLOB RACF level 2.6.0 |-----------------------------| | Node N1 TSO version 2.6.0 | Total 50 | | VTAM Adr SC0TCP01 VTAM Level 4.5 |-----------------------------| | Proc TSOPROC DFSMS level 1.4.0 | CPU utilization 56% | | Region 6M DSS Level 1.4.0 | CPU 7490 ( 1 CPU)) | | RACF Grp GUESTS DSF level 1.16. | ENQ Contention None | | ISPF Level 4.5.0 | Real Storage 130,944K | | | Expand Storage 0K | |----------------------------------------+-----------------------------| | MVS Information: OS/390 02.06.00 | | JES Information: JES2 / OS 2.5.0 / HJE6605 | | Sysres: OS39R6 System: P390 PLEX: LOCAL | |----------------------------------------------------------------------| | This system keeps a history of 0 passwords. | | Automatic revocation after 5 invalid logon attempts. | | Password warning is 0 days before password expires. | | User ids are revoked after 60 days of inactivity. | | RACF program control is not available. | |----------------------------------------------------------------------| | SMS is available with PDSE support. | | TASID 5.06c - Compiled at 17.20 on 10/15/99 | +----------------------------------------------------------------------+ (c) Copyright IBM Corp, 1993, 1998. All Rights Reserved.