Goodbye to babysitting your z/OS jobs with IBM Z JCL Expert Zowe CLI plugin

Domenico D'Alterio
Published in
9 min readMar 27, 2023


{Ecosystem}IBM Z JCL Expert is a JCL checker tool that provides multiple interfaces to check correctness of your JCL, as well as, to verify the compliance of the statements with site standards/rules defined in your enterprise.

Application programmers know the pressures of building JCL applications with no errors and staying compliant with site standards. This tool provides advanced JCL checking, including site standard conformance verification, by checking the JCL and utility parameter syntax online. Unlike other offerings, IBM Z JCL Expert performs JCL checking in the development environment already in use.

In additional to the development environment, IT operators and schedulers must conduct thousands of JCL batch applications without errors impacting service level commitments. IBM Z JCL Expert provides a batch interface to check multiple JCLs simultaneously. In addition to batch operation, and unlike other offerings, IBM Z JCL Expert also provides a REST API interface to automate the JCL checking that can be integrated into a variety of IT automated processes.

On March 2nd, 2023 IBM Z JCL Expert team made available a technical preview of a plug-in for Zowe Command Line Interface (CLI) that application programmers, operators, schedulers and quality engineers can use to easily check their JCL. The JCL checking can also be done as a CI/CD pipeline and be moved in production with IBM Z JCL Expert. You can download the plugin here.

Are you familiar with the Open Mainframe Project’s Zowe CLI? Zowe is an integrated and extensible open-source framework for z/OS. Zowe offers modern interfaces to interact with z/OS and allows you to work with z/OS in a way that is like what you experience on cloud platforms today.

Zowe CLI provides a command-line interface that lets you interact with the mainframe remotely and use common tools such as Integrated Development Environments (IDEs), shell commands, bash scripts, and build tools for mainframe administration or development. You can use these interfaces as delivered or through plug-ins and extensions that are created by clients or third-party vendors. In a recent blog I described how to use Zowe CLI to create scripts that can fully automate some of your typical, repetitive job scheduling activities, eliminating manual effort and even reducing the potential for errors, thanks to the IBM Z Workload Scheduler plugin for Zowe CLI. In another blog, I described how to use Zowe CLI to interact with IBM Z NetView and manage automation table statements and more. Finally, in a third blog I described how to leverage Zowe CLI to interact with IBM Z System Automation to manage automated resources.

One of the important capabilities of the Zowe CLI is to have scripts that mix CLI commands. For example, JCL Expert check a job, based on no errors then have the job scheduled in Workload Scheduler and then NetView or System Automation updated to monitor the job and take action if there are problems. The Zowe CLI scripting can include any vendor product provided they have a REST API and CLI plug-in.

In this blog, I will describe the main capabilities of Zowe CLI plug-in to interact with IBM Z JCL Expert, that is shown in the following picture as result of zowe -h command.

Zowe CLI with IBM Z JCL Expert plug-in

What is shown in the picture below is the result of the following command, that returns useful information about the commands that are available as part of zjcl-expert | jclx command group.

zowe jclx -h

I could iterate with the online help for each command to drill down on the different commands, their parameters and so on, but I find more consumable to open the web help where I can find all the commands available for Zowe CLI, easy to navigate. So, I issue the following command:

zowe jclx — help-web

that will open the following page in a browser:

Where you have the list of all the commands available for the plug-in that you have installed in your environment.

This view is easy to navigate, to see all the options for the specific command you need:

Zowe zjcl-expert commands drill down

In this section of the blog, I will show the commands available as part of this plugin, with potential use-cases for them. The flow is simply based on what I personally made to get familiar with it, based on what I thought can be useful. However, the power of this plugin is so much higher especially when you think to integrate the JCL checking step in your automated testing process to ensure the proper quality of JCL before moving it to next stage.

The commands available as part of this plug-in enable the user to check a JCL that can be a local file on your system, a dataset member or a zFS (USS) file on the remote z/OS system. More in detail:

· zowe jclx local <local-filepath> [options] will upload a local file on your machine to the remote system as a temporary file and then validate it.

· zowe jclx remote-ds <remote-dsn> [options] will request that a data set on the remote system is validated and the output is returned to your local machine.

· zowe jclx remote-fs <remote-filepath> [options] will request that a zFS (USS) file on the remote system is validated and the output is returned to your local machine.

Unless specified otherwise with the — output text option, these commands will default to returning JSON output.

Let’s look at few examples of the use of these commands and the output returned.

In the first example I will leverage the following JCL:

That I have stored locally on my laptop with the name DEMOJCL.txt, so it appears like this:

The result of the following command, where I specified the option -o text to get a more human readable output, is shown in the picture below.

zowe jclx l DEMOJCL.txt -o text

The output of the command is composed by different sections:

· The first section provides the version of IBM Z JCL Expert installed on mainframe and in use.

· The second section provides summary information of the settings.

· The third section provides the result of the check, with all the lines in the JCL provided as input and notes added from the tool (that can be information, warning or errors).

· The fourth and final section is a summary of the results.

In this example, you can see that the tool automatically replaced the &SYSUID symbol to perform the check and resolved the load module for IEFBR14, with an indication of where the load module was found.

Moreover, the tool detected 3 errors, listed inline in the JCL transcript.

1. ******** CXPS0025E — Expected VIRT or REAL for parameter ADDRSPC
In this case even an indication of what is expected is provided

2. ******** CXPS0403E — Could not resolve load module MISSPGM.
Indication of a program that is not available.

3. ******** CXPS0477E — The data set THIS.DSN.DOES.NOT.EXIST in parameter DSNAME does not exist. Indication that a dataset that does not exist is used.

In general IBM Z JCL Expert executes 3 main steps to process a JCL, it

1. resolves load modules, procs and includes

2. analyzes the resulting JCL

3. and return the results in terms of syntax, in-stream utility control statements, site-specific rules and data set (duplicate and existence check).

If you know that the data set referenced in the dataset doesn’t exist yet or doesn’t exist where you are performing the check, you can leverage the --dsn-check | -c option to disable that check. In this example, with the command

zowe jclx l DEMOJCL.txt -o text -c OFF

you would get an output as the following, where the missing dataset is not listed as an error.

Finally, if you want to leverage the output of this command in a script, possibly the JSON format is the best, to obtain it, it is enough to remove the -o text option and run the following command:

zowe jclx l DEMOJCL.txt -c OFF

That will return the following output in JSON format:

Let’s analyze now a different JCL:

It is stored in my joblib on my remote system, so to check it I will leverage the remote-ds command specifying the dataset and the member I want to check:

zowe jclx remote-ds WLS.V9R5M0.JOBLIB(JCLXDEM2) -o text

The output is the following:

Another example of JCL check is against the following JCL

Through the command

zowe jclx remote-ds WLS.V9R5M0.JOBLIB(JCLXDEM3) -o text

That produces the following output, with the indication of few dataset names that are reserved for JES, so cannot me used in this JCL.


What was shown in the blog is just a small part of the power of the IBM Z JCL Expert plug-in for Zowe CLI and there is no limit on how much automation you can achieve leveraging this plugin. As mentioned at the beginning, the power of the Zowe CLI is not just the individual commands but the ability to write scripts (in the scripting language of your choice) to build multi-step actions to integrate IBM Z JCL Expert in your automated process or any other product with Zowe CLI extensions. These scripts can have variable substitution, use additional script functions (grep, awk, etc.) to build powerful productivity tools.

A common example can be to run a JCL Check before submitting a job.

In a recent blog I described a scenario that leverage the IBM Z Workload Scheduler plugin for Zowe CLI to add a jobstream in plan and submit it for execution. In that scenario, the second job of the jobstream was ending in error … because of an error in the JCL itself. This is the JCL used in that scenario:

Leveraging IBM Z JCL Expert to check this JCL, I would have intercepted the problem before the execution of the job:

On the other hand, I envision even the possibility to have application developers that use it in an interactive way, to avoid logging onto TSO just to change and check a specific JCL. Ultimately, different users will use the plug-in in different ways. The Zowe CLI can have scripts that cross z/OS products and systems to allow coordination of actions in many ways.

An important point to make is that customers that leverage IBM Z JCL Expert, get IBM Z Distribution for Zowe as supporting program, so the support (for the scenarios that are related to the integration) is granted from IBM at no charge. This is important because many enterprises do not allow unsupported software in their production environment.

If you want to learn more about IBM Z Distribution for Zowe, visit the content page, you can find there other details about IBM product extensions and more.

If you want to download the IBM Z Z JCL Expert technical preview of the plug-in for the Zowe CLI, it is available here.

Zowe is owned and managed by the Open Mainframe Project, which is a Linux Foundation project.

#zowe #opensource #devOps #IBMz #automation

This blog was originally posted on AIOps on IBM Z Community, here. Join today for the latest:

To learn more about IBM Z solutions that can help improve system management, IT operations, application performance, and operational resiliency with AI, visit our product portfolio page.



Domenico D'Alterio

Domenico D’Alterio is the IBM Principal Product Manager focused on The Linux Foundation’s Zowe and IBM Z distribution for Zowe projects.