longpelaexpertise.com.au/ezine/FindSoftware.php?ezinemode=printfriend

LongEx Mainframe Quarterly - May 2013

technical: How to Find the Software You Have

One of my favourite features of Microsoft Windows is how it manages installed software. In particular, I love how you can simply go to the Control Panel and see not only the software products installed, but also their version. And Microsoft isn't alone. Linux has something similar with rpm, and HP-UX with swlist. Unfortunately, z/OS isn't as simple.

Most z/OS sites will have something like an Excel spread-sheet with a list of installed z/OS software. This will have been created over time from looking at invoices, and talking with Systems Programmers. But there's a chance that you're paying for software you don't have installed. Or you may have software that is not being paid for - a copyright breach. And even if you're on top of the software installed on your system, it may not the latest version. So it may be out of support, or just not as efficient. So how do you find the software that is installed on your z/OS systems?

SMP/E Product Entries

SMP/E has been the major z/OS software management tool for decades. So using SMP/E to find installed software is an obvious first step. And it has some great features.

Using SMP/E, you can find a list of products installed, and their versions. This can be done from the SMP/E panels or batch by listing all PRODUCT entries in an SMP/E Global Zone. Here's an example of an SMP/E panel showing a CSI query for all PRODUCTs for one Global Zone:

                  CSI QUERY - SELECT PRODUCT                   Row 1 of 9
 ===>                                                    SCROLL ===> PAGE

 Select one entry to query from GLOBAL zone GLOBAL  :

 S  DESCRIPTION                                                  VV.RR.MM
    DB2 Accessories Suite for z/OS                               02.01.00
    DB2 Administration Tool for z/OS                             10.01.00
    DB2 Object Comparison Tool for z/OS                          10.01.00
    DB2 10 for z/OS                                              10.01.00
    DB2 10 for z/OS VUE                                          10.01.00
    IBM DB2 Utilities Suite for z/OS V10                         10.01.00
    IBM Optim pureQuery for z/OS                                 02.02.00
    IBM Optim Query Tuner for DB2 for z/OS                       02.02.01
    Optim Query Workload Tuner                                   02.02.01

So this Global Zone has 9 products, including IBM DB2 V10. Select an entry to get more information:

                        CSI QUERY - PRODUCT ENTRY             Row 1 of 3
===>                                                    SCROLL ===> PAGE
 
 To return to the previous panel, enter END .

 Primary Command: FIND

 Entry Type:  PRODUCT                             Zone Type: GLOBAL
 Description: DB2 10 for z/OS

 Product ID: 5605-DB2             Version: 10.01.00
 Vendor: IBM
 URL:

 Date/Time: 10.336   14:44:28   REC

         -------- -------- -------- -------- -------- -------- --------
SREL     P115
PRODSUP  5635-DB2 09.01.00 5625-DB2 08.01.00
REWORK   2010292

This is great. We can find out the vendor, the Product ID, and even the product it replaces.

However you've probably already seen a problem here. The above screen only shows nine DB2 related products. Where are the rest? In this system, and every system I've seen, products are not stored in a single SMP/E database, or CSI (Consolidated Software Inventory). Rather different CSIs are used for different products, or groups of products. So to find all software, you need to see the above information for every CSI in the system.

Which brings us to another problem - where are the CSIs? z/OS has no central database storing the dataset names of all SMP/E CSIs. So you need to find them yourself. Most sites use dataset names ending in CSI for their CSIs. So it's likely that you can simply search for all datasets ending in *CSI, and work from there. Alternatively, the Systems Programmers maintaining the system will know all their CSI datasets.

The problems don't stop there. Unfortunately, there is no requirement for an SMP/E packaged product to have a PRODUCT entry. IBM products do, but many other vendors don't bother. In fact SMP/E was never designed as a central list of installed products. Rather its main purpose is for installing and managing product components: modules, REXX, CLIST, Panels, USS files, JCL, documents, HTML pages, source code and samples. The PRODUCT entry is relatively new, only introduced with OS/390 2.7 in 1999.

The IBM Planning and Migration Assistant (PMA) looks interesting. This is included with SMP/E, and produces reports including a report of installed software. However it is intended to show you a migration path for products it finds in the SMP/E Global Zone. It won't show any more information about currently installed products than the above SMP/E panels, and again must be executed for every Global CSI. Oh yes, and it only works for IBM products.

SMP/E packaged products may not have a PRODUCT entry, but each and every one has a Functional Modifier ID (or FMID). For example, the RACF for z/OS 1.13 FMID is HRF7780. Every software version will have its own FMID. So the FMID for z/OS 1.11 is HBB7760, and z/OS 1.13 HBB7780.

So you could look for these FMIDs by querying the Global zone entry in an SMP/E Global Zone. Here's an example:

                       CSI QUERY - ZONE ENTRY                 Row 1 of 3
===>                                                    SCROLL ===> PAGE

 To return to the previous panel, enter END .


 Primary Command: FIND

 Entry Type:  GZONE                                    Zone Name: GLOBAL
 Entry Name:  GLOBAL                                   Zone Type: GLOBAL
 
 Default OPTIONS: ADBAOPTN    Related Zone:
 UPGRADE LEVEL: SMP/E 35.34

         -------- -------- -------- -------- -------- -------- --------
ZONES    ADBA10D  ADBA10T  GOCA10D  GOCA10T
SRELS    P115
FMIDS    H0IHA10  H25GA10

This is great, but how do you relate an FMID to a product? Unfortunately, there's no central database. But a Google search may help you out, as will any Program Directory distributed with the product.

By now, unless you're a Systems Programmer, you may have given up finding installed software. Many normal users won't have access to SMP/E, or won't have access to read the SMP/E CSIs. Also, there are still some products that are not installed by SMP/E. So what other options are there?

Load Libraries

z/OS software products are made up of program modules (or load modules). Of course, there are a few exceptions to this (you could have a product made up of only REXX and ISPF panels). But in general, they have modules.

One easy first step is to look at the load library names. Most sites I've seen will use dataset names that indicate the product name - especially for non-IBM software. So if you see a dataset called SYS2.ACF2.LINKLIST, there's a good chance this is a CA-ACF2 library. However this won't work so well if multiple products share load libraries.

If you can't figure out the product from the dataset name, the next step is the module name. Almost all vendors will register the first three characters used in their module names with IBM. Registering these three characters, often called the component code, ensures that no other product will have the same module name. This is essential if a product has modules in LPAlist or Linklist. To give some examples, DFSORT uses ICE, CA-ACF2 uses ACF, and Software AG ADABAS uses ADA. How do you know which product uses which three letters? More bad news - there's no central database. Experience, SMP/E entries and Google are your best tools.

If all this fails, the next step is to browse some of the modules. The chances are that you'll find a copyright statement showing the vendor. You may also see an eye-catcher showing the product name, and if you're very lucky, the version.

Where can you find these load libraries? Most software products will need modules to be APF authorized. So looking in the APF list is a great place to start. I use the TSO ISRDDN utility to list and browse APF authorized libraries. The z/OS Linklist and LPAlist (also available from ISRDDN) are two more places to start. Other options include scanning your JCL for JOBLIB and STEPLIB DD statements, or even listing all load or program libraries, and going from there. Yes, this doesn't sound easy; and it isn't.

IBM SCRT and SMF Type 89

It seems obvious doesn't it? IBM will find all the software products for you in the PRODUCT SUMMARY section of the SCRT report you send to them every month. They even provide the product version. For example:
PRODUCT SUMMARY INFORMATION

MLC Product Name                                    MLC Product ID

z/OS V1                                             5694-A01
DB2 10 for z/OS                                     5605-DB2
IBM Enterprise Cobol for z/OS V4                    5655-S71
QMF MVS Version 3                                   5706-254

IPLA Product Name                                   IPLA Product ID

Fault Analyzer for z/OS V7                          5655-R46
File Manager for z/OS V7                            5655-R47
Debug Tool Utilities and Adv Functions for z/OS V8  5655-S16
Application Perf Analyzer for z/OS V8               5697-N63

This information (well, most of it) is obtained from SMF Type 89 records. SMF Type 89 records have fields for vendor, product name and version. So it sounds perfect. But there are two problems:

  1. Only sub-capacity capable software writes SMF Type 89 records. You may see some other non-sub-capacity licensing products in your SCRT report; however they will have been manually entered when setting up the batch job to produce the SCRT report.
  2. This will only show products that have executed during the period you run your SCRT job (or SMF Type 89 extraction job). If the product hasn't actually executed during this time, it won't show up.

So once again, we can find some, but not all products.

z/OS UNIX Libraries

z/OS UNIX can make things even more complicated. A POSIX-compliant UNIX, programs and products can be installed in z/OS like every other UNIX variant. However z/OS has no UNIX-like package management product like rpm or swlist. In fact, most UNIX-based products use SMP/E, so the above comments on SMP/E still hold true.

For non-SMP/E products, finding installed products is the same as other UNIX systems. This means looking in system libraries such as /usr/bin for product directories, and then searching them for copyright statements, or other fingerprints. Another option would be to look at all currently running processes (if the product is currently executing) using the UNIX ps command, and working from there.

Other Options

When I was putting together a draft of this article, I had in mind listing in this section a range of other options for finding products and their version. My idea was to do some investigation to find vendor-specific tools, and go from there. However this section is a little meagre, as I've found only one:

  • The CA CAIRIMU utility in CAILOAD will show some (but unfortunately not all) CA products installed, and their versions. It can be called from TSO (TSO CAIRIMU) or batch.

Installed vs Activated

In some cases, you may have a product that is installed, but not 'activated.' For example, many z/OS installs will include optional components like RACF, DFSMSdss and DFSORT. However these cannot be used until they are activated in the PARMLIB member IFAPRDxx. To date I've only seen IBM products use this feature.

For those looking for installed products, this means two things:

  • IFAPRDxx is a good place to see some installed products.
  • If you have found an IBM software product installed, it's a good idea to check in IFAPRDxx to see if it is disabled.

Software Products to Help

By now you've realised that finding a list of all installed software is hard work. And in some cases this is only the beginning. Many sites also want to know who is using them, and how often. This information can be used to identify little-used products, and remove them - and their corresponding invoice entry. IBMs Tivoli Asset Discovery for System z (TADz) is a great product that will automatically search and find software, and then provide information about who is using it, and how often. UBS Hainer has a similar product called P-Tracker.

Conclusion

It wasn't easy was it? Unfortunately, z/OS has no single panel to quickly and easily show you all software that has been installed. What's more, it can be a lot of work to search everywhere for installed software, and there's no guarantee you'll find them all. This is why most sites continue to rely on that trusty spread-sheet handed down over the years.

However a regularly review of software and its use is an excellent idea for sites looking to minimise their software footprint, protect against copyright infringement from unlicensed software, and confirm that installed software is at a level that is stable, supported and efficient.


David Stephens