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 Delivered
Workspace IBM i
Categories Languages - RPG
Created by Guest
Created on Sep 9, 2022

Increase line size of SRCSTMF on the CRTSQLRPGI command.

As an attempt to modernize my application source code I am storing my sqlrpgle code on the IBM i IFS and was attempting to use IBM Better Object Builder (BOB) to compile my code. It is frustrating though, that I still have to deal with a 100 length limit on the number of characters I can have on a line. If I store my code on IFS I should not have to worry about a 100 character limit. Please remove this limit. If not possible please make the limit much larger so under normal coding a developer would not need to worry about this limit. As IBM begins to push development teams to use MERLIN or a more modern development strategy to store source code on the IFS, this will most definitely become a huge road block to that progress.


Please also see Issue #128 on the BOB github page:

https://github.com/IBM/ibmi-bob/issues/128

Idea priority High
  • Guest
    Reply
    |
    Jan 24, 2023
    IBM believes that the solution for the Idea described is available with PTFs for 7.3, 7.4, and 7.5.

    The PTFs allow you to control the line length of the source file specified by the PPSRCFILE parameter for CRTBNDRPG or CRTRPGMOD when the RPG compiler is called in pre-processor mode. The most common reason for the RPG compiler to be called in pre-processor mode is when the CRTSQLRPGI command is specified with RPGPPOPT(*LVL1) or RPGPPOPT(*LVL2). In that case, the SQL precompiler calls the RPG compiler, specifying PPSRCFILE(QTEMP/QSQLPRE).

    The actual record length of the file is 12 bytes longer than the line length. For example, if the line length is the default of 100, the record length is 112.

    There are two separate enhancements:

    1. Support for compile-time environment variable QIBM_RPG_PPSRCFILE_LENGTH. When this environment variable is specified with a value between 100 and 32754, the file specified by the PPSRCFILE parameter is created with that line length, if the file does not already exist.

    2. Support for new command parameter PPMINOUTLN (Minimum output length for PPSRCFILE). You can specify a value between 100 and 32754. This parameter specifies the minimum line length for the file specified by the PPSRCFILE parameter. If the file does not exist, the RPG compiler creates the file with the maximum of the value specified by the PPMINOUTLN parameter and the longest line length in the file specified by the SRCFILE or SRCSTMF parameter, up to a length of 32754.

    Warning: If you apply the PTF for the command parameter, it will cause any changed command defaults to revert to the shipped defaults. If command default changes have been made for the CRTBNDRPG or CRTRPGMOD commands, the changes will have to be made
    again. If copies have been made of the QDEVTOOLS/CRTBNDRPG or QDEVTOOLS/CRTRPGMOD commands, these copies will not have the new
    PPMINOUTLN parameter. If this new parameter is desired, then new copies will have to be made of the commands.

    To obtain these enhancements, you need the following PTFs:

    7.3:
    1. PTF to support the environment variable: 5770WDS SI82184
    2. PTF to support the new commad parameter: 5770WDS SI82183

    7.4:
    1. PTF to support the environment variable: 5770WDS SI82178
    2. PTF to support the new commad parameter: 5770WDS SI82179

    7.5:
    1. PTF to support the environment variable: 5770WDS SI82185
    2. PTF to support the new commad parameter: 5770WDS SI82186

    For more information, see https://www.ibm.com/support/pages/node/6857461.

    - IBM Power Systems Development
  • Guest
    Reply
    |
    Nov 24, 2022
    Ran into this issue yesterday when taking some freeform source that completed fine in source members and tried compiling the same source on IFS with BOB. Agree that this could become a speedbump for modernization.
  • Guest
    Reply
    |
    Oct 14, 2022
    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.

    IBM Power Systems Development
  • Guest
    Reply
    |
    Sep 9, 2022

    We have done some investigation of the problem.
    If the RPGPPOPT(*LVL2 or *LVL1) us specified and the developer didn't create QTEMP/QSQLPRE in advance, the precompiler creates the file with record length 112.


    The precompiler can't scan the source in advance before doing the preprocess for *LVL1 or *LVL2 because it doesn't know what copy files will be placed in the output. So it always creates it with record length 112.
    The help for the RPG preprocessor message RNF0733 says

    Recovery . . . : If the CRTSQLRPGI command is used with a value of *LVL1 or *LVL2 for the RPGPPOPT parameter, create file QTEMP/QSQLPRE with a sufficiently long record length prior to using the CRTSQLRPGI command again.

    So one option is to create QTEMP/QSQLPRE (and BOB might be able to do that via issue #128)
    The other option would be for the precompiler to use a larger record length. A better solution would be for the precompiler to use an IFS temporary file.