Your migration review – the BDS / Genero check-list
Are you ready for Genero?
‘C’ functions
If ‘C’ functions are used in the I4GL application, they will need to be
updated. ‘C’ functions that interact with the user will need to be rewritten
in BDL. In the same manner, ‘C’ functions using libcurses features cannot
be used. They will need to be rewritten using BDL. Other functions can
be maintained in the first migration step. By using ‘C’ functions in an
application, the portability of this application is reduced. It is recommended
to reduce calls to ‘C’ functions to their strict minimum.
FGL_LASTKEY / FGL_KEYVAL / FGL_GETKEY functions
FGL_LASTKEY, FGL_KEYVAL and FGL_GETKEY functions are supported for compatibility
reasons and can be used in BDL applications. It is highly recommended
to review parts of code that call these functions.
Using INPUT ARRAY to display arrays
In many I4GL applications, developers have used INPUT ARRAY statements
with hidden fields to work around DISPLAY ARRAY statement defects. By
using such workarounds, developers were forced to write a lot of unproductive
code and emulate all permutations of end-users actions, hiding the INPUT
ARRAY features to make it resemble a DISPLAY ARRAY. Four J’s has corrected
and enhanced the DISPLAY ARRAY statement so that workarounds like this
are no longer needed. To get the right graphical output, any such workarounds
will need to be reworked.
Menus
I4GL menus may look good in ASCII mode but will look less attractive in
graphical mode. Most of the time, menu functions need to be rewritten
for this reason. This is purely an aesthetic consideration and if acceptable
as such, needs no particular treatment.
FUNCTION definitions
The I4GL compiler allows the developer to define a function with the same
name several times. Depending on the I4GL version, the first or the last
FUNCTION definition in the stack will be used. The result cannot be guaranteed.
Four J’s imposes a stricter regime and does not allow loose coding of
this nature. The compiler generates an error when a FUNCTION is defined
more than once.
ERROR(-6203):Module : The function has already
been defined in module
FUNCTION arguments definitions
The I4GL compiler does not take into consideration how many arguments
are passed to a function and how many returning arguments are defined.
Four J’s linker generates an error.
ERROR(-6200):Module 'Module Name': The function .(,)
will be called as (,). External file management
I4GL does not include external file management commands. To work around
this defect, C functions are used. The BDL language now includes channel
commands that can be used to read, write or append data from/to external
files. ‘C’ functions can be maintained in the first migration step but
the update of these ‘C’ functions to BDL functions need to be scheduled.
P-Code / C-Code
I4GL allows developers to choose between generating P-Code and C-Code.
Four J’s compilers generate P-code only and performance testing proves
it to provide equivalent performance to I4GL C-code.
Informix only
With Four J’s products, the database engine is no longer restricted to
Informix. If you plan to run your application against other database engines,
then be sure to verify against Informix specific SQL statements and functions.
FORM files (.per files)
To enable the support of heterogeneous client devices from a single source
code, FORM file logic will need to be revisited. I4GL FORM formats are
still supported, but they have limited graphic capabilities. Not every
FORM has to be revisited though. Choose the most important data entry
forms for ergonomic rework first. Less significant FORM files can be compiled
‘as is’ to save time.
FGL_GETKEY
The FGL_GETKEY function is no longer supported in Genero. Code segments
calling this function need to be rewritten in a more abstract way.
DISPLAY … AT … statement
The DISPLAY AT statement displays a variable at a given position. This
given position is defined on a character-by-character grid. As Genero
forms are no longer defined on a character-by-character mode, this command
can no longer be used. The command is still supported for compatibility
reasons but the position on the display is no longer ensured. DISPLAY
AT commands must be replaced by other commands like DISPLAY TO.
ON KEY statements / MENU COMMAND KEY statements
The ON KEY statement defines a shortcut key in a dialog. Genero introduces
the MVC (Model/View/Controller) concept in 4GL. The ON KEY command is
still supported and can be kept during the first phase of the migration.
But the ON KEY and the COMMAND KEY must be replaced by the ON ACTION statement.
Graphical Menus
‘Beauty is in the eye of the beholder’ as the saying goes. Genero offers
new ways of displaying menus and by using style sheets; changing the look
of a menu has never been easier.
- 8005 Error number
The -8005 error number is displayed at compilation time when features
that are no longer supported (deprecated) are used. This tip helps you
to find out the last deprecated features that are still in the code after
the migration.