An interesting thread has received a lot of attention recently on the rpg400-l list with the subject “RPGIII to get a facelift?” (see here to browse it in the archives). Among the many posts in this thread is one by Scott Klement that makes the point that in order to get people to move from RPG III (or even RPG II!) to RPG IV IBM needs to provide user visible features that are only accessible with RPG IV. The users referred to here are not programmers or managers, but data entry people or other non-techie types. Scott gives a few examples such as graphics capabilities or XML features. While true, this idea is only half right. In order to get people to move to RPG IV features must be provided that are only feasible in RPG IV, as Scott suggests. However, it is up to the programmers and developers, not just IBM, to provide such features.
What is a programming language, anyway? More or less, it provides instructions and manipulates memory. What distinguishes one language from another is how it provides the syntax and methods for doing so. With RPG IV we have a language that has great flexibility to accomplish the two main things a language does as stated above: we have a number of ways to manipulate memory and a number of ways to provide instructions. In fact, the only thing we can’t do is provide our own BIFs. And this is what IBM needs to change. We should be able to write:
This change needs to come from IBM.
But this isn’t the kind of feature Scott was talking about. Nor is it the kind of thing that an end user is going to see. So where do these features come from? The answer is us. IBM’s obligation is to provide the language with flexibility to accomplish the two tasks of providing instructions and manipulating memory. We are under obligation to do the rest.
Let’s look at an example. Enhanced graphics is certainly something the users would see. As is HTML integration. Perhaps most interesting is the idea of combining both. Imagine a 5250 screen with embedded HTML in it. That HTML could be something as simple as a GIF or as complex as a web application. But my point is that the HTML could be directly imbedded in the 5250 data stream. 5250 emulators such as tn5250 could embed Gecko (the HTML renderer in Mozilla) directly into the emulator to handle such HTML streams. A special attribute in the 5250 data stream would indicate that data following it is HTML. Another special attribute (or maybe the same one) would indicate the end of the HTML stream. Then a simple EXFMT would send the combined 5250 and HTML data to the 5250 client and voila! a feature the user can easily see and benefit from.
What is required to make such a feature? First, a 5250 client that can handle such data. That is certainly doable by us, the developers. Many projects exist that embed Gecko. Most of those projects are not backed by some large company. It is certainly reasonable that the iSeries community of developers could add such capability to a 5250 emulator.
Second, we need to get the HTML data into the 5250 stream. IBM could do this and add it to DDS and EXFMT. But can only IBM do it? It seems reasonable that an independent developer could write a function that when called writes HTML data to the 5250 data stream as described. This may involve some serious MI coding and a lot of work. But it could be done. Package it up and make it available to everyone. Suddenly, RPG IV has something that users want that they can’t get with RPG III.
This wouldn’t be the first time that great innovations and improvements originated outside of the company that produced the platform. Much of the UNIX world exists because people outside of AT&T starting adding features they thought were useful. Indeed, without outside contribution UNIX would have probably ended up being a niche operating system forever forgotten in the research lab. But regular (though talented) folks got involved and today we have Sun Microsystems, Cisco, BSD (in all its many flavors), Linux, and Mac OS X.
Let’s not wait for IBM (or anyone else) to do things for us. If we can reasonably do something ourselves then we should. There are many great features that users would want that require the new capabilities in RPG IV. Let’s charge ahead and create them!