IBM MTM 2018: Part Three – Challenge #01-02

We’re at #01 again. It feels like I just started all over again. Anyways, these challenges will be a lot more challenging. Less handholding and a lot more work! As promised to Paul Newton from IBM I won’t be posting the solutions to these challenges. I’ll just write about my experiences running through these challenges.

I know, this possibly makes it a lot less interesting to read for you guys but I’m sure some posts will be of great help when you’re doing the challenges yourself.

I’ve also changed the way you can comment, now you don’t need to enter a name or mail address.

Getting Started

IBM Master the Mainframe Part Three – Challenge #01

Well I think it can’t hurt showing the solution to challenge #01 as there’s really not much to do.

Run tso part3. Then edit Z30163.P3.OUTPUT(#01).

This was the output, now I need to copy the lines from P2.OUTPUT(#01). That can be done using the COPY primary command. For some reason typing copy p2.output(#01) after a didn’t work, even when I wrote a on line 000001. I’m not sure what I’m doing wrong. I just used the copy tool using its ‘wizard’. I think the quick command for the copy utility is =3.3.
Deleting the line is easy, I wrote about this before. You can use the dd line command. This leaves me with only Belgium present inside the list.
This is it for the first part!

SORT Utility Capabilities

IBM Master the Mainframe Part Three – Challenge #02

This time I’m responsible for validating another company their client master file. I’m doing this with the help of Mister Peabody, a senior technician.

My company AA Global Investments periodically acquires smaller regional investment companies. This time we’re negotiating acquisition of BB Regional Investments. The acquisition includes about 45 million clients. We need to validate BBRI client records.

Let’s first study the Master File Client Record Layout.

The Unique Account Number can be used to identify duplicate records. But please note that a client may have multiple account numbers and duplicate account numbers may happen. Duplicate account numbers are not done, so we’ll need to handle that.

I’ll edit Z30163.jcl and make a new member called sort001. Primary command s sort001 does the trick, I had to use this in Part 2 once.

Now we need to copy ‘zos.public.toolbag(sort001)’ into z30163.jcl(sort001).

This got me the following JCL.

A simple modification needs to be made. The SET operation needs to reference ZOS.PUBLIC.BBRI.CLIENTS as the SORTIN data set name. JOB08137 completed! If message ICE055I is in SYSOUT then any records with duplicate unique account numbers were found and deleted. Let’s check.

Yup! A total of 4 records were deleted. I told Mr. Peabody that I’ve deleted 4 duplicate records. However he now wants a special report about the duplicate records.

The analysts want a list of client records containing duplicate unique client account numbers and a list of client records without the duplicate account numbers. Mr. Peabody told me about a tool called ICETOOL, let’s see how it can help me.

I’ll go ahead and make a new JCL member called sort002 and copy ZOS.PUBLIC.TOOLBAG(sort002) into it.

Got it! Again, change the SETVAR to ZOS.PUBLIC.BBRI.CLIENTS. Now I need to modify ICETOOL its select control statement directives. At line 9 it says ON(P,M,F) where P,M,F stand for starting position (P), length (M), and field format (F).

First I need to get the unique account number values for P,M and F from the JCL job SORT001. Luckily I have a screenshot not far above. However, splitscreen using F2 is nice to know though!

JOB08379 submitted! The report was written to Z30163.P3.OUTPUT(#02). Let’s check and then give it to Mr. Peabody.

Output looks good! What! Mr. Peabody said that this isn’t exactly what the business analysts requested? I need to adjust the ICETOOL select control statement directive to the correct report. I’ve been told to change LASTDUP. Time to read some documentation and hope everything is ok.

If found the directive needed to write all the duplicate records into the duplicate report. JOB08420 submitted!

Looks like I found all duplicates! Why did I only find four last time? Huh… wait a minute! Let’s check P3.OUTPUT(#02).

Seems more like it! It guess that’s it for today huh?

Bad news

I’ve completed part 2, but it appears that I don’t deserve a place on the wall of fame because I’m officially not a student. I don’t really see the point of not including other enthousiasts on this list, but hey who am I?

However, I just received this in my inbox:

I was afraid that I wasn’t eligible for the badges as I’m just participating in the learning course, not in the contest. But this e-mail gives me good hope!


Hi anonymous readers! I see a lot of traffic but probably nobody likes to comment. I understand! I’ve added this applause button next to the post title, click it! It’ll make someone smile! Also, you can comment anonymously now!

What made you smile lately?

10 thoughts on “IBM MTM 2018: Part Three – Challenge #01-02

  1. Do you know why I am not getting P3.OUTPUT(#02). I have substituted pmf with 1,8, CH and got a couple of output that didn’t include SORTOUT/SYSOUT. Please advise.

    1. Hi Jon, it’s hard to say without seeing your JCL. Did you enter 1,8,CH without a space between the comma and ‘ch’? JCL is very strict. Would love to check my code, but my logon suddenly stopped working. I’ll get back to you 🙂
      – Kevin

      1. Thanks for your response. I tried both with and w/out space to no avail. Pls. see below. I look forward to your response.

        ****** ***************************** Top of Data *************************
        ==MSG> -Warning- The UNDO command is not available until you change
        ==MSG> your edit profile using the command RECOVERY ON.
        000001 //SORT002 JOB 1,NOTIFY=&SYSUID
        000004 //TOOLMSG DD SYSOUT=*
        000005 //DFSMSG DD SYSOUT=*
        000007 //TOOLIN DD *
        000009 ON(1, 8, CH) LASTDUP USING(CTL1)
        000010 //CTL1CNTL DD *
        000011 OUTFIL FNAMES=DUP
        000012 OUTFIL FNAMES=NODUP
        000013 //DUP DD DSN=&SYSUID..P3.OUTPUT(#02),DISP=SHR
        000014 //NODUP DD SYSOUT=*
        ****** **************************** Bottom of Data ***********************

        1. Hi Jon, your code almost exactly matches mine except for one difference. You have forgotten about “Modify ICETOOL select control statement directive LASTDUP with a directive writing a report the business analysts need to visually compare the duplicate records with each other“. You need to change your line 000009 LASTDUP to something that selects all duplicates. Documentation can be found here:
          – Kevin

  2. Hi Kevin.

    Thanks for doing this. This is about Part 3 Challenge 01. I tried to copy as instructed, but it just copied same information in line one but not a list/data on Country. I dont know what I’m doing wrong after 4 hours.


Leave a Reply

Your email address will not be published. Name, email and website not required.