REXX utility to do compact LISTCAT for WebSphere MQ datasets and report the size and number of DASD stripes
This paper provides a REXX exec to display information from a z/OS catalog on WebSphere MQ datasets. It reports the size, number of stripes, DASD volumes used, and SMS attributes.
This document provides a REXX program to extract information from a LISTCAT command and displays it in a table format.
The program extract data from the catalog and allows you to check the following
- The size of the log dataset. Logs should be 4GB in size.
- The logs are striped. You get better performance using striped datasets.
- The SMS attributes, storage class, management class and data class.
- The volumes the data sets are on, to check the datasets are spread across volumes
To upload the dataset see the instructions below.
One dataset is created. In this dataset are two members
- JOB - this is JCL to run the REXX program
- IBMLC - REXX program to extract information from a LISTCAT command
The JCL is
//PAICEDS JOB 1,MSGCLASS=H
//S1 EXEC PGM=IKJEFT01,REGION=4M,DYNAMNBR=20
//SYSPROC DD DISP=SHR,DSN=PAICE.CLIST.LISTCAT
//SYSPRINT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
ibmlc SCENDATA.MQA1.LOGCOPY1.* SCENDATA.MQA1.LOGCOPY2.*
where SCENDATA.MQA1.LOGCOPY1.* and SCENDATA.MQA1.LOGCOPY2.* are the names of the High Level Qualifiers of the WebSphere MQ Log datasets.
You need to change PAICE.CLIST.LISTCAT to your dataset name.
Some example output is below
ibmlc SCENDATA.ZZZZ.LOGCOPY1.* SCENDATA.MQA1.LOGCOPY1.*
SCENDATA.ZZZZ.LOGCOPY1.DS01 of size 5.49GB is greater than 4GB
==SPACE============================ Unit Pri.. Sec.. Total
SCENDATA.ZZZZ.LOGCOPY1.DS01 4* TRACK 30000 0 5.49GB
SCENDATA.MQA1.LOGCOPY1.DSN4 1* CYLIN 200 0 0.14GB
SCENDATA.MQA1.LOGCOPY1.DS01 4* TRACK 3000 0 0.55GB
SCENDATA.MQA1.LOGCOPY1.DS02 1* CYLIN 200 0 0.14GB
Dataset SCENDATA.ZZZZ.LOGCOPY1.DS01 was originall allocated in CYLINDERS with a primary size of 2000 and a secondary size of 0, but SMS has changed this to 30000 TRACKS. There are 4 stripes each of this allocation. The total size if 5.49GB. This is larger than the MQ size of 4GB.
==SMS================================== Storclas DataClas MgmtClas
SCENDATA.ZZZZ.LOGCOPY1.DS01 STANDARD --(NULL) NOBACKUP
SCENDATA.MQA1.LOGCOPY1.DSN1 -STRIPED -STRIPED NOBACKUP
SCENDATA.MQA1.LOGCOPY1.DSN2 -STRIPED --(NULL) NOBACKUP
Dataset SCENDATA.ZZZZ.LOGCOPY1.DS01 has a storage class of STANDARD, a Data class of --(NULL) and a management class of NOBACKUP
==VOLSER======================================= Stripe Volid
SCENDATA.ZZZZ.LOGCOPY1.DS01 0 CAP012
SCENDATA.ZZZZ.LOGCOPY1.DS01 0 -----*
SCENDATA.MQA1.LOGCOPY1.DSN1 1 CAP005
SCENDATA.MQA1.LOGCOPY1.DSN1 2 CAP001
SCENDATA.MQA1.LOGCOPY1.DSN1 3 CAP003
SCENDATA.MQA1.LOGCOPY1.DSN1 4 CAP002
SCENDATA.MQA1.LOGCOPY1.DSN2 0 CAP002
Dataset SCENDATA.ZZZZ.LOGCOPY1.DS01 has 0 stripes, but has two entries. One for CAP012, and -----*. You can get this is you have two volumes allocated to the dataset, but only one is used.
Dataset SCENDATA.MQA1.LOGCOPY1.DSN1 has 4 stripes, with a strip on volumes CAP005, CAP001, CAP003 and CAP002.
This section allows you to check your dataset is striped as you expect.
The program can produce two messages
- Dataset_name of size xxxGB is greater than 4GB. An MQ archive dataset can have a maximum size of 4GB. You should not allocated an active log larger than 4GB if you are planning on using archiving. If you are using striped datasets, the primary allocation is on a per stripe basis, so allocating a log dataset with 2000 cylinders and 4 stripes would create a dataset with 8000 cylinders - greater than 4GB.
- Dataset_name different High RBA. Allocated ------xxxxx Used -----------yyy. There is a mismatch in the allocation and the amount of data used. This should be investigated, as these values should be the same.
Installing the program
The attachment should be uploaded to z/OS as a fixed block, record length 80, binary file.
quote site tracks pri=1 sec=1 recfm=fb lrecl=80 blksize=800
put listcat.xmit.bin 'tony.listcat.xmit'
On TSO use the RECEIVE INDSN( 'tony.listcat.xmit') command. This prompts with
INMR901I Dataset PAICE.CLIST.LISTCAT from PAICE on WINMVSCA
INMR154I The incoming data set is a 'DATA LIBRARY'.
INMR906A Enter restore parameters or 'DELETE' or 'END' +
The PAICE.CLIST.LISTCAT is the original name of the dataset. PAICE is the userid on system WINMVSCA which was used to create the XMIT file.
It will produce output like
IGW01551I MEMBER IBMLC HAS BEEN LOADED
IGW01551I MEMBER JOB HAS BEEN LOADED
IGW01550I 2 OF 2 MEMBERS WERE LOADED
IEB147I END OF JOB - 0 WAS HIGHEST SEVERITY CODE
Restore successful to dataset 'TONY.CLIST.LISTCAT'
Where 'TONY.CLIST.LISTCATis the name of your data set.
Original publication date