When I do onsite training, I get a lot of questions regarding the differences between RPG III, RPG/400, ILE RPG, ILE, and RPG IV. So I thought I would provide everyone with the answers to this question.
RPG III is the version of the RPG language that first appeared with the IBM System/38 computer in 1981. It succeeded the old RPG II language that was popular on the IBM System/3x product line. The RPG III compiler lives on to this day in AS/400 and iSeries as the RPG/400 compiler. The so-called RPG38 source type you see is simply a control mechanism. It causes the RPG III source to be syntax-checked to insure that is does not contain any non-System/38 enhancements. After all, RPG III was enhanced on the AS/400 several times.
When AS/400 was announced, IBM changed the names of most of its products to XYZ/400. This identified the product with the AS/400, differentiating it from the System/38 or System/36 version of the product. Most software providers mimicked this scheme. The RPG/400 compiler package included (at the time) three different compilers, supporting three different programming languages:
- A System/38-compatible RPG III compiler
- A System/36-compatible RPG II compiler
- An AS/400-compatible RPG III compiler
This started most of the confusion. There were even employee/employer suits that claimed RPG/400 was a different programming language than RPG III.
This is one that continues to cause confusion to this day, and 90% of it is caused by IBM. The other 10% is caused by the trade press, who tends to not understand it. Here's what it is.
Back in the early to mid-1990s, IBM Canada began development of RPG IV. At the time, IBM Rochester started working on the Integrated Language Environment (ILE). All new compilers, it was mandated, were to target this new program runtime environment. So IBM developers started referring to this new, yet unnamed compiler as the "ILE RPG compiler."
Then, when IBM was going to announce this new language, Jack Vanos, the manager of the compiler team at IBM at the time, made the decision that the programming language of this new ILE RPG compiler would be named "RPG IV." Unfortunately, "ILE RPG" has continued to confuse programmers, managers, and the press to this day.
Today, the IBM ILE RPG/400 compiler is called something like "IBM WebSphere Development Studio ILE RPG/400." That package includes as many as seven or eight different compilers, including RPG II, two versions of RPG III, and, of course, RPG IV.
As mentioned, ILE is a program runtime environment that is now considered the native runtime mode for OS/400. When it was shipped with OS/400 V2R3, "ILE" was named too similarly to the poorly performing S36E. So its usefulness was questioned, and rightly so. After all, as it turned out, ILE was built for the new PowerPC platform, which was not available at the time.
The RPG IV language--and there is only one version--is the enhanced version of RPG that provides support for procedures, built-in functions, free-format expressions, definition specifications, and a slew of other enhancements. It is also the language definition on which all new iSeries development should be based.
RPG IV closely integrates with the ILE, and perhaps this is where the confusion comes in. RPG IV can be used to create service programs and modules; the compiler and RPG IV syntax support these ILE constructs. In addition, since ILE allows programs to be run in activation groups, RPG IV programs (along with CL, C, and COBOL programs) may be loaded in runtime resource partitions" referred to as activation groups. Activation groups don't really have anything to do with RPG IV; they are an ILE concept, and they support the ability to isolate overrides, file opens, and memory allocations within a single job.
I hope this clears up some of the confusion. If not, don't worry about it. Even the people who write the IBM publications seem to be a bit confused.