Informix Genero: A Way to Modernize Informix 4GL Applications

Bookmark and Share

Informix Genero, a new IBM offering developed under partnership with Four Js Development Tools, is a logical enhancement to the Informix 4GL language and environment that offers extensive capabilities for developing modern web and desktop GUI applications, reports, and web services.

Looking for a quick, cost-effective alternative to rewriting IBM Informix 4GL applications? With IBM Informix Genero, users can recompile 4GL applications and run them as GUI and web applications while retaining the business logic. Converted applications are ready to deploy on various platforms, in most cases with no code modification and very little testing. It allows users to leverage their skill base to update "green screen" applications and enhance the graphical interface over time, all while the applications remains available.

ASuperset of Informix 4GL

Informix Genero is a superset of Informix 4GL. Because virtually all 4GL syntax and semantics exist in Informix Genero, the Informix Genero compiler can recompile the 4GL source code. In certain situations, the Genero compiler is stricter than the 4GL compiler, but any changes required for the Genero compiler are also valid for the 4GL compiler. Once the 4GL source code is recompiled with the Genero compiler, it can then be run using the various Informix Genero runtime system options.  Because the 4GL source code remains unchanged, the testing effort required to move modernized applications into production is greatly reduced.

After recompilation, the resulting GUI or web application can take advantage of rich user-interface components while leveraging the underlying 4GL business logic. And, because the converted application is still fully functional and usable after complication, pull-down menus, toolbars, real dialog boxes, and other commonly used GUI controls can be phased in over time, and the new application can be immediately available to the user community. Users can interact with the application using the same keyboard-based controls, function keys, default menus, and other basic controls that were defined for 4GL.

Modernizing Versus Converting to Java

Let's consider an example of a typical Informix 4GL application suite consisting of

  • 242 separately compiled 4GL programs
  • 1522 4GL source-code modules
  • 596 screens (4GL forms)
  • 575 KLOC of 4GL source code

This application provides data-entry and data-maintenance operations through a character-based interface, and has some batch-updating and reporting functions.  The application contains 596 screens, of which 250 (~40%) are used for internal data maintenance and housekeeping operations. The remaining 346 screens are available to the user for data entry, but only about 100 of those screens are used frequently.

Converting the original application to Java would be an "all or nothing approach," at least with respect to leveraging the original 4GL source code. The entire application would have to be rewritten.  Assuming approximately 160 lines of code per day (based on the Gartner Group1 estimates for code modernization), the coding effort for this project could be substantial: over 160 person months. Assuming that new code written in Java has an error rate of approximatley 61 defects per 1000 lines of code2, additional effort would need to be spent debugging and fixing potentially as many as 35K errors. Also, because the new application would be entirely new Java logic, a complete testing and certification process would need to be performed, as with any other new application.

Modernizing the original application with Informix Genero would reuse the 4GL source code.  The 4GL source code would be recompiled with the Informix Genero compiler so that the application could run on various types of display clients.  The compiler path in the build file could easily be changed to compile the Genero applications in the same build environment.  There would likely be a few minor differences between the 4GL and Genero compilers and there would be changes needed for dealing with external C code.  After any required changes would be made, the Genero application would be able to run in text mode, just like the original Informix 4GL application.

Configuring the Informix Genero Desktop Client would allow the Genero application to be rendered in GUI mode on Windows, Linux, and Mac operating systems. Creating a small XML configuration file for the Informix Genero Application Server would allow the same application to be rendered in web browsers. Testing the application could begin immediately. Because this application would be using the existing 4GL syntax and semantics, the functional and verification testing would require substantially less effort than for a new Java-based application.

The effort to enhance this application would need to focus only on the graphical user interface of the 100 screens that are -used frequently for data entry.  The underlying logic could be left largely unchanged.  The other 246 screens that are presented to the user could be deployed in a phased approach, perhaps 50 screens a month over a five-month period.  The remaining 250 screens (and the underlying logic) could be left unchanged because they would be used infrequently by internal staff.  Less effort would be spent on testing and the certification for the Informix Genero project than for the Java project.

The Bottom Line

Converting the Informix 4GL application to Java would take significant time and be expensive.  The compatibility between Informix Genero and Informix 4GL saves time and money by leveraging the underlying business logic of the existing application.  Informix Genero minimizes initial costs and efforts, and allows the graphical user interface to be enhanced over time while the application remains available to the user community.

1Gartner Group, "Forecasting the Worldwide IT Services Industry: 1999"

2Geoffrey Phipps, "Comparing observed bug and productivity rates for Java and C++," Software-Practice & Experience, v.29(4), p.345-358, 1999

About the author:

Shawn Moe is a software architect at IBM, focusing on UI modernization, SQL compatibility, application development, and tooling support for the Informix database servers. For more information, go to