IBM Z Educator Hub

IBM Z Educator Hub

IBM Z Educator Hub

The IBM Z Educator Hub is a one-stop destination for IBM Z educators to find the latest communications, news and events, as well as collaborate and network

 View Only

Teaching JCL

By Paul Newton posted Sat November 16, 2024 09:38 AM

  

The November Educator Hub lecture series included a discussion on teaching IBM z/OS JCL, Job Control Language.

Download the presentation material using this hyperlink.

Several points were stressed about teaching JCL:

1) JCL is NOT a language.

2) JCL enables location and loading of a program into memory for processing

3) JCL enables redirection of internal program 'file names' to z/OS managed resources

4) System utilities are NOT JCL

5) JCL just grew as customer needs appeared

6) JCL was a rather genius idea to allow for original mainframe architectural design concurrent with the design of many new peripheral I/O devices

JCL is NOT a language

This can be controversial but I am in the camp that debates JCL is not a language.  Viewing JCL as a language seems to result in confusion and misunderstanding by those learning JCL.  JCL is a stream of statements consisting of operational commands (JCL syntax) such as EXEC (execute) and DD (data definition).


Fred Brooks, project manager of the original S/360, would always tell his students, “I always tell my students OS/360 Job Control Language is the worst programming language ever designed anywhere by anybody for any purpose and it was done under my management.”  Many experienced z/OS technicians misinterpret this comment.  The reason Fred would repeatedly make this comment is because JCL should not be considered a programming language, "but a few control cards".

JCL enables location and loading of a program into memory for processing

JCL EXEC operation with PGM= operand is instructing the operating system to locate and load a specific executable program.  The PROC= operand (or absence of PGM= operand) is instructing the operating system to use a JCL PROCEDURE such as an in-stream or system cataloged JCL PROCEDURE would includes the PGM= operand(s). 

JCL enables redirection of internal program 'file names' to z/OS managed resources

This is the genius of JCL in my opinion.  The JCL DD (Data Definition) operation includes a JCL DDNAME that must be spelled identical to the loaded program internal file names.  On the same JCL statement following the DDNAME is the DD operation and the DD parameters.  The DD parameters are z/OS managed resources.  This is the area the can be initially difficult for students because it requires awareness of z/OS managed resources such as data set names, data set types, data set attributes, data set dispositions, or unix file names, unix file attributes, etc.

System utilities are NOT JCL

System utilities are executable programs as are user written programs to be located and loaded using JCL EXEC PGM= statement.  System utilities document the utility internal file names that require a corresponding DDNAME DD statement.  The genius here is what is coded on JCL DD parameters, the z/OS managed resources.  What is coded for JCL DD parameters is user choice resulting in flexibility left to the imagination of the user.  However, this requires the user to have awareness/knowledge of the feature/function rich z/OS managed resources, data access methods, etc.

JCL just grew as customer needs appeared

Numerous other JCL operations, such as XMIT, OUTPUT, INCLUDE, SET, COMMAND, IF, etc. are available and they existed over time at the request of IBM customers.  "JCL just grew as needs appeared".

JCL was a rather genius idea to allow for original mainframe architectural design concurrent with the design of many new peripheral I/O devices

When I was exposed to JCL in 1975, I had absolutely no problem comprehending the purpose and the power of JCL as a result of my previous exposure to programming on CDC and DEC operating systems.  I recognized immediately the magic and flexibility of the DD operation. 

Some believe JCL is hard to learn and use.  I debate they fail to understand what JCL is and more importantly what JCL is NOT.  

JCL is NOT a valid computer programming language.  JCL is NOT the operating system managed resources which can take awhile to learn about.  JCL is NOT system utilities. 

JCL enables user computer programming language and system utility I/O device independence accompanied by flexibility and choice of what z/OS managed resources to be used by the user program or system utility.

I welcome and encourage your thoughts, opinions, debate, etc.  As I always tell those that have strong opinions (like me), that the world does not revolve around them, it revolves around me - LOL.  In all seriousness, I enjoy learning from you.

Paul

4 comments
57 views

Permalink

Comments

Sat February 08, 2025 08:23 AM

I fully concur JES as the 'conductor' of 1) input, 2) heavily involved in preparation to execute, 3) output.

JES, (aka Houston Automatic Spooling Program - HASP), enabled the IBM mainframe flagship operating system to advance to new levels of capabilities needed by those with critical data and services.  Before JES, JCL was read by address space #1, the master scheduler. 

With JES, the master scheduler is better able to dedicate itself to servicing 'execution' inclusive of the business workload operating system services related to reliability, availability, serviceability, scalability, and security.

The original IBM mainframe flagship operating system DNA was without JES.  JES was a critical advancement in the history of the IBM mainframe. 

Once again, Andrew, thanks for sharing your thoughts.  The IBM Z mainframe technology is more than a job for me.  It is a fascinating business tool that evolved over 60+ years of advancements by impressive and dedicated folks.  The IBM mainframe continuously advancing capabilities along the impressive archeological dig of technology fascinate me.

Fri February 07, 2025 05:37 PM

I think the emphasis should be on the CONTROL word as that is basically what JCL is doing, it is like the conductor in the orchestra, making sure everything runs smoothly and in tune. It should maybe have been called Job Control System similar to the Job Entry Subsystem, or maybe JES is the Conductor ?

This is the excellent IBM overview of the whole subject, and of course once you click this you can go down a rabbit hole and come out 2 hours later having refreshed all your knowledge and maybe added some

 https://www.ibm.com/docs/en/zos-basic-skills?topic=jobs-what-is-jes

What is JES? - IBM Documentation

Fri February 07, 2025 08:31 AM

Andrew,

Thank you for taking time to reflect and add insightful comments.


Having zero experience with HP Tandem during my career, I was curious and reviewed https://en.wikipedia.org/wiki/TACL_(programming_language) ...  wiki referred to TAL and TACL, where TAL is a compiled programming language and TACL as an interpretive/scripting programming languages.  I view TACL as an added capability to program tandem without the need to compile the source code.

Back to your point about 'control' languages.  Seems that shell scripts, javascript, and REXX have 'programming language' centric attributes where the difference is they are interpretive languages vs compiled languages --- although REXX in z/OS environment is both, analogous to TACL vs TAL.

Bottom line - learning about TAL vs TACL in HP Tandem is very interesting.

JCL is indeed interpretive only but as Fred Brooks commented,  it is not a "a schedule-time programming language, but as a few control cards”

But your point is a good one.  I want those that are new to avoid thinking JCL as a programming language and more a 'control' mechanism to enable a programming language access to operating system defined, managed, and controlled resources.

Paul

Thu February 06, 2025 02:39 AM

One similarity with a "language" is there are syntax checkers of many varieties, Most sites have one of the major tools either provided by IBM or an ISV or some home-grown tool. Many years ago I worked for one of these ISVs. The tools that validated JCL were written in various "real" languages. I guess JCL can be considered as the glue that holds many Mainframe resources in place and helps the flow of the Business Applications move data from one state to another through various processes.

Would you say there are similarities with CL ? that uses the word Language also.

The control language topic collection contains information about all control language (CL) commands that are part of the IBM i operating system. It also includes many CL commands for licensed programs that run on the IBM i operating system.

I also had the pleasure (if that's the right word!) of working at a site where we were replacing Tandem with IBM and this also uses the word language.

This publication describes the syntax and use of the HP Tandem Advanced Command Language (TACL) variables, commands, and built-in functions.