Querix 4GL differences with Informix 4GL & Dynamic 4GL (BDS)


The Querix 4GL provides a number of compatibility modes to bridge some of the differences in behavior between Querix and Informix. There are, however, still some minor differences in the behavior between the two products.

Compilation Differences

Channel Functions

Dynamic 4GL requires that a 4GL module use the ‘USE CHANNEL’ directive before any of the channel functions can be used within that 4GL module. ‘Hydra4GL’ has no such requirement, and the compiler is likely to generate an error on reaching the ‘USE CHANNEL’ directive. It is recommended that this directive is commented from any code.

fgl_4js() function

While using this function will not yield any errors in ‘Hydra4GL’, it is not actually required to initiate any of the Querix GUI interfaces.

Runtime Differences

Resource Files and Media

Dynamic 4GL tends to expect all referenced image files and media to be located under the $FGLDIR directory structure. This typically means that all such files have to be available to the client process on the client PC. The ‘Hydra4GL’ thin clients will typically attempt to download such files from the application server and cache a local copy for future use.

BMP_FIELD widget

In dynamic 4GL, the bmp_field widget will stretch the field button to accommodate the image file. The Querix thin clients will resize the image file to fit within the allocated field space.

Reporting Differences

Order of Execution

A subtle difference exists in the default behavior of Querix to Informix 4GL. Under Informix 4GL, the FIRST PAGE HEADER formatting section of a report is executed upon the first OUTPUT to the report.
Under Querix ‘Hydra4GL’, the FIRST PAGE HEADER is executed upon the first PRINT statement in the ON EVERY ROW section.
This can cause some differences in the behavior if your reports rely upon the FIRST PAGE HEADER to initialize variables or cursors.
It is possible to emulate the Informix behavior by passing the flag ‘-IR’ to fglc during compilation.