COBOL Plus JCL Equals Magic

The Initiation

I’ve had a love-hate relationship with Job Control Language (JCL) ever since my first encounter with it back in the 1990s. If you wanted to program in COBOL, which I did, there was no way to avoid JCL. All beginner programmers had to complete a week-long JCL tutorial with information similar to that found in this current IBM Basic JCL Concepts tutorial. Of course, almost 30 years ago, my JCL tutorial was presented on a green screen in a non-graphic, dry way. I probably learned more in my first hour running my own job than I did that whole week reading screen after screen of info that seemingly had no context.

The Effort

At the beginning of your career, which is what it will become if you have the tenacity to continue as a COBOL programmer, you can’t begin to comprehend how much time you will spend with JCL over the years. Early on, you may spend hours trying to figure out why your job isn’t running at all or why it abends in a step when it logically shouldn’t. You pour over the job output looking for clues, only to find that you’ve somehow added an extra space in your Jobcard or your output file doesn’t exist when your job expects it to.

The Understanding

As time goes on, after you have run a few jobs and debugged a few outputs, it starts to become a bit clearer that there is a method to this madness. Maybe by this time, you have actually written a Batch COBOL program yourself that reads input, perhaps from a file, performs some processing, and writes output to another file. How do you get that program to run and produce that output? You wrap some JCL around it to tell it what file to use as input and where to save the output. Your job may even be scheduled to run at a certain time through a job scheduler like Control-M.

The Reward

In the end, if you stick with it, it can be a very satisfying experience to understand JCL, create a job, and run it successfully. There is something rewarding, almost magical, about producing JCL that runs your own COBOL program and produces an output that you can see. It took time, but it is a skill that I am happy I have learned and that I use daily.

What is your experience with JCL? Did you put in your own effort to come to understand it and, in the end, find it rewarding?