IBM MTM 2019: Part Two – Challenge #13

Challenge the 13th, spooky.

Now now, don’t be scared. I’m here to help. Let’s learn a thing or two about the system utilities z/OS has to offer. Besides that, let’s also fix some JCL syntax errors our intern Kevin has made.

It’s been 10 days! Sorry for that, IRL and work has left me with no spare energy to do all this. I have noticed I gained a lot of e-mail subscribers and I would like to give you a heads-up to also check your spam folder 🙂

z/OS System Utilities & JCL Syntax Error Correction

IBM Master the Mainframe 2019 Part Two – Challenge #13

Let’s get started! We first need to get the required data set for this challenge. We can get this by issuing the primary command tso submit ‘zos.public.jcl(ch13)’ from the ISPF option menu. Choose a random job character if prompted for one, I chose ‘a’.

TIP: if you choose to use this blog, you can actually skip all the submitting and debugging and read what needs to be done.

Oh no, the intern made a mistake. I guess we senior mainframe developers will have to fix this issue. Let’s debug and see which syntax error has been made.

Let’s jump to the status display using =sd ; st primary command from the ISPF option menu. Then enter line command ? in the NP column next to our job. At last, we select the JESYSMSG to see what our errors are.

There we go. Now, let’s see.

There are some unindentifiable characters in this JCL. I guess it has something to do with PGMPATH. But who can tell? It’s just a guess 😉 Let’s copy the JCL to our personal data set, execute it, fix it, rinse and repeat until we have fixed all of the errors.

A full description of what this JCL job does is provided on the challenge page.

For a change I have provided a ton of screenshots. I first navigate to the DSLIST utility using =3.4 and then I filter by my id. After that I edit my JCL data set and create a new member using primary command s ch13. In CH13 I copy ‘zos.public.jcl(ch13)’ into it. Now let’s execute using submit ; =sd ; st and after review the output like we did before.

Again the same error we saw before. Let’s investigate both.

I have searched for the string ‘pgm’ in this file. And what do we notice? All other PGM’s are UPPERCASE. The odd one out is LOWERCASE, make it UPPERCASE.

Same for ‘path‘. Change it to PATH. Let’s submit it again and check what the next error is.

Ok, I have already noticed this issue but decided to go ahead and show it to you guys. Because I like you.

There are three DSORGs that need to be changed and one disposition field. Let’s change these. You notice that on the screenshot above we need to use the correct DSORG for SEQuential datasets. Then pick the right one for the other type of data sets. This exercise is almost the same as challenge 9 from last year.

Observe the change I made. The sequential data set needs the type PSPS stands for physical sequential. The other two require DSORG PO. PO is the data set organization for both PDSEs and PDSs. DSNTYPE is used to distinguish between PDSEs and PDSs.

Now let’s submit again.

Again an error! This is getting tiresome! It looks lik the code is crashing at FILENAME IS (/z/zzzzzz/ch13). That doesn’t look like our filename. Ours is different, in my case it’s /z/z50087/ch13. Let’s change it again! Something tells me this is not the last error. I’m going all the way.

I have changed the PATH. Now let’s execute again and see what the next error is.

Ok it seems there’s a validation error. [email protected] is strange isn’t it?

We need to change [email protected] to PDS. Do that and submit.

Another error! Verb name [email protected] I suspect somebody’s cat has taken a walk on their keyboard. Specifically on the @ button. It might have been a really small cat. But REALLY small. It should actually be REPRO instead of [email protected]

Change and submit!

I have the MAXCC=0000 code so that must mean everything is ok! Let’s quickly check our P2.OUTPUT file!

The file is here! We have completed challenge 13 of part 2!


I’m doing this because of my personal interest in mainframe. I don’t have a job in mainframes, I mainly develop in PHP and Node.js. Personally, I don’t really know what keeps me this motivated about mainframes and blogging. But I like it.

What are you motivated for? Why are you interested in mainframes?

14 thoughts on “IBM MTM 2019: Part Two – Challenge #13

  1. Hi Kevin,
    Yes it’s like the CH9 last year contest, but far more tricky. I don’t know what do you think but this year is more “complicated” and less help appears. And I found that slack manage less questions than last year.
    Anyway CH13 is done!
    Thank you!

    1. Hi Georges

      I believe this year is a bit easier than last year, but that might have something to do with me already having some experience.

      I have checked part 3 its challenges and they seem much easier than last year. They have a lot more REXX exercises and I love that.

      By the way, thanks for the kind comments 🙂

      – Kevin

  2. Hi there,

    While you are doing a great job by sharing this, do you think it’s a good idea ? As it’s very much possible that some people might just be getting full solutions from here rather than doing the challenges themselves and so may not be learning as much as they are supposed to be without questioning their honesty. As you know there is an official slack for Master the Mainframe where issues are discussed but there also people avoid telling the full solutions.

    1. Hi Bob

      I fully understand your concerns.

      But I believe the people that genuinely want to learn mainframes will not look at my blog. Those are the people that really aim to work in the field. There are also people that learn better by seeing how it’s done first, that’s how I prefer to learn as it’s more time efficient.

      People don’t post full solutions on Slack as people who visit it don’t aim to get answers, but hints or general help. When you stumble upon my blog, you either choose to read the answers or leave the page.

      There are quite possibly people who will misuse these solutions to quickly get their certificate, but they will lack confidence and sooner or later they will succumb to the imposter syndrome effect.

      I make these blogs for myself as blogging motivates me to learn things. Even without readers I would continue to write this blog. I’m not saying you have implied that, but my intentions are not to hurt this contest.

      Kind regards,
      – Kevin

    2. Hi Bob,
      I understand your fair-play, but if someone want to learn something by his own, is gonna search the help/advice anywhere. Here Kevin is helping people who’s looking for solutions, in plain English! If you think this is cheating then don’t read anything from him. Simple.

  3. Hello Kevin. All right? I need your help. My work is correct. Now that you have published yours, I came here and checked, and it seems to me to be identical. However, I still receive the “incorrect” status message.
    The reason is probably because I can’t send the job correctly, because my p2.output (# 13) is different from yours. Help me please.
    Thank you very much in advance.


    1. Hi Egmon

      I have had a quick look at your screenshots and everything looks fine, strange! Did you check your job output and all of its members to see if any of them tell you there’s an error? What’s your MAXCC code? Any error message after executing the job?

      I don’t have access to the mainframe right now, but I’ll be able to help you out more this evening.

      Kind regards,
      – Kevin

        1. Hi Egmon

          Do we need to issue ‘rep p2.output (ch13)’? I would delete ch13 and do it over again to see if it fixes the issue. I can’t really help out more, your solutions look correct.

          If it isn’t fixed, then I would suggest to ask for help on Slack.

          Kind regards,
          – Kevin

Leave a Reply

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