BDL 2.30 new features

Features added in 2.30 releases of the Genero Business Development Language.


This page covers only those new features introduced with the Genero BDL version specified in the page title. Check prior new features pages if you migrate from an earlier version. Make sure to also read the upgrade guide corresponding to this Genero version.

Corresponding upgrade guide: BDL 2.30 upgrade guide.

Prior new features guide: BDL 2.21 new features.

Table 1. Core language
Overview Reference
Genero is now available on Mac OS X™. You need at least Mac OS X version 10.5. The Operating System code for Mac OS X 10.5 64-bit is m64x105. See Supported operating systems.
Platform identifier is now displayed when using the -V option with command-line tools. See fglrun.
The FGLPROFILE environment variable now accepts multiple file specification with an operating-system-specific path separator. See The FGLPROFILE file(s).
The LOAD, UNLOAD and base.Channel class support the "CSV" delimiter specification to read/write files in Comma Separated Value format. See LOAD, UNLOAD and The Channel class.
Version 2.30.04 supports now the fglrun.arrayIgnoreRangeError entry which can be set to true to force the runtime system to return the first element of an array when the array index is out of bounds. See Arrays.
The version 2.30.04 introduces the new fglrun.mapAnyErrorToError FGLPROFILE entry. This configuration parameter can be set to true to map the default action of the WHENEVER ANY ERROR exceptions to the action defined for the WHENEVER ERROR exception type. See Exceptions.
Table 2. User interface
Overview Reference
Drag & Drop support in DISPLAY ARRAY for tables or tree views. See The DragDrop class
A new form item type called WEBCOMPONENT is provided to integrate external Java-Script-based widgets in your forms. See WEBCOMPONENT item type.

New ui.Form class method to make a specific form field visible, showing the parent containers automatically.

This method can also be used to bring a given folder page to the front, even if the field is not active (i.e. not driven by a dialog).

See ui.Form.ensureFieldVisible and ui.Form.ensureElementVisible.
The ERROR and MESSAGE instructions get an additional STYLE attribute, to reference a presentation style and define the rendering with font, color, and position. See MESSAGE.
New style for TOOLBAR and TOPMENU elements. See Front-End documentation for more details about possible decoration attributes. See Toolbars and Topmenus.

As with COMBOBOX, the items of a RADIOGROUP are now filled with the values of the INCLUDE attribute, if specified.

See RADIOGROUP item definition.
Identify the last clicked CANVAS item with the drawGetClickedItemId() function of fgldraw.4gl. See Example 1: Simple canvas.
The FIELD_TOUCHED() operator and ui.Dialog.getFieldTouched() method accept now a simple star as parameter, in order to check all fields used by the dialog. See FIELD_TOUCHED() and ui.Dialog.getFieldTouched.
The JUSTIFY attribute is now supported for all form item types, in order to let you specify both the data justification in the field/cell and the alignment of the table column header. See JUSTIFY attribute.
The ui.Dialog.setFieldActive() method takes now a list of fields as parameter, with the "dot-asterisk" notation, like the setFieldTouched() method. See ui.Dialog.setFieldActive.

This new feature is part of the fix for bug #18224.

When modifying a tree during the dialog execution (for example, when implementing dynamic trees with ON EXPAND / ON COLLAPSE triggers), if you use the ui.Dialog.insertRow(), ui.Dialog.deleteRow() or ui.Dialog.deleteAllRows() methods to modify the node list, the internal tree structure was corrupted. The program array can be safely modified directly with array methods, but multi-range selection flags and cell attributes are not synchronized when doing this. Starting with 2.30.02, you can now use the ui.Dialog.insertNode(), ui.Dialog.appendNode() and ui.Dialog.deleteNode() methods to manipulate the node list and get additional data like row selection flags and cell attributes synchronized.

See The Dialog class.
Upgrade notes for presentations styles. See Presentation styles changes.
Table 3. SQL databases
Overview Reference
New database drivers List of new database drivers:
Informix® SMALLFLOAT and FLOAT can now be stored in Oracle native BINARY_FLOAT / BINARY_DOUBLE types. See Oracle Database.
The LOAD, UNLOAD and base.Channel class support the "CSV" delimiter specification to read/write files in Comma Separated Value format. See LOAD, UNLOAD and The Channel class.
Use the fgl_db_driver_type() built-in function to identify the target database type. See fgl_db_driver_type().
In order to identify the reason why a database driver cannot be loaded, when setting FGLSQLDEBUG you now get an additional debug message that contains the operating system error message (dlerror()) See FGLSQLDEBUG.

The fgldbsch tool can now extract database schema from SQLite. However, pay attention to the data types used in SQLite (V 3.6): This database supports some standard type names in the SQL syntax but in reality the types used to store data are very limited. For example, a DATE will be stored as an integer or string (i.e. there is no native DATE type). See SQLite documentation for more details.

The fgldbsch tool will extract the schema based on the original type names used to create the table.

See fgldbsch.