BDL 2.20 new features

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

Important: 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.20 upgrade guide.

Table 1. Core language
Overview Reference
The Java Interface allows your programs to use the Java library. See Java Interface.
New TINYINT, BIGINT and BOOLEAN data types. See TINYINT, BIGINT, BOOLEAN.
Private functions: It is now possible to hide a function (or report) to the other modules with the new PRIVATE keyword. See Understanding functions.
Automatic source documentation generator. See Source documentation.
The fglcomp compiler has been extended with a new option (--timestamp) to write the compilation timestamp to the generated 42m p-code module. If present, the timestamp will be printed when using fglrun -b. Use compilation timestamps only if really needed; every new compiled .42m module will be different, even if the source code has not changed. See fglcomp.
The FGLRESOURCEPATH environment variable to define search paths for program resource files like forms. See FGLRESOURCEPATH.
New precision math built-in functions for DECIMAL data. See fgl_decimal_truncate(), fgl_decimal_sqrt(), fgl_decimal_exp(), fgl_decimal_logn(), fgl_decimal_power().
Automatic Code Completion with VIM: If you have Vim 7 installed, you can now use .per and .4gl code completion. See Source code edition.
Table 2. Reports
Overview Reference
The START REPORT instruction now allows to specify the XML SAX Document Handler to process XML output with the TO XML HANDLER clause. See TO XML HANDLER syntax.
Report definition file generation with fglcomp --build-rdd option. See See fglcomp.
Table 3. User interface
Overview Reference
Support for typical Tree-View widgets with the new TREE container. See Tree views.
The traditional user interface mode: To simplify migration from Informix® 4GL or Four Js BDS, you can now run applications in traditional mode to render windows as simple boxes, as in the WTK front-end. See Graphical mode with Traditional Display.
Phantom form fields can be used to define the screen-record or screen-array, but are not used in the LAYOUT section of the form. Phantom fields are especially useful when implementing a TREE container. See Phantom fields.
Multi-row selection allows end users to highlight several rows in a list of records. See Syntax of DISPLAY ARRAY instruction.
Built-in sort works now in INPUT ARRAY. See List ordering.
New contextMenu action default attribute to allow you to specify whether the menu option is visible in the default context menu. The default value is "yes" - the option is visible whenever the action is visible. See Action defaults files.
New integratedSearch presentation style attribute for TEXTEDIT fields to enable text search. See TextEdit style attributes.
FOLDER elements can now use a "position" style attribute to define the position (top, left, right, bottom) of folder tabs. See Folder style attributes.
BUTTON form items get a new "buttonType" attribute to define the rendering of the button. See Button style attributes.
MENU object created with the popup option can be placed with the "position" style attribute. See Menu style attributes.
Window Menu and Action panel decoration can be customized using the new "ringMenuDecoration", "actionPanelDecoration" style attributes. See Window style attributes: Ring Menu, Window style attributes: Action Panel.
The new "tabbedContainer", "tabbedContainerCloseMethod" style attributes can be used to turn on and customize tabbed WCI containers. See Window style attributes: Basics.
TABLE elements can use the new "tableType" attribute to render data in different ways. The new "resizeFillsEmptySpace" attribute can be used to define how the last column is resized when the table is resized. See Table style attributes.
All items with an IMAGE attribute can use the new "imageCache" attribute to define if the picture can be cached locally on the front-end. Starting with GDC 3.20, this style attribute has been desupported. See Presentation style changes in BDL 3.20.
New Front-End Functions "getWindowId", "feInfo", "launchURL". See Standard front calls.
Front-End protocol compression can now be disabled with a new FGLPROFILE entry. This is especially useful in fast networks to save processor time. See GUI protocol compression.
New built-in functions are now available to control the part of the text that is selected in the current field. See fgl_dialog_getselectionend(), fgl_dialog_setselection().
New IMAGE attribute in form LAYOUT element: The LAYOUT section of a form definition can now use the IMAGE attribute to define the icon to be used for the parent Window. This is especially useful in a Container-based application, to distinguish child programs inside the WCI container. See LAYOUT section.
Use the new INFIELD clause in ON ACTION interactive block to automatically enable/disable the action when entering/leaving the specified field. See Field-specific actions (INFIELD clause).
Getting the current active dialog with ui.Dialog.getCurrent(). See ui.Dialog.getCurrent.
Table 4. SQL databases
Overview Reference
New database drivers. List of new database drivers:
MySQL Driver supports TEXT/BYTE data types. See Oracle MySQL / MariaDB.
To work around conflicts with the Informix database path specification in DBPATH, use the FGLRESOURCEPATH environment variable. See FGLRESOURCEPATH.
Database user authentication callback function can be used to specify a database user and password when the DATABASE instruction cannot be replaced by CONNECT TO. See User authentication callback function.
FGLSQLDEBUG output is improved to display and SQL command header with SQL command name and source/line information before executing the underlying ODI driver code. If the driver code crashes or stops the process with an assertion, you can easily identify the last SQL instruction that was executed. See FGLSQLDEBUG.
Table 5. Web Services
Overview Reference
The Genero Web Services XML Library has been improved to support the XML-Signature and XML-Encryption specifications defined by the W3C (also known as XML-Security).

The library enables BDL applications to handle public, private, symmetric or hmac keys and X509 certificates in order to sign XML documents or document fragments, and verify a XML signature against a certificate or key. It also enables the applications to encrypt XML nodes using symmetric keys, and decrypt them back using DOM manipulation. Combined with the COM library, any BDL application can now exchange any XML documents over the Internet in a completely secured manner.

The library provides classes for:
  • Manipulating cryptography keys
  • Handling X509 certificates for identification
  • Encrypting and decrypting XML documents, document fragments, or symmetric keys
  • Signing XML documents, document fragments, or any kind of data, and validating them againstXML signatures
See XML security classes.
The Genero Web Services XML library provides APIs to encrypt and decrypt strings with symmetric or RSA public/private keys. These APIs can be used to encrypt/decrypt passwords directly in BDL applications. See The Encryption class and fglpass.
The Genero Web Services provides support for the new BOOLEAN, TINYINT and BIGINT data types.

You can use these data types when writing your web service or to customize your BDL RECORDs for XML serialization. The fglwsdl tool has been enhanced to generate these new data types automatically when encountered in WSDL files or XML schemas.

Note: For compatibility issues, the fglwsdl tool allows code generation without these new data types by using the option '-legacyTypes'.
See Attributes to customize XML serialization and fglwsdl.