Skip to Main Content
IBM Z Software


This portal is to open public enhancement requests against IBM Z Software products. To view all of your ideas submitted to IBM, create and manage groups of Ideas, or create an idea explicitly set to be either visible by all (public) or visible only to you and IBM (private), use the IBM Unified Ideas Portal (https://ideas.ibm.com).


Shape the future of IBM!

We invite you to shape the future of IBM, including product roadmaps, by submitting ideas that matter to you the most. Here's how it works:

Search existing ideas

Start by searching and reviewing ideas and requests to enhance a product or service. Take a look at ideas others have posted, and add a comment, vote, or subscribe to updates on them if they matter to you. If you can't find what you are looking for,

Post your ideas
  1. Post an idea.

  2. Get feedback from the IBM team and other customers to refine your idea.

  3. Follow the idea through the IBM Ideas process.


Specific links you will want to bookmark for future use

Welcome to the IBM Ideas Portal (https://www.ibm.com/ideas) - Use this site to find out additional information and details about the IBM Ideas process and statuses.

IBM Unified Ideas Portal (https://ideas.ibm.com) - Use this site to view all of your ideas, create new ideas for any IBM product, or search for ideas across all of IBM.

ideasibm@us.ibm.com - Use this email to suggest enhancements to the Ideas process or request help from IBM for submitting your Ideas.

Status Future consideration
Created by Guest
Created on Aug 3, 2023

DBB API - Manage a return code for each MVSExec for a chaining sequence in an MVSJob

Hi,

The MVSJob API allows you to chain MVSExec objects and execute them in sequence until an RC value exceeds the specified maxRC value. 

Sample from zAppbuild BMS.groovy:

        def rc = new MVSJob().executable(copyGen)
                         .executable(compile)
                         .executable(linkEdit)
                         .maxRC(maxRC)
                         .execute()

This way of declaring build steps is very efficient and greatly simplifies the coding of the build script.

But this assumes that all MVSExec steps have the same value of maxRC, which is not necessarily true.

I suggest being able to associate a maxRC value on each MVSExec, which MVSJob would test to decide whether or not to continue on the next MVSExec step.

This maxRC value would be declared when creating the MVSExec object:

        MVSExec step1 = new MVSExec()

        ...

        step1.maxRC = 4

        MVSExec step2 = new MVSExec()

        ...

        step2.maxRC = 0

        MVSExec step3= new MVSExec()

        ...

        step3.maxRC = 4

        def rc = new MVSJob().executable(step1).executable(step2).executable(step3).maxRC(8).execute()

MVSJob stop execution if step1 has a RC > 4 or if step2 has a RC > 0 or if any step has a RC > 8.

The declaration of a maxRC at MVSJob level is not necessary but it can be used as a default value for MVSExecs which would not declare a maxRC.

The return code indicated at the MVSExec step level takes priority over the return code indicated at the MVSJob job level.
This also makes it possible to reproduce what can be done with a classic JCL by declaring a general condition at the level of the job and by specifying conditions at the level of each step.

 

 

 

Idea priority Low