BDL 3.20 new features

Features added in 3.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 3.20 upgrade guide.

Table 1. Core language
Overview Reference
Support for circular dependency of modules with IMPORT FGL. See Circular dependency with IMPORT FGL.
fglcomp can now process several .4gl files on the command line. See Compiling several .4gl sources in a single command, fglcomp.
Method declaration, to define functions acting on a user-defined type. See Methods, FUNCTION syntax.
INTERFACE structure, to define a group of methods for a type. See Interfaces.
Passing records by reference (INOUT). See Passing records by reference with INOUT.
Variable initializers: The DEFINE instruction supports a clause to initialize the variable. See Variable initializers, DEFINE.
Named parameters in function calls: CALL func(p1:value). See Calling functions, CALL.
Function attributes (for RESTful Web Services). A FUNCTION definition can specify function attributes, parameter attributes and return values attributes. See Function attributes, FUNCTION definitions.
New STRING and base.StringBuffer methods to remove all kinds of whitespace characters in a string. See the *WhiteSpace methods in STRING data type methods and base.StringBuffer methods.
FUNCTION definition syntax allows the RETURNS () clause, to specify an empty return list and enforce compilation verifications to avoid RETURN instruction misusage. See FUNCTION syntax, Returning values.
Arrays can be assigned without the .* notation. See Dynamic array assignment with .* notation.
Records can be assigned without the .* notation. See Record copy with .* notation.
Table 2. User interface
Overview Reference
The new gui.rendering FGLPROFILE entry, to enable Universal Rendering. See Graphical mode with Universal Rendering.
FGLGBCDIR environment variable, to define the directory of the GBC component to be used for Universal Rendering. See FGLGBCDIR, Graphical mode with Universal Rendering.
KEYBOARDHINT form attribute allows now the URL value to define an EDIT field for URL input. See KEYBOARDHINT attribute.
GBC supports the "chrome" value for actionPanelPosition, ringMenuPosition and toolBarPosition window style attributes. See Action views rendering in GBC chrome bar.
ui.Interface class methods to identify the Universal Rendering client and version. See Graphical mode with Universal Rendering, ui.Interface.getUniversalClientName, ui.Interface.getUniversalClientVersion.
Form elements of type GROUP can be defined as collapsible with new style attributes (collapsible / initiallyCollapsed). See Collapsible groups (with GBC).
Collapsible groups and folders can be configured to display the collapser icon at a specific position with the collapserPosition style attribute. See folder.collapserPosition (with GBC), Collapsible groups (with GBC).
ON FILL BUFFER trigger for display array dynamic dialog. See ui.Dialog.addTrigger.
Table 3. SQL databases:
Overview Reference
Support for Oracle® 18c with the dbmora_18 driver. See Database drivers changes.
Using Oracle 18c private temporary tables to emulate Informix® temporary tables. See Using the private temporary table emulation.
Support for PostgreSQL 11 with the dbmpgs_9 driver. See Database drivers changes.
New dbmmys_5_6 driver for MySQL 5.6 as replacement of dbmmys_5_5 no longer available because of MySQL 5.5 desupport. See Database drivers changes.
New ifxemul.datatype.serial.sqlerrd2 FGPROFILE entry to disable automatic serial retrieval for SQLCA.SQLERRD[2]. See FGLPROFILE entries for core language, Disabling automatic serial retrieval for SQLCA.SQLERRD[2].
Utility function db_get_last_serial() to retrieve the last generated serial, mandatory for BIGINT incremented columns. See db_get_last_serial().
FGLPROFILE entry dbi.database.dbname.pgs.schema to define the schema search path for PostgreSQL. See PostgreSQL specific FGLPROFILE parameters.
FGLSQLDEBUG ouput enhancement to identify when SQL INTERRUPT ON/OFF is used. See note in Performances with SQL interruption.
Support for IBM® Informix trusted connections, with the new TRUSTED keyword for CONNECT TO, and the new SET SESSION AUTHORIZATION statement. See CONNECT TO, SET SESSION AUTHORIZATION.
Table 4. Tools
Overview Reference
Source code formatting tool: fglcomp --format. See Source code beautifier.
Qualifying imported symbols: fglcomp --qualify-imports. See Qualifying imports.
Use lowercase keywords in VIM with fgl_lowercase_keywords=1. See Configure VIM for Genero BDL.
Table 5. Web Services
Overview Reference
The Genero Web Service engine has been enhanced with a mechanism to provide a high level REST web service. You can implement REST Web services using function attributes (identified with WS* prefix) that you specify in ATTRIBUTES() clauses of functions.
  • FGLGWS 3.20.05 introduces the WSAttachment attribute for handling file attachments.
See:
The fglrestful tool takes an OpenAPI specification file (JSON format) and generates the client stub to interact with the REST service. See fglrestful
com.WebServiceEngine option server_restdefaultformat added to define runtime support for MIME types in REST operations. See WebServiceEngine options
Method added to publish high-level RESTful Web services in the GWS engine. See com.WebServiceEngine.RegisterRestService
Method added to provide error management in the high-level RESTful Web service. See com.WebServiceEngine.SetRestError
Empty HTTP POST and PUT requests. See Support for empty HTTP POST or PUT requests.
The FGLPROFILE entry http.global.request.date can be set to true, in order to force sending HTTP Date header for GET, HEAD and DELETE requests. See Control HTTP Date header for GET, HEAD and DELETE requests.
The com.HTTPRequest.setAuthentication has an enhancement to support the NTLM authentication protocol of Windows® server that requires the connection to be kept open. See com.HTTPRequest.setAuthentication or com.HTTPRequest.setKeepConnection
Table 6. Mobile apps (GMA 1.40 and GMI 1.40)
Overview Reference
gmabuildtool option -bgr / --build-gbc-runtime, to define the GBC to be used to build the app. See Building Android apps with Genero.
gmibuildtool option --gbc, to define the GBC to be used to build the app. See Building iOS apps with Genero.
GMA supports now the alignment style attribute for BUTTON. See Button.alignment style attribute, Button style attributes.
Cordova plugin wrapper libraries now available on the FOURJS Cordova Github. See Cordova plugins for GMA, Cordova plugins for GMI.
New Cordova plugin front calls to get plugin information. See New Cordova front calls in GMA, New Cordova front calls in GMI.
Table 7. Miscellaneous
Overview Reference
New parameter for monitor.update front call to control administrator permission elevation prompt. See Front calls changes, monitor.update front call.