Monday, October 7, 2013

IBM i Technical Refresh 7

IBM has announced the anticipated Technology Refresh 7, commonly called IBM i TR 7.

It includes what IBM describes as a "major enhancement to RPG IV" with the introduction of free format F- and D-Specs. Having worked with the current RPG/free the new /free operations for the F- & D-Specs does look a bit strange:

   ctl-opt dftactgrp(*no);

   dcl-pi *n;
      caller_name char(10) const;

   dcl-c RECORD_LEN 80;

   dcl-f qprint printer(RECORD_LEN);

   dcl-ds prtDs len(RECORD_LEN) qualified;
      *n char(6) inz('Hello');
      name char(50);
   end-ds; = transform(caller_name);
   write qprint prtDs;

   *inlr = '1';

   dcl-proc transform;
       dcl-pi *n varchar(50);
          name varchar(10) const options(*trim);

        return '*** ' + name + ' ***';

This leaves just the I- and O-Specs in fixed format.

This should be available as a PTF in November 2013.

More details can be seen on IBM's developerWorks website here.

In stories on other IBM i websites, mention that there will be a conversion tool to take RPG III and column based RPG IV source code and convert it to the new free format. But I could find that in the IBM announcement. As the two stories are so similar I presume that they come from the same (IBM?) source.

There are also enhancements to SQL.

Part of the announcement states "improved SQL Generate DDL support for Keyed DDS files". More details can be found here.

And there is a promise of SQL pre-compiler support in all RPG specification, see here.

There also appears to be a change to the QCMDEXC API, which is being changed to no longer require the Command Length parameter, see here. It refers to QCMDEXC in QSYS2, will this be a new command as the QCMDEXC API on my IBM i is found in only the QSYS library?

The announcement document can be viewed here.

While not part of this announcement IBM announced at LinuxCon 2013 that they are going to invest $1 billion in new Linux technologies for IBM Power Systems.

Below are two stories I found on other IBM i websites that give more information about TR7 that I cannot find in the IBM document:


  1. These are some nice additions to RPG and SQL.

    But what I would really like to see is better null support in RPG for both embedded and native I/O. Why not let us compare a field to *NULL instead of using null indicators?

    1. I agree with you there about the *NULL versus null indicators.

  2. What I wanted was something to put in the new Control spec to say something like RPGCYCLE(*NO).

    1. If you write "Nomain" = RPGCYCLE(*NO) ?

    2. How about the MAIN keyword (6.1) that lets you pick a subprocedure to be the main procedure? That type of RPG main procedure is called a "linear main" as opposed to a "cycle main". A linear-main module is almost like a NOMAIN-module except that you can create a program with it.

  3. To your question regarding QSYS2.QCMDEXEC. QSYS2.QCMDEXEC is a stored procedure which allows to use QSYS/QCMDEXEC from SQL. I am sure you have this procedure on your system too. You can see this stored procedures in the Stored Procedure Secition in System i Navigator.

  4. I think you can specify "ctl-opt main(yourmainmodule);" to disable the rpg cycle.

  5. This is a horribly ugly syntax that will do nothing to attract Java or C programmers to RPG. Why do IBM insist on refusing to use the commonly accepted { } block convention instead of all those wordy dcl-xxx/end-xxx. And don't get me started on every line requiring a semicolon! For developers that switch languages regularly that is the worst possible situation. And V6R1 introduced the "no logic cycle" feature by adding the MAIN procedure reference H spec.

  6. Looks like IBM finally managed to find a way to scare off even the last RPG programmers. They can't be serious to introduce a syntax like that. And where are the improvements here? Does this let me do more with RPG? Where are the new language elements, enhanced functionality? There are so many things that still need to be improved within RPG, the BIFs and the compiler. I wonder why the folks at IBM don't use their time and money better. I would bet there's still no Qualified keyword for procedure exports and there's still no *EMPTY special value to easily init varying unicode strings and %Scan still crashes when used on empty strings. 1 billion goes to Linux, how does that help the i community?

  7. @unknown If I had to venture a guess, I'd say IBM is not using 'commonly accepted' braces because RPG doesn't use braces, and it's an entirely new syntax the compiler would need to support in addition to all the existing source in the current syntax.

    @Joe G I honestly can't see how adding something new-ish to RPG would scare anyone. As for major improvements, I'd like to see some big things too, and given the past 10 years, I bet I'll see them. Just because Toronto managed to complete this particular mod in between major releases doesn't mean they aren't also working on Big Things as well.

    Has anyone submitted a requirement with COMMON? If not, how will Toronto demonstrate that the community (us!) want full NULL support? How will the lab justify a major overhaul to the language without quantifiable demand?


To prevent "comment spam" all comments are moderated.
Learn about this website's comments policy here.

Some people have reported that they cannot post a comment using certain computers and browsers. If this is you feel free to use the Contact Form to send me the comment and I will post it for you, please include the title of the post so I know which one to post the comment to.