We’ll occasionally place various small utilities and tools on this page, free for the taking. We provide no warranty for these tools, nor do we provide any support. (If you have a problem or suggestion, please let us know and we may pursue it if we have time.) For our conditions of use, please see https://watsonwalker.com/disclaimer/. The utilities and tools have no copyright, and we request that you not attempt to sell them for profit. Click on the heading of each item to read more about the tool.
WWUNTERSE – Uncompress Files Created by TERSE on z/OS
SMF is the defacto source of information about all things that happen in a z/OS system, supporting everything from chargeback to capacity planning to security monitoring. Many of the applications that read SMF data now reside on distributed systems.
However, with some installations generating more than 2TB of SMF data per day, getting SMF data to those systems in an efficient and timely manner is a significant challenge. Data compression is an interesting option, but only a few compression formats support SMF spanned variable records. The TERSE one is the most popular of them, but there are no utilities that run on distributed systems that are able to handle the variable record format.
To help address this need, our colleague Mario Bezzi wrote a utility called WWUNTERSE based on IBM’s port to Java of the uncompress function of terse. WWUNTERSE uncompresses files that were created using AMATERSE or TRSMAIN on z/OS. It supports tersed versions of F, FB, V, VB, VS, and VBS data sets (the IBM port doesn’t support tersed VB or VBS files). For blocked variable record length files, it supports the inclusion of the Block Descriptor Word (BDW) in the output file, meaning that the output files can used by products such as MXG/SAS. Because of this support for tersed VB and VBS files, we expect this tool to be particularly of interest to sites looking to efficiently move SMF data to distributed platforms.
One zip file is provided, containing the executable files for both x86-64-bit Windows and x86-64-bit Linux environments, as well as a short User’s Guide in PDF format.
In order to ensure that all WWUNTERSE users have the latest enhancements and fixes, we are requiring all users of this package to provide contact information when they download the package.
When you click on Submit, you will be sent an email containing a link that can be used to download the zip file containing the program and documentation for this package. If you have any questions or problems, please email us.
IMPORTANT MESSAGES Health Check
How many times have you experienced a serious outage, only to discover that there was a warning message on the console, informing you of the impending doom? Of course, you only discover the message after the outage. Or even worse, when you discover the message, a colleague says “Oh, I saw that message, but I didn’t think it was important.” Grrr.
We’ve all been there. But to try to reduce the number of these occasions in the future, our colleague Mario Bezzi wrote an IMPORTANT_MESSAGES health check that runs under the IBM Heath Checker for z/OS infrastructure. The program checks console messages as they are issued against a pre-defined list of messages. The package includes a list of messages that have been identified as being really important by the product owner, or in a Redbook, or an IBM presentation, or an IBM Techdoc. You can also add your own messages. If any of the messages in the list are issued, Mario’s health check will generate a Health Checker exception. This gives you a single place (the SDSF CK option, for example) to check whenever your system starts misbehaving.
The package also includes sample jobs to allow you to add messages from your own applications or non-IBM products that you may be using. To obtain the package, please fill out the form below.
We plan on updating the list of messages over time, based on new information from IBM, new products, and feedback from other users of this health check. We may also extend the health check to provide critical messages for non-IBM products. For these reasons, we are requiring all users of this package to provide contact information so that we can send you updates as they become available.
When you click on Submit, you will be sent an email containing a link that can be used to download the zip file containing the files and documentation for this package. If you have any questions or problems, please email us.
Data Set Spring Cleanup Sample Jobs
Cheryl Watson’s Tuning Letter 2020 No. 4 contained an article that discussed the importance of ensuring that your Non-VSAM data sets adhere to best practices. That article also illustrated the cost, in terms of increased CPU and elapsed times, and wasted disk space, of having data sets with inefficient blocksizes.
The article included a number of sample MXG/SAS programs to process DCOLLECT records that were provided by our colleague Scott Barry, so we have included them here (because copy/pasting JCL from a PDF is never pretty).
Additionally, since we published that article, Sri Hari Kolusu, from DFSORT Development, kindly provided a sample ICETOOL program that also processes the DCOLLECT records. In addition to the DCOLLECT fields that are processed by Scott’s program, Sri Hari’s program also reports the volser that the data set resides on, and the DCDNMBLK (wasted space) field. If you are not familiar with DCOLLECT, this is a very valuable field. It reports the amount of usable space that is being wasted in the data set because of allocated-but-not-used tracks and because of inefficient blocksizes.
Click here to download a zip file that contains all the sample jobs.
Thank you to both Scott and Sri Hari for their help and for contributing to the mainframe community.
This zip file contains the load module for a program called SMFSCRUB. SMFSCRUB reads a sequential data set containing SMF records and produces a report that shows the following information for each record type, subtype, and system found in the input file:
- The number of records
- The number of bytes
- The minimum and maximum record length
- The date and time of the earliest record
- The data and time of the latest record
The report looks similar to the standard IFASMFDP report, but is a lot more detailed. The zip file also contains sample JCL to run the program, and sample output from a run of the program. Upload the XMIT file in BIN format to an FB80 data set on z/OS and then run a TSO RECEIVE against that data set to create the load library. Here’s a link to the zip file. PLEASE NOTE: We are considering an article describing typical breakout and sizes of SMF data by subtype, so if you’re willing to share your output once, just send it via an email to email@example.com. All information will be kept confidential.
This zip file contains a Rexx program to convert SMF type 87.1 records, created by GRS, into CSV format. These records contain information about issuers of generic GQSCAN requests, a potential cause of high CPU consumption by GRS. The package includes JCL to run the Exec, and a sample output file. For more information, refer to the article titled ‘Inspector Clouseau Meets GRS’ in Tuning Letter 2018 No. 1. Here’s a link to the program.
We’d like to thank Rolf Bruner of SIX Group Services and Klaus Wolf of IBM Deutschland for providing this Assembler program to display an LPAR’s topology (processor chips and vertical CP status). Subscribers can find more about this in the Tuning Letter 2016 No. 1 issue. Here’s a link to the program.
When z/OS is IPLed on a zEC12 or zBC12 or later (any CPC that support Storage Class Memory), the Real Storage Manager (RSM) component automatically allocates an amount of memory that is the preferred location for pageable 1MB pages. This area is known as the Pageable Large Area (PLAREA). You have no control over the size of this area. The size is calculated dynamically by z/OS based on the total amount of memory in the LPAR less the amount of memory that is put aside for the QUAD area.
To help you understand how the memory in your z/OS LPAR is divided, Alain Maneville wrote and kindly provided us with this very help and easy-to-use little spreadsheet. You simply enter the number of GBs of memory in the LPAR in cell C4, and the LFAREA from your IEASYSxx member in cell C5, and the spreadsheet will report the size of your QUAD and PLAREA. Given the current lack of metrics or tools to help you manage the PLAREA, this spreadsheet is a very valuable tool to give you insight into how your z/OS memory is being used.
If you collect SMF type 113 records, and you run MXG, then you can run either of these two freeware programs to determine which workload should be used for zPCR analysis and in our BoxScore workload analysis. IBM made a change to the RNI calculation in July 2012. You should use MXG 30.07 to get the updated calculation in the $RNIRPTS program, and/or you should download the updated RNIHINT program.
In our ongoing Tuning Letter series on SMF records, we have been trying to accumulate statistics by SMF subtype, in addition to SMF types. Because most sites do not get that information, we included an article about some programs to accomplish that. Here is a link to that article. If you are willing to send us information about the SMF subtypes that you collect, we would certainly appreciate it.
The following is a SAS program that extracts information about SMF record types and subtypes from the MXG PDB.ID file, and produces a tabular report and a CSV file. It was written by Scott Barry of SBBWorks, Inc. and is offered to our readers for public, unwarranted use. There are four files associated with this:
- SAS Program JCL, Source, and Documentation (5 KB)
- Sample Tabular Report
- Excel Spreadsheet (in ZIP format) (1.8 MB)
- Excel PivotPlot Example Created from the Excel Spreadsheet (1.6 MB)
PLEASE NOTE: Cheryl would like a copy of the CSV file from any site which uses this because she is trying to analyze the breakout and typical size of SMF data by subtype. Just send it via an email to technical at watsonwalker.com. All information will be kept confidential.
Provides a standard set of service classes and goals that you can easily use to create your initial Workload Manager goal mode policy.