Skip to Main Content
IBM Power Ideas Portal


This portal is to open public enhancement requests against IBM Power Systems products, including IBM i. 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
Workspace IBM i
Categories Languages - RPG
Created by Guest
Created on Jul 10, 2024

Be able to use CTL-OPT BNDDIR anywhere in a program

For each service program, we put our exported prototypes into a "reference source" in a file named "QRPGLEREF". Hence, our programs can use these prototypes by including those reference sources, e.g. program ORD001 might begin:

ctl-opt;

/include qrpgleref,customers

/include qrpgleref,products

// ... program functionality

 

We then specify the required service programs at compile time to build the program. We would like to reduce the requirements to add these in each time by using binding directories.

For legacy reasons, we don't want to create a single binding directory named "PRODUCTION" containing everything as is sometimes suggested (too many clashing names). We would also err away from creating a binding directory "ORD001" containing a list of dependencies specifically for ORD001 as this lacks good source control within our organisation, and is not easy to duplicate for other new programs (ORD002 might have similar requirements).

Hence, we create binding directories CUSTOMERS and PRODUCTS, containing just the service programs CUSTOMERS and PRODUCTS respectively.

We can bind these into ORD001 by adding these to the control specifications of ORD001, as follows:

ctl-opt bnddir('CUSTOMERS': 'PRODUCTS');

/include qrpgleref,customers

/include qrpgleref,products

 

This meets our requirement!

However, these lists could still become large, and we are "doubling up" the dependency - we have CUSTOMERS listed as a binding directory, and included in the prototypes. Ideally, we would like to be able to add a binding instruction to the reference source, and avoid this doubling up. For example, CUSTOMERS would begin:

ctl-opt bnddir('CUSTOMERS');

//... list of exported prototypes and templates from customers

 

And PRODUCTS would begin:

ctl-opt bnddir('PRODUCTS');

//... list of exported prototypes and templates from products

 

Finally, ORD001 would simply begin:

ctl-opt;

/include qrpgleref,customers

/include qrpgleref,products

 

But crucially - the CUSTOMERS and PRODUCTS binding directories are automatically considered at compile time!

This is not currently possible because the PRODUCTS reference source will prevent compilation - as a ctl-opt statement follows a prototype (RNF0724 statement type is out of sequence). Hence, I would like BNDDIR control statements to be able to be specified anywhere within a program.

 

I do wonder what it should do if CUSTOMERS reference source also contains ANOTHER reference source, which includes ANOTHER binding directory, and whether this gets out of hand very quickly, but I can't decide if this would be a problem or not.

Idea priority Low
  • Guest
    Reply
    |
    Jul 16, 2024
    IBM will use this Idea as input to planning, but no commitment is made or implied. This Idea will be updated in the future if IBM implements it. IBM will use votes and comments from others in the community to help prioritize this Idea.

    If IBM implements this Idea, it will likely use the /SET directive, or possibly a new /BNDDIR directive, rather than allowing the CTL-OPT statement to appear later in the source.

    -IBM Power Systems Development