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