Is It Time To Rename RPG?
August 24, 2020 Alex Woodie
Should IBM rename RPG, and if so, what should the new name be? It’s an interesting idea, and one that was recently floated by a member of the IBM i community, who submitted an official request for enhancement (RFE) on the matter. The crux of the argument is that full free-format RPG is such a dramatic departure from fixed-format RPG that it deserves a new name. But will IBM, which owns the language, go along with the change?
Report Program Generator, or RPG, debuted way back in 1959, at the dawn of the computer age, as a way to replicate punch card processing on the IBM 1401, according to the Wikipedia entry on RPG. IBMer Wilf Hey is credited with leading the development of RPG, which emerged from FARGO, or Fourteen-o-one Automatic Report Generation, the predecessor to RPG on the IBM 1401. RPG is just one of a handful of computer languages still in use that were also used with punch card machines.
In the late 1960s, IBM updated the language and released RPG II in concert with the launch of the IBM System/3 line. RPG II was used with the System/32, the System/34, and the System/36, and was also used with System/370 mainframes. It was also used with VME/K, the operating system used by International Computers Limited (ICL), a British developer of mainframes that ceased operations in 2002. There was also a clone RPG environment for DEC VAX minicomputers way back when. This was the hey-day of the procedural language, as far as its support for a broad number of platforms go, but it would still have a long life ahead on IBM systems.
The language name was incremented in 1978 with the release of the System/38. RPG III was a major update of the language, and it introduced many modern constructs, including IF-ENDIF blocks, DO loops, and subroutines, according to the Wikipedia entry.
When IBM launched the AS/400 in 1988 it gave RPG III a new name – RPG/400 – but the language itself was identical to RPG III. (Many components of the midrange server got the “/400” treatment, a heritage that is reflected in many product names, including this newsletter.)
The next major update to the RPG language came in 1994 with the launch of OS/400 V2R3. As part of that launch, IBM introduced the Integrated Language Environment (ILE), which provided a more modular and consistent way of developing applications. As part of the ILE launch, IBM introduced RPG IV, which is also called ILE RPG or RPGLE. RPG was one of the ILE languages, along with compilers for COBOL, CL, C, C++, and Fortran.
While other development languages are supported on the IBM i platform – including Java and a host of open source languages like PHP, Python, Ruby, and Node.js that are used to develop applications that run under the PASE AIX runtime – RPG (that is, RPG IV) continues to be the language of choice for the vast majority of IBM i developers. According to HelpSystems’ 2020 IBM i Marketplace Survey, RPG is used by 88 percent of IBM i developers for new development, followed by SQL at 80 percent, CL at 53 percent, and Java at 43 percent.
IBM continued to enhance the RPG IV compiler over the years, but it didn’t do anything major with it until it released IBM i 7.1 Technology Refresh 7 (TR7) in October 2013. With that release, IBM officially added full support for free-format syntax in the RPG IV compiler. There was some free-format support before, but this was the first release that allowed developer to write RPG code in an entirely free manner.
Free-format RPG freed developers from needing to adhere to columns, as fixed-format RPG required. Free-format RPG was hailed as a major breakthrough by many in the IBM i community, since it allowed developers to write RPG code the same way they write code in other languages. RPG, they said, could be considered a “modern” language, since it was finally liberated from its regimented punch-card past.
The change to free format RPG was so consequential that some in the IBM i community want IBM to recognize it by giving it a new name. That includes Simon Hutchinson, an IBM i programmer from Texas who called for IBM to give RPG a new name last week on his RPGPGM.com blog.
“Five years ago ‘totally free RPG’ was introduced,” Hutchinson wrote. “It is not ILE/RPG. There are no columns and I can start typing in the first column of the source member, and can continue the way to the last column too. It was something new and different from its antecedents. This is a new version of the programming language and, in my opinion, it deserves a new name.”
Hutchinson favors the name “RPG for i,” to go along with the naming convention IBM uses for other parts of the server, such as Db2 for i (please do not call it DB2/400). Tim Rowe, IBM’s architect for application development and systems management product, has talked about “modern RPG” as differentiated from ILE RPG.
Maybe it’s time to update the version number? RPG V has a certain ring to it, although the time to name it that was probably during the launch of IBM i 7.1 TR7, way back in 2013. (There’s also the delicate matter of the RPG Five, the folk-blues fusion group that includes IBM’s head of RPG development, Barbara Morris, along with IT Jungle’s Ted Holt, Alan Seiden, Steph Rabbani, and Kath Hewitt. But it’s possible that the band could be convinced be share its name with the language RPG, for a certain consideration, of course.)
Hutchinson went so far as to create an official RFE on the developerWorks site on August 15, which allows the community to vote on it. Several members of the community supported the idea, and noted that a new name to go along with the updated language could help to attract younger programmers to the platform. “If you rename RPG to ‘RAMPAGE’ you’ll have the coolest language with the coolest name!” stated one enthusiastic member of the community. (Unfortunately, this name may forever confuse the search engine algorithms, which already think RPG stands for Role Playing Game.)
Ultimately, the RFE received 58 votes in less than a week, making it the hottest RFE on the page. Out of the 400 or so RFEs submitted so far in August across all IBM servers and systems software, Hutchinson’s name-change request received the most votes.
Unfortunately, IBM did not seem receptive to the idea, and declined the RFE less than a week after it was submitted. “IBM does not intend to add a new name or versioning number for free-form RPG. This RFE is being closed,” the company stated on the RFE.
That doesn’t necessarily mean that the idea is a bad one, or that it can’t be revisited in the future. The IBM i community has been quite passionate with another RFE: release a “lite” version of RDi. So far, Big Blue hasn’t budged on that matter, but you never know.
RELATED STORIES
The (More) Modern RPG Language
What IBM Can Learn From Free-Form RPG
Lack Of Awareness Plagues Free-Form RPG
Free Format RPG Is Here with TR7, Context Checking Still to Come
RPG is fundamentally limited by its memory model – there is no garbage collector. Procedures return variables to a caller by value. A garbage collection language returns variables by reference. Returning by value limits what a procedure can do since the more data the procedure returns, the slower it runs. You are never going to write an RPG procedure which converts a database table to a CSV string and returns that string. But javascript programmers do that sort of thing all the time.
Implement javascript as an ILE language. Now, that would be something to talk about.
That is a very interesting idea, of course.
You would think that a company that changes the name of their flagship midrange platform every five years or so wouldn’t be so squeamish about changing the name of a language that no longer bears any resemblance to its predecessor from SIXTY YEARS ago.
To do something really useful, add some stuff, like Steve’s comment above, and then get it to run under windows so it can compete in the real world.
We’ve referred to freeform version of RPG as RPG /free all these years. That’s worked for me. Not sure why anyone would think that RPG for i or any other new name is any better than RPG /free.
That comment reminds me of a web service a company’s RPG developers wrote; it returns all the data on a customer, lets you modify it however you wish and accepts the data and updates the database.
The RTNPARM keyword (7.1) covers the return as value issue.
I don’t see why I should be charged with garbage collection. The OS does this already.
I would rather IBM spend money improving the language instead of a renaming campaign. To me that’s a wasted effort. RPG is a procedural language geared towards solving business problems. You’ll never get OOP developers to accept it. So why do it?