This page describes product changes you must be aware of when upgrading from version 2.0x to version 2.1x of Genero BDL.
Warning: This is an incremental upgrade guide that covers only topics related to a specific version of Genero. Also check previous upgrade guides if you migrate from an earlier version.
Summary:
Some 2.1x bug fixes needed modifications inside the runtime system (fglrun) and front-ends (gdc, gwc). Therefore, if you upgrade the runtime system to the latest 2.1x version, we strongly recommend upgrading your workstations with the latest front-end version 2.1x as well.
As a general rule, when upgrading to a major or minor version like 2.00 to 2.10 or 2.10 to 2.11, you must recompile all your .4gl modules and .per form files. Re-compilation is not required when upgrading to a new maintenance release like 2.10.01 to 2.10.02.
See also Installation and Setup.
Warning: This migration issue is obsolete if you migrate to 2.2x.
In prior versions, firstrow and lastrow actions were handled by the front-ends as local actions. The firstrow and lastrow actions had the Home / End accelerators defined in the default.4ad file. But these accelerators conflict with the Home/End field editor accelerators if the controller is an INPUT ARRAY. The conflict was handled by the front-ends. If the current dialog was a DISPLAY ARRAY, the front-end used Home/End as navigation accelerators to move to the first or last row; when the current dialog was an INPUT ARRAY, the front-end used Home/End as local text editor shortcuts to move to the beginning or to the end of the text in the current field.
Version 2.10 now defines the firstrow and lastrow actions as server-side predefined actions when using DISPLAY ARRAY or INPUT ARRAY. The default accelerators in the FGLDIR/lib/defaults.4ad Action Defaults file are now Control-Home + Home for firstrow and Control-End + End for lastrow. If the current widget is a text editor, the editor or navigation accelerators (like Home and End) take precedence over the action accelerators. This way, during an INPUT ARRAY, Home and End will be used as editor accelerators.
If you have defined your own default.4ad file, you have probably kept the original defaults for firstrow and lastrow actions as the accelerators Home and End. In this case, only Home and End accelerators are defined for firstrow and lastrow actions. As a result, the user cannot move to the first row or last row with Control-Home or Control-End during INPUT ARRAY. To solve this problem, define the same accelerators for firstrow and lastrow actions as in FGLDIR/lib/default.4ad.
You can use the Style "localAccelerators" to define how the field editor must behave. Set to "yes" (by default), the local accelerators will be used (for instance, the Home key will move the cursor to the beginning of the field). Set to "no", the action accelerators will have higher priority (The Home key will change the current row to the first row).
(This topic is related to bug #7707)
Normally, an XML file should start with a "Prolog" or "XML Declaration" defining the XML version and character set used by the file:
<?xml version='1.0' encoding='ISO-8859-1' ?> <root ...> ... </root>
Starting with Genero version 2.10.05, the XML Declaration is now added automatically when writing XML files. Before 2.10.05, you could workaround this by writing this header yourself as a processing instruction, but this solution was subject to mistakes: The non-ASCII characters written to the XML file must match the encoding specification in the XML Declaration.
To avoid invalid character set definitions, the Genero BDL built-in classes now add the XML Declaration with the encoding attribute defined according to the current locale used by the runtime system. The value written in the encoding attribute is defined by the charmap.alias file.
Before release 2.10, the 42m p-code files were also stamped with a compilation timestamp. Since 2.10, this timestamp information is no longer written to p-code files by default, allowing 42m file comparison, checksum creation, or storage of 42m file in versioning tools; The same p-code data is now generated after successive compilations. However, since version 2.11.05, if you need timestamp information in 42m files, you can use the --timestamp option of fglcomp:
$ fglcomp --timestamp mymodule.4gl
$ fglrun -b mymodule.42m
2008-12-24 11:22:33 2.11.05-1169.84 /home/devel/stores/mymodule.4gl 15