Advanced REXX Programming Interface
Part Three - Challenge #13
field names and values from SYS
]

Background:

Deep z/OS skill development

Part 3 was started by advancing your exposure to REXX, SDSF, and the System Log (SYSLOG). Each are technologies used daily by z/OS System Programmers, System Administrators, and Operations staff.

Modernization frequently use these technologies to package easy to use front end graphical user interfaces (GUIs) such as z/OSMF, IBM z/OS Management Facility. While z/OSMF is designed to simplify, streamline, and automate tasks, a mastery of underlying technologies is required of the highly experienced technicians that are the "go to" people when issues exist beyond the scope of the modernization GUIs and the skill level of those that use modernization GUIs. The final challenges of Part 3 is an opportunity to use REXX, SDSF, and SYSLOG understood by the highly experienced z/OS technicians.

The challenge includes terminology that will be new such as the linklist, LNK or LNKLIST which requires you to research the meaning and purpose. In z/OS the linklist is a list of partitioned data sets with executable modules. When a program is requested, the linklist is one of several places the systems looks to find the program or executable module


Challenge Situation

SDSF Menu includes a rich collection information which is useful to the highly experienced z/OS technicians supporting critical systems. The challenge exposes you to the real time rich collection of information and how to collect information using REXX. REXX can be executed using JCL to produce a history useful in recognizing abnormal system activity and behavior when compared to a history of normal system activity and behavior.

In some cases, quick one-off REXX routines can be created to help isolate problems when all that is available are problem symptoms. Reading system dumps is a last resort to resolving reported problems on critical systems. Why? It takes too long and action to resolve or avoid system problems must be immediate. IBM Z Mainframe system problems impact thousands of people immediately with financial impact to the company.

A reference is the optional short video you may or may not have viewed in the contest preparation section on opening day of the contest.

What data is handled by IBM Z?
Listen to Lecture 1


Challenge Description

SDSF real time information is explored followed by using REXX programming language to capture point-in-time snap shot of information.

Completing challenge 13 and 14 is a matter of following instructions and recognizing REXX code patterns available to collect information. However, challenges include a need to review professional documentation to assist in challenge completion.

The final challenge is to modify available REXX code to develop a useful routines to help train z/OS System Programmers new hires who are learning the deep z/OS knowledge from senior z/OS System Programmers.

The challenge references documentation about system and special variables. Taking time to familiarize yourself with these variables will prove valuable in the final challenge.


Challenge:

Explore SDSF real time system information

SDSF Menu consists of the following informational areas for you to quickly try:

  1. LNK
  2. LPA
  3. APF
  4. PARM
  5. PROC
  6. SYM
  7. ENQ
  8. SYS
  9. AS
  10. DYNX
  11. SSI
  12. VMAP
  13. SMSG
  14. SMSV
  15. FS
  16. CSR
  17. CK

From SDSF Menu, try each of the above SDSF commands taking the following action with each:

  1. Press F1 or enter help in each of the above SDSF panel displays
  2. From the HELP: display for each SDSF panel, enter 1 to get a brief description

While these details might seem technically deep, it is the tip of the iceberg for the highly experienced z/OS System Programmer. An example of going even deeper:

  1. Enter SDSF command AS for Address Spaces
  2. Enter slash / to the left of any listed address space to see all the columns in a vertical view
      You need to exit panels to enter other panels
  3. Enter JD to the left of any listed address space to see associated allocated devices and data sets
    Enter slash / to the left of JD entry figuring it outto get detail value
  4. Enter JT to the left of any listed address space to see associated system tasks and modules
    Enter slash / to the left of JT entry to get detail value
  5. Enter JM to the left of any listed address space to see associated system memory
    Enter slash / to the left of JM entry to get detail value
  6. Enter JC to the left of any listed address space to see list of loaded modules
    Enter slash / to the left of JC entry to get detail values about any module

Copy, review, and execute REXX code that gathers system information
  1. Copy 'zos.mtm2019.public.rexx(zperf)' to your REXX data set as member zperf
  2. Enter hilite rexx to hilite the REXX reserved words
  3. Save, then enter ex to the left of member zperf to execute the REXX routine
  4. REXX zperf writes messages to the display and write messages to member #13 in your p3.output data set
  5. Take time to review the REXX code pattern used to write to the display and write to member #13 in your p3.output data set

Modify REXX code and observe differences

Note: REXX comment line is slash asterisk to asterisk slash
/* is a REXX comment line */

The REXX say commands writes to the display

Modify zperf as follows:
  1. Comment lines 9, 10, and 11
  2. Uncomment lines 13, 14, 15, and 16
  3. Uncomment line 36 - Comment line 36 line before creating final report
  4. Save and execute to observe differences

Description of the challenge ZPERF REXX code

The

  • Line 2, 3, and 4
    say is a REXX reserved word to write to the display
    userid(), date(), time() are functions to produce values
  • Line 6 thru 18
    allocate and execio enables data set read and write
      Reference dropdown REXX Documentation
      Specifically review Understanding EXECIO read and write capability
  • Line 19
    isfcalls('ON') enables interface to SDSF
      Reference dropdown REXX Documentation
      Specifically review Using SDSF with the REXX programming language
  • Line 28, 31, 34, 35
    isfcols and isfrows are special variables with column and row field names
      Reference dropdown REXX Documentation
      Specifically review Using SDSF with REXX - Special variables reference
  • Line 23
    ISFEXEC SYS access to the SYS panel
      Reference dropdown REXX Documentation
      Specifically review ISFEXEC in Using SDSF with the REXX programming language
      Specifically review System Panel (SYS) in Using SDSF with REXX - Columns on the SDSF panels
  • Line 36
      Temporarily uncomment to display all the SYS column names and values
      Comment line when not needed - keep final report uncluttered with all that detail
      The column name and values are documented in the professional documentation
  • Line 37 thru 107
    col field names and values from SYS
      Reference dropdown REXX Documentation
      Specifically review Using SDSF with REXX - System Panel (SYS) columns on the SDSF panels
  • Line 31, 34, 37, 40, 83, 111, 117
    do, select/when. call REXX verbs
      Reference dropdown REXX Documentation
      Specifically review REXX program logic flow

Modify REXX code to produce customize performance report

A need exists for a quick z/OS processing performance report.

Remember to comment line 36 to keep the report uncluttered.

In addition to the existing lines written, the report must include:

  1. CPU percent busy for the system
  2. High unreferenced interval count
  3. Real storage available frame count
  4. Number of active started tasks
  5. Number of active TSO users
  6. Number of active batch jobs

The information above is available from the SDSF SYS column fields.
Review the Select When REXX logic in the zperf program to include the required information the report.

The previous information in the challenge instructions and using REXX zperf code as a guide, you have everything you need to complete the challenge. Have fun piecing the coding solution together.

Execution of the modified zperf REXX routine writes a report to member #13 in p3.output.


What did you just learn?

You just learned how to use REXX to quickly collect a series of point-in-time reports to help isolate a problem where problem symptoms are random complaints about response time. Each time the help desk receives a call about poor response, they could run the report. The collection of reports would be reviewed by support staff to help isolate the sporadic poor response complaints.


Next: Challenge #14