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 behaviour between Querix and Informix. There are, however, still some minor differences in the behaviour 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 be 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 accomodate 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 behaviour 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 behavioural differences if your reports relies upon the FIRST PAGE HEADER to initialize variables or cursors.
It is possible to emulate the Informix behaviour by passing the flag ‘-IR’ to fglc during compilation.