blueshantung

System Data | z/OS Mainframe

System Data is a started task and suite of programs which collect information on the MVS system including IPL information, Capacity, APF, Linklist, Symbols, Address Spaces, IEASYS, JES3, SMF & Page datasets and DASD devices. You can also use it to collect details from the Hardware BCPii.

I have also used code from other programs which were available on http://www.cbttape.org.

Download

History

1.0.0
(31/12/2015) - Initial version.
1.1.0
(15/01/2016) - Now called by the Started Task. Added changes to WLM, SAVE and TCPIP modules.
1.2.0
(15/02/2016) - Fixed major issue after 2 weeks of changes to make the program re-entrant. The program would blow the private region after a period of time - I found the DCB buffers were not released so FREEPOOL was added.
 
(28/02/2016) - Added Symbols. Added LPA, APF and LNKLST datasets.
1.3.0
(02/03/2016) - Added IEASYS definitions (from showZOS).
1.4.0
(16/03/2016) - Removed SMS module due to S978-04 abends linked to APAR OA49681.
1.5.0
(21/09/2016) - Changed SSI82 to use different subpool to overcome S1E0-08 abends at IPL.
1.6.0
(24/01/2017) - Added IFA products.
1.7.0
(27/03/2017) - Added DASD configuration. Reworked Time Offset and Direction.
1.8.0
(06/08/2018) - Added Sysplex systems, CFRM Policy data and Coupling Facility data.
1.8.1
(27/11/2020) - Fixes to SSI82.
2.0.0
(27/01/2022) - Converted to relative addressing and new opcodes. ANTRQST updated to use FORMAT=PQMP2 and fields changed in CSV generation.

Planned Changes

  1. None

Screenshots / Output

Description

The IPLINFO started task runs according to the parameters specified in the PARMLIB member - see Configuration.

SYSDATA creates key/value pairs when the CPCOUT and OUTPUT parameters are specified - they can be seen in the third screenshot above. Otherwise SYSDATA produces a formatted display.

Note: This program has been developed and tested under JES3 so I haven't included any details for JES2 - if the program runs under JES2, it will skip all JES3 sections.

P jobname
- Stops the task
F jobname,HELP
- Display command list
F jobname,RELOAD
- Reloads the SYSDATA program
F jobname,VERB | NOVERB
- Turn on or off verbose messages
F jobname,RUN
- Forces SYSDATA to run
F jobname,SHOW
- Show statistics and settings
F jobname,STOP
- Stops the task

Started Task Configuration

The started task uses a PARMLIB member named on the PARM line - it must exist in the PARMLIB concatenation.

*
Comments can be specified by placing an asterisk in the first column
RUNATSTART=Y
Enables SYSDATA to run when the task starts (Default is N)
FROM=00:00
Start time which the task will use as its base time - format HH:MM (Default is 00:02)
INTERVAL=15
Fire every 15 minutes - format must be MM (Default is 60)
VERBOSE=N
Turns verbose logging on (Y) or off (Default is N)
BCPII=N
Enables SYSDATA to issue calls to BCPII to get CPC information (Default is N)
CPCOUT=N
Enables SYSDATA to write the BCPII data to DD:CPCOUT (Default is N)
OUTPUT=N
Enables SYSDATA to write the data to DD:OUTPUT (Default is N)
SYSPRINT=Y
Enables SYSDATA to write the data to DD:SYSPRINT (Default is N)
LOG=Y
SYSDATA will write messages to DD:LOG (Default is N)
DASDLIST=
Specify up to 8 characters which match the first character of the DASD UCB address which you want to gather data on. If you use this, you must add DD:DASDOUT and point to a RECFM=FB and LRECL=80 dataset or PDS member to save the data

Example PARMLIB Member for the Started Task

********************************************************************** 
* MVS System Information Started Task                               
********************************************************************** 
*                                                                      
* -- THIS MEMBER IS FOR SYSTEM A                                        
*                                                                      
RUNATSTART=Y     Run Collection at startup                             
FROM=00:00       Start collecting data from 00:00 (format HH:MM)       
INTERVAL=15      Collect every 15 minutes (format must be MM)          
VERBOSE=N        (Y|N) Display message when task started/closed        
*                                                                      
* -- SYSDATA parameters                                                
*                                                                      
BCPII=N          (Y|N) Gather data from BCPii                          
CPCOUT=N         (Y|N) Write BCPii data to DD:CPCOUT (BCPii must be Y) 
OUTPUT=Y         (Y|N) Write system data to DD:OUTPUT                  
SYSPRINT=N       (Y|N) Write information to SYSPRINT                   
LOG=N            (Y|N) Write log messages                              
DASDLIST=AB89    Collect DASD list for UCBs starting with characters
*                - up to 8 can be specified. Blank signifies OFF    
					

JCL Setup (Started Task)

//IPLINFO PROC                                                     
//***************************************************************  
//* MVS SYSTEM INFORMATION                                         
//*                                                                
//* Reads configuration from SYS1.PARMLIB(BASYSxx)            
//***************************************************************  
//STEP1     EXEC PGM=BASYSI,PARM='MEMBER=BASYSI&SYSCLONE.'         
//STEPLIB   DD DISP=SHR,DSN=MVS.LOADLIB               
//SYSPRINT  DD SYSOUT=*                                            
//LOG       DD SYSOUT=*                                            
//OUTPUT    DD DISP=SHR,DSN=SYS1.&SYSPLEX..DATA(SD#&SYSNAME.)
//CPCOUT    DD DISP=SHR,DSN=SYS1.&SYSPLEX..DATA(SD#BCP)       
//DASDOUT   DD DISP=SHR,DSN=SYS1.&SYSPLEX..DATA(SD#DASD)
					

SYSDATA Configuration

You can run the SYSDATA program separately from the started task - specify the parameters separated by a comma ie. PARM='BCPII,CPCOUT'. Any combination of parameters can be used. If data is to be saved, use a RECFM=FB and LRECL=80 dataset or PDS.

BCPII
Issues calls to BCPII (requires setting up first) to get the CPC information
CPCOUT
Saves the BCPII data with keys/values to DD:CPCOUT
SYSPRINT
Displays information in DD:SYSPRINT
OUTPUT
Saves the data with keys/values to DD:OUTPUT
NOLOG
Creates the data but does not write to DD:LOG
DASDLIST=
Specify up to 8 characters which match the first character of the DASD UCB address which you want to gather data on. If you use this, you must add DD:DASDOUT and point to a RECFM=FB and LRECL=80 dataset or PDS member to save the data

JCL Setup (SYSDATA program)

If you want to run the SYSDATA program outside of the started task, you can use the following JCL - this example will save the data in a PDS dataset:

//STEP1   EXEC PGM=SYSDATA,PARM='OUTPUT',REGION=0M          
//STEPLIB  DD DISP=SHR,DSN=MVS.LOADLIB         
//LOG      DD SYSOUT=*                                      
//SYSPRINT DD SYSOUT=*                                      
//OUTPUT   DD DISP=SHR,DSN=SYS1.&SYSPLEX..DATA(SD#&SYSNAME.) 
					

Modules / Programs

#BUILD
Links all object modules into SYSDATA
APF
List all APF datasets with attributes
ASIDS
Get number of ASIDs, non-reusable, totals and storage map values (Private, CSA and SQA)
BASYSIA
Started task program - reads the PARMLIB member and executes SYSDATA at defined intervals
BASYSMAC
Macro for work areas for BASYSIA
CAPACITY
Get 4 hour rolling MSU, defined MSUs, CEC MSUs and report if the system is capped. Get number of online CPUs, LPARID, CPU Serial and speciality CPU engines.
CPC
Communicate with BCPii and extract a list of processors
CPCSTAT
Communicate with BCPii and extract information from each processor such as CPUs, CBU, status etc.
DASD
Produce a list of DASD UCBs based on the parameter filter.
HEXCONV
Convert hexadecimal to packed decimal or integers.
IEASYS
Extract information from IPA for IEASYS definitions – each entry may be restricted to a release which is then checked – needs to be updated at each new OS release if there are new parameters.
IMGSTAT
Communicate with BCPii and each processor and extract a list of images. Information is then extracted such as status, activation profiles, capacity, weight etc.
IPA
Extract information from the IPA such as Architecture Level, Master Catalog, IPL details, list of PARMLIB datasets, IODF date and time, Security product name, real storage and cryptographic details. A list of page datasets and their status and details is also built.
JES3
Issue cross-memory call to get JES3 Dataset and Initialisation Stream member then get the JES3 start date and details from the JES3 LOCAL systems. This is only run if the system is running JES3.
LINKLIST
Extract a list of LinkList datasets with APF and SMS indicators
LOG
Write messages to DD:LOG
LPA
Extract list of LPA datasets
MAIN
The main entry point to SYSDATA. This parses the parameters from the PARM line and call the modules to extract the information then write to SYSPRINT, OUTPUT or CPCOUT.
MVS
Extract the IPL address, SMF ID, IPL Time, CPC Name, Sysplex name, GRS Mode, Sysplex Time, Load Parameter and Volume, Time Offset and VTAM subarea. Then get the status of the SMF datasets.
PRODUCT
Extract list of registered and unregistered products (IFA).
RMF
Communicate with RMF and get the CPU Usage, DPR and UIC.
SAVE
Save the extracted data to DD:OUTPUT
SAVEBCP
Save the extracted data to DD:CPCOUT
SAVEDASD
Save the extracted DASD data to DD:DASDOUT
SDATMAC
Macro defining the WorkArea and DSECTS for storage areas for SYSDATA
SMS
Use SSI to communicate to SMS to get Base Configuration Date and Time and Userid – currently not in use due to S978 abends. Mentioned in APAR OA49681.
SSI82
Issue SSI calls to JES3 to get the status of the JES3 system, the start type and status of each JES3 system. This is only run if the system is running JES3.
SYMBOLS
Extract a list of symbols with their values
SYSPRINT
Display the extracted data in DD:SYSPRINT
TCPIP
Communicate with TCPIP to get the DNS name and Host IP address
UCBINFO
Routine which accepts device or volume as a parameter to get the corresponding details and the Model Type.
WLM
Communicate with WLM to get the Activation date, Policy name, System where the activation was performed and by whom.

Abend or Error Codes (SYSDATA)

U1011
SD#UCBLK was called with an incorrect option
U0005
LOG could not open DD:LOG
U0098
CPC module found the CPC name to be blank

Environment

This program was written in z/OS HLASM Assembler and will run under OS/390 and z/OS in 31bit or 64bit. The code is re-entrant.

The program needs to reside in an APF authorised dataset due the nature of the subsystem calls it uses.

This program was developed and tested under z/OS 1.12 up to z/OS 2.4.

Additional Macros

The program uses the STRING macro from https://gsf-soft.com/Freeware/STRING.html - I highly recommend this.

Assemble & Link

The program contains multiple source members. Each member will compile into object files in a separate dataset. Member #BUILD will link these modules together. The JCL runs under JES3 so you will probably need to tailor it for your environment.