IBM MTM 2019: Part Three ‚Äď Challenge #14

Hello Hello!

This is the “last” challenge of IBM’s Master the Mainframe 2019 challenge! I can’t believe I already made 30 blogposts in the last 4 months. Time goes by so fast!

The fifteenth challenge requires every individual contestant to come up with something unique. I won’t be much of help with the fifteenth challenge but at least you’ll have an example. I hope I don’t set the bar too low or something haha.

This challenge looks simple, perfect finishing touch to the part 3 challenge series in my opinion.

Hi California ūüėČ

Tip by Kevin Durant: your output is going to be different than mine.

Tip by Felipe Fontes: S0W1, 0 is ZERO, not the letter O.

z/OS System Log

IBM Master the Mainframe Part Three ‚Äď Challenge #14

Get and execute LOGLOOK REXX code

In my¬†REXX¬†data set I’ll create a new member called¬†loglook. In there I’ll copy ‘zos.mtm2019.public.rexx(loglook)’.

I’ll go back using¬†F3 and execute the script by using the line command¬†ex next to our newly created¬†loglook data set member.

What is the contest system name?

I guess¬†SYS1? But last challenge it said in the output: “Column SYSNAME.1 has the value: S0W1”. So wouldn’t it be S0W1 then?

Revisit the SYSLOG and gather needed information

Aye chef! From anywhere I’ll enter¬†=sd;log. I’ll enter the primary command¬†SYM to list the system symbolics.

The system ID is synonomous with sysname, don’t forget it. I’ll go back using¬†F3.¬†Now, I’ll just enter¬†top to go to the top

And then I’ll enter f¬†z50087 to find log entries made by me. If I don’t find any, I’ll refresh using¬†F5.

I have found some! Now what to do with it?

Modify LOGLOOK REXX code

I have to what?! Kidding! We need to make the following modifications:

  • Provide the correct system ID
  • Provide a search string which needs to be your ID

Ok the system ID we have remembered from last time and the search string is our IBM id. This should be pretty straight forward then? Let me see.

This part of the code has some variables. Which ones do we need to change? Hmm… I think I know which ones to change. I’ll do it.

Successful execution has records containing:

  1. log date
  2. log time
  3. message text where message text includes your id

Let’s take a look at my¬†P3.OUTPUT(#14).

Looks good! On to Part 3 Challenge 15!

IBM MTM 2019: Part Three ‚Äď Challenge #13

Hello!

Let’s get our hands dirty and modify some REXX code! This time we’re looking at some system variables and we’ll print them to a data set member!

PS: I’m not sure if I will make the student’s deadline this year. The learning system deadline is the 9th of september 2020 or something. But I’ll try my best!

Advanced REXX Programming Interface – field names and values from SYS

IBM Master the Mainframe Part Three ‚Äď Challenge #13

Explore SDSF real time system information

I’ll leave this part up to you ūüėČ

Copy, review, and execute REXX code that gathers system information

In my¬†REXX¬†data set I’ll create a new member called¬†zperf. I assume that stands for IBM Z Performance? In edit mode I’ll¬†copy ‘zos.mtm2019.public.rexx(zperf)’¬†into it. I’ll also enter the primary command¬†hilite rexx¬†to have some syntax highlighting in the editor.

Now I’ll return to the data set member overview and issue the line command¬†ex next to the¬†zperf member to execute the REXX.

It should write a message to our P3.OUTPUT(#13) data set member.

It did. Nice!

Modify REXX code and observe differences

We need to do the following:

  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

No weird stuff, we need to remember to comment line 36 before creating the final report. I hope the indentation at line 36 is still ok. So, I’ll go back and¬†ex the¬†zperf member again and check the output.

Wooh, a lot of red text. My P3.OUTPUT(#13) has not changed though.

I’ll keep a list of the variables here so I can use them in the code later.

Column SYSNAME.1 has the value: S0W1
Column TOKEN.1 has the value: 4TwSNj...bCmGHGw
Column SYSLEVEL.1 has the value: z/OS 02.03.00 HBB77B0
Column CPUPR.1 has the value: 54
Column SIO.1 has the value: 650
Column AUXPCT.1 has the value: 0
Column CSAPCT.1 has the value: 6
Column SQAPCT.1 has the value: 30
Column ECSAPCT.1 has the value: 13
Column ESQAPCT.1 has the value: 71
Column UIC.1 has the value: 65535
Column SPOOLPCT.1 has the value: 22
Column CADSPCT.1 has the value: 48
Column PAGERATE.1 has the value: 0
Column REAL.1 has the value: 2016727
Column REALAFC.1 has the value: 911297
Column REALAFCB.1 has the value: 2479
Column FIXPCT.1 has the value: 4
Column FIXBPCT.1 has the value: 1
Column MAXASID.1 has the value: 2495
Column FREEASID.1 has the value: 2315
Column BADASID.1 has the value: 0
Column STCNUM.1 has the value: 83
Column TSUNUM.1 has the value: 59
Column JOBNUM.1 has the value: 0
Column WTORNUM.1 has the value: 3
Column SYSPLEX.1 has the value: SVSCPLEX
Column LPAR.1 has the value:
Column VMUSER.1 has the value: DGBGMDU
Column JESNAME.1 has the value: JES2
Column JESNODE.1 has the value: SVSCJES2
Column SMF.1 has the value: S0W1
Column IPLVOL.1 has the value: VIMVSB
Column IPLUNIT.1 has the value: 1000
Column IPLDATE.1 has the value: 2019.342 13:24:10
Column IPLTYPE.1 has the value: COLD
Column IPLDAYS.1 has the value: 4
Column LOADPARM.1 has the value: 0CE3W1M1
Column CVTVERID.1 has the value:
Column LOADDSN.1 has the value: SYS1.IPLPARM
Column LOADUNIT.1 has the value: 0CE3
Column IEASYS.1 has the value: (00,LV,SV,VN)
Column IEASYM.1 has the value: (W1,SV,VN)
Column GRS.1 has the value: RING
Column HWNAME.1 has the value: VM-TOKEN
Column CPC.1 has the value: 003906.M04.IBM.02.0000000F1DF7
Column MSU.1 has the value: 10012
Column SYSMSU.1 has the value: 236
Column AVGMSU.1 has the value: 5
Column CPUNUM.1 has the value: 2
Column ZAAPNUM.1 has the value: 0
Column ZIIPNUM.1 has the value: 0
Column OSCONFIG.1 has the value: MVS
Column EDT.1 has the value: 00
Column NUCLST.1 has the value: SV
Column IEANUC.1 has the value: 01
Column IODFDSN.1 has the value: SYS1.IODF00
Column IODFDATE.1 has the value: 2017.177 14:56:10
Column CATDSN.1 has the value: MASTERV.CATALOG
Column CATVOL.1 has the value: VPMVSB
Column MLA.1 has the value: 1
Column CATTYPE.1 has the value: ICF
Column NETID.1 has the value: USASDV02
Column SSCP.1 has the value: USASDV02.MVR23GA
Column STATDATE.1 has the value: 2019.346 12:18:00
Column IPLCUNIT.1 has the value: 1000
Column IODFUNIT.1 has the value: 0CE3
Column IODFCUNIT.1 has the value: 0CE3

Modify REXX code to produce customize performance report

So the “Description of the challenge ZPERF REXX code” paragraph by IBM tell us what every function does in this REXX script.

We need to include the following information in our report:

  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

And you probably guessed it, I’m doing the bare minimum! Note to my future employers, this is not my work attitude ūüėČ

We know the following: “The information above is available from the SDSF¬†SYS¬†column fields.”. Now then, let’s just figure out how we echo each piece and finish this challenge.

So when we get to the variable name we want we need to execute a write function. Easy. I’ll figure out the 6 variables we need and then create 6 copies of the write_variablename function. Not the way I like to write it, but hey, bare minimum. For example, if I need MSU i’ll change¬†then nop to¬†then call write_msu and create a function called write_msu. Don’t forget you can search the text using the primary command¬†f <query>.

How will I find out these variables? Easy! Google! I search for “High unreferenced interval count mainframe” and I can find an exact match on¬†https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.isfa600/isfa600ug_isfjvsys.htm showing the variable title. This page actually has all of them.

My output looks good! On to challenge 14!

IBM MTM 2019: Part Three ‚Äď Challenge #12

There’s a system problem! One of our system elements¬†EZAFTPCU¬†has encountered an issue! Let’s quickly get to our terminal and fix it!

System Programmer and SMP/E

IBM Master the Mainframe Part Three ‚Äď Challenge #12

Retrieve z/OS module maintenance information using SMP/E panels

TIP: take note of all the names!

From the ISPF Primary Option Menu enter the primary command¬†SM to display the SMP/E Dialog Panels. I’ll press¬†F3 too to skip the tutorial. We don’t have time for this, our client is getting angery and my boss is pointing the 99.99% uptime agreement at me.

I’ll tab to the¬†SMPCSI DATA SET and type ‘MVS.GLOBAL.CSI’. After that I’ll tab back to the cop command input and enter¬†3¬†as query.

Here we go, I’ll press enter and then enter 1 as CSI Query.

Next up we know that EZAFTPCU is the ENTRY NAME and MVST is the ZONE NAME.

I’ll tab to the left of the MOD entry type and enter line command¬†s to select it.

Now I get to see the following. I’ll try and remember the RMID and LMOD names because I need those to complete the challenge.

I’ll press F3 twice to return to the CSI Query panel. Now I need to do the same process but for different zoen names and entry types. The first one has¬†MVST¬†as zone name,¬†SYSMOD as entry type and¬†RMID, which we remember from before, as the entry type.

I get to see the following.

The SYSMOD type is PTF and maintenance happened on this element. Now let’s tap F3 twice again and query¬†MVST as zone name,¬†LMOD¬†as entry type and we need to enter the LMOD¬†name, which we remember from last time,¬† in the entry name field.

Now I get to see the following. We need to remember the¬†SYSLIB¬†name which I conveniently censored ūüėČ

Yes I have removed a piece. I am required to.

Submit JCL to execute SMP/E utility program

I’ll create a new member¬†SMP¬†in my¬†JCL data set. Inthere I’ll copy¬†‘zos.mtm2019.public.jcl(smp)’. Strange! I already had an SMP member in my JCL data set.

It looks like the one I need, I’ll keep it! Free stuff!

  1. Replace AAAA with the target zone name
  2. Replace BBBBBBBB with the MOD name
  3. Replace CCCCCCCC with the LMOD name
  4. Replace DDDDDDDD with the RMID or SYSMOD PTF unique number
  5. Replace EEEEEEEE with the SYSLIB system library data set identifier

Honestly, MOD name is a bit unclear to me.

What you know is the problem situation implicated a named MOD.

Nevermind, got it.

Now then, I’ll¬†submit ; =sd ; st¬†and the challenge should be done. Let me check my output.

Censored and done! Let’s continue!

Do you like censorship?

I personally do not. Be it the picture above or the internet.