Migration RPG: Another Option for RPG II Shops
May 1, 2006 Timothy Prickett Morgan
I bet I can make you laugh. As you are aware from reading this newsletter, IBM has warned customers that it is planning on removing support for the System/36 RPG II and System/38 RPG III compilers in the next release of i5/OS, which presumably will be called i5/OS V5R5. The plan is to charge customers for a special, unwarranted version of the RPG II and RPG III compilers in cases where they need to make changes to their RPG II and RPG III applications.
Now, if you happen to be a heavy user of RPG II, I suspect a few things about you. First, your company doesn’t like to spend a lot of money on computers. Second, you don’t like change for change’s sake. Third, you have probably been able to make RPG II do all kinds of unnatural things it was never intended to do–and you are quite proud of that, but no one but a few of your peers understand how clever you are. And fourth, you don’t like being told what to do, by IBM or anybody else. In other words, you and I would have a great time shooting the breeze over a beer somewhere.
A few weeks ago, I outlined some of the options that RPG II and RPG III shops have in dealing with the situation. IBM is not taking the runtime environments for RPG II and RPG III applications out of that future i5/OS release, just the ability to change and recompile those applications on that release. Of course, there is a simple way to get around that: Just get an AS/400 or iSeries box and put V5R4 or an earlier release and the older compiler toolset onto it and give that to developers. You tweak your RPG II and RPG III code on this box, compile it, and move it over to the other i5/OS V5R5 box. This is a pain in the neck, of course, especially for shops that have consolidated development and production onto logical partitions on a modern AS/400, iSeries, or System i machine.
There is, of course, another option if your applications are coded in RPG II and you want to keep using RPG II and not move to RPG IV. It’s called Migration RPG, and it is an RPG II compiler for the OpenVMS operating system that is owned by a company called Migration Specialties International.
See? I told you I could make you laugh.
If you think that the System/3X, AS/400, and iSeries platform has been badly treated in the past few decades, you should consider the neglect and ill treatment that the VMS platform received at Digital Equipment, Compaq, and then Hewlett-Packard. To its credit–or more accurately, to help it stay alive–HP did revive a port of the OpenVMS mini-computer operating system to the Itanium processor, and as of January 2005, it was available on entry Integrity servers, which also support HP-UX, Linux, and Windows side-by-side with OpenVMS.
I had known from years gone by that Digital had an RPG II compiler, which it created for the VAX line not just to try to steal away some business from IBM’s System/3X line more than two decades ago, but because way back then, before C and Unix were commercialized, RPG was a language that many platforms supported. IBM, Sperry, and Burroughs mainframes all had RPG compilers, as did a number of other minicomputers. If you wanted to support business applications, you needed COBOL and RPG. (And, I will say this: All the things that made RPG a good language for creating business applications good are still essentially true today. If there was a thing as an interpreted version of RPG and an RPG Virtual Machine, we would not be talking about Java, which is just a souped-up version of C++ that runs on an abstracted, virtualized machine.)
Like most things midrange, Migration RPG has a very long history, which you can read about here. I will give you the short version. Digital had its own internal RPG II compiler, called VAX RPG II, which was an RPG II compiler that was not compatible with IBM’s RPG II. This limited its appeal on the market. A company called Native Software, which was based in Richmond, Virginia, created an IBM-compatible RPG II compiler called Migration RPG in 1982. Bruce Claremont, the owner of Migration Specialties, which is based in Florence, Colorado, was the lead engineer at Native Software, and in 1986, Digital started reselling Migration RPG. In 1989, just after the AS/400 was launched and when System/36 customers were howling about the performance and porting issues of moving RPG II applications to OS/400, Digital bought Native Software and Claremont was tapped to run the center for migration services at Digital. In 1992, that group was shut down in one of the many layoffs Digital had, and Migration RPG was in limbo until Claremont secured the rights to the software in 1995. (This happened, he told me, because a customer sued Digital for not supporting the software, and as part of the settlement, Claremont got the rights to the product.) Claremont has ported the code to run on OpenVMS on Alpha chips, and in 2004 was one of the first people to port an application to the OpenVMS on Integrity platform for HP. All of this means that you can run RPG II applications on a modern OpenVMS server.
Claremont says he doesn’t make a lot of money these days on Migration RPG–he has a half dozen customers on support–and he makes a living on consulting and general support services for the VAX and AlphaServer OpenVMS environments. Claremont says that he hasn’t done any migrations from System/36s or AS/400s for years, but IBM’s moves with the System/36 RPG II compilers might be helping out his business in the long run. History might help him, too. “It was every bit as difficult to get to the AS/400 from the System/36, and I would argue that, for a time, it was easier to get to RPG II running on VMS using our product,” says Claremont. He handled hundreds of migrations in his years at Digital, so he would know.
To do a migration from RPG II to Migration RPG, you have to do three things. First, you have to convert the flat-file database files from EBCDIC data format to ASCII data format. Migration RPG includes a qualifier so this data can still be sorted according to EBCDIC codes after it has been moved to ASCII, which obviously has a different format and would result in different characters being formatted in different orders if sorting was hard-coded. The data can be stored in indexed, direct, and sequential formats. Then you move the RPG II code over. Claremont says that Migration RPG is 99 percent compatible with IBM’s last System/36 RPG II compiler. The big change is converting from the System/36’s OCL to the equivalent job control language on the OpenVMS platform, which is called DCL, or Digital Control Language. Claremont has created a tool that converts OCL to DCL, and it does between 90 and 95 percent of the work; the rest needs to be tweaked by hand. He explained that most control languages are very similar, and that a good programmer can pick it up in no time. The important thing is, when the port is over, RPG II applications are running on an OpenVMS platform. “You get the same green screens, the same look and feel, and they act just like the System/36 applications you have,” says Claremont. “A lot of work went into making sure that was true.”
If you buy a baby Integrity rx1620 server with OpenVMS 8.2, it will probably cost about $10,000, says Claremont, and Migration RPG costs another $3,500 plus $1,600 a year for maintenance. So for around $15,000, you can have the RPG II machine that IBM no longer wants to sell you.
Now, I know what you are thinking. First, how come Claremont hasn’t jumped on the open source bandwagon and created an open source RPG compiler? And how come he hasn’t kept Migration RPG current with RPG III and then RPG IV? Well, first of all, he is only one guy and he has to make a living. Second, Migration RPG was created in the Macro-32 assembly language for the old 32-bit VAX platforms. “I never did bother to convert Migration RPG to C because I saw ASNA, California Software, and others in the market, and I just didn’t think there was enough room in the market for me,” Claremont explains.
The question now is, are there enough people out there with the smarts and desire to convert the Migration RPG product to C++, give it RPG IV functionality or maybe even a virtualized environment like Java has, and help Claremont get into some real trouble? If you are interested, bug him. He finds the idea very amusing, but he can’t do it alone.
System/3X RPG Compiler:
OpenVMS on Integrity: