BDL 3.20 new features
Features added in 3.20 releases of the Genero Business Development Language.
Corresponding upgrade guide: BDL 3.20 upgrade guide.
Prior new features guide: BDL 3.10 new features.
| Overview | Reference | 
|---|---|
Support for circular dependency of modules with IMPORT
FGL. | 
See Circular dependency with IMPORT FGL. | 
| 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 Naming parameters in a function 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 without .* notation. | 
FGLPROFILE fglrun.floatToCharScale2 and
fglrun.floatToCharScale2.print to control FLOAT/SMALLFLOAT to
string conversion. | 
See FLOAT/SMALLFLOAT to string conversion. | 
GetOpt utility type and methods, to process command line arguments in the
getopt style
(--option).  | 
See getopt: Command line options module. | 
New os.Path.glob() method to get a list of files from a
pattern. | 
See os.Path.glob. | 
TEXT and BYTE variables are now
automatically located in memory by JSON parsing methods. | 
See JSON to BDL data conversion. | 
| Overview | Reference | 
|---|---|
The new gui.rendering FGLPROFILE entry, to enable Universal Rendering.Important: This feature is deprecated, its use is
discouraged although not prohibited. 
 | 
See Universal Rendering as standard. | 
FGLGBCDIR environment variable, to define the directory of
the GBC component to be used for Universal Rendering. | 
See FGLGBCDIR, Universal Rendering as standard. | 
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 chromebar. | 
ui.Interface class methods to identify the Universal
Rendering client and version.Important: This feature is deprecated, its use is
discouraged although not prohibited. 
 | 
See 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 New Folder.collapserPosition (GBC), Collapsible groups with GBC. | 
ON FILL BUFFER, ON IDLE and ON
TIMER triggers for display array dynamic dialog. | 
See ui.Dialog.addTrigger. | 
| Built-in classes methods to control form elements are now case-insensitive. | See Case insensitive names with UI methods. | 
Use the itemsAlignment style attribute to control the
alignment of elements inside a scrollgrid. | 
See Controlling element alignment inside a scrollgrid. | 
New enableCalendar style attribute for
DateTimeEdit with GDC. | 
See New DateTimeEdit.enableCalendar style attribute (GDC). | 
New qtStyle style attribute for
ComboBox with GDC. | 
See New ComboBox.qtStyle style attribute (GDC). | 
Set the sanitize style attribute to "no" to
disable HTML content cleanup (Warning: allows Stored XSS attacks!) | 
See New sanitize style attribute (GBC). | 
Use the showVirtualKeyboard style attribute to control how
the virtual keyboard shows up on mobile devices. | 
See New showVirtualKeyboard style attribute (GBC) | 
The INITIALIZER attribute of COMBOBOX
accepts module specification as function prefix (the module is then automatically loaded) | 
See INITIALIZER attribute. | 
| Setting the comment of a form element or form field. | See ui.Form.setElementComment, ui.Form.setFieldComment. | 
New FGLPROFILE entry gui.programStoppedMessage to define a
generic message to be displayed to the end user when a program stops because of a runtime
error. | 
See Default exception handling, Program stop error message box. | 
AUTONEXT can be used on EDIT or
BUTTONEDIT with the COMPLETER attribute, and on
COMBOBOX, to jump to the next field when a value is selected from the list. | 
See AUTONEXT attribute. | 
The lateRendering style attribute for FOLDER
containers can be used to optimize the layout processing. | 
See New Folder.lateRendering style attribute (GBC). | 
| Upgrade notes for presentation styles. | See Presentation styles changes. | 
| Upgrade notes for web components. | See Web components changes. | 
| Upgrade notes for front calls. | See Front calls changes. | 
| Overview | Reference | 
|---|---|
Support for Oracle®
database 18c and 19c 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, 12 and 13 with the dbmpgs_9
driver. | 
See Database drivers changes, PostgreSQL 12 notes. | 
| 
 Support for SQL Server 2019 (v15) with the   | 
|
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. | 
Informix SQL SELECT statement row limiting clause
SKIP n FIRST m can be converted to native equivalent. | 
See Row limiting clause (SELECT). | 
With Microsoft SQL Server, in DDL statements such as CREATE
TABLE, character data types can be converted to the equivalent native national character
types, with FGLPROFILE entry
dbi.database.dsname.ifxemul.nationalchars=true. | 
See character types with SQL Server, ifxemul FGLPROFILE settings. | 
To avoid Microsoft SQL Server 468 collation conflict errors with temporary
tables, the ODI drivers for SQL Server add now a COLLATE DATABASE_DEFAULT clause
after character types in the native statement generated from a CREATE TEMP TABLE.
This is not needed for SELECT INTO TEMP. | 
See Temporary tables. | 
Oracle database
rowid (in base 64 format) can be found in sqlca.sqlerrm. | 
See ORACLE rowid in sqlca.sqlerrm. | 
| Upgrade notes for database drivers. | See Database drivers changes. | 
| Overview | Reference | 
|---|---|
| Source code formatting tool: fglcomp --format, including new command line tools fglgitformat, fglformatdiff. | See Source code beautifier, fglgitformat, fglformatdiff. | 
| 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. | 
| 
 fglrun -l/fgllink supports   | 
See Providing the files to link in an arguments file, Providing the files to link in an arguments file. | 
| fglcomp can now process several .4gl files on the command line. | See Compiling several .4gl sources in a single command, fglcomp. | 
| Commands accepting a list of files like fglcomp or fgllink, can do pathname expansion (fglcomp *.4gl), on Unix and Windows platforms. | See Compiling several .4gl sources in a single command, fglcomp. | 
| 
 To reduce compilation time of large projects, fglcomp supports the
  | 
See Compiling in make mode. | 
| 
 The fglcomp   | 
See Producing make-style dependency rules. | 
| 
 fglcomp supports   | 
See Providing the source files in an arguments file. | 
| 
 fglcomp supports the value "  | 
See Preprocessing style option. | 
| 
 fglrun provides the   | 
See Identifying modules to be imported. | 
fglcomp supports the new warning argument -W
unused-parameter, that prints a message when a function parameter is not used. The negative
form -W no-unused-parameter can be combined with -W unused, to
ignore parameters that are unused. | 
See fglcomp option -W option. | 
| 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. | 
See: | 
| The fglrestful tool takes an OpenAPI documentation file (JSON format) and generates the client stub to interact with the REST service. | See fglrestful. | 
Descriptions using the WSDescription attribute are allowed in
input and output parameters. These descriptions can be generated in the REST stub file using the
fglrestful tool's --comment option. | 
See fglrestful and WSDescription. | 
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. | 
| API added to provide management of OAuth authentication for RESTful Web service secured by OpenID Connect. | See OAuthAPI library. | 
The WSHelper.WSServerCookiesType record has a member added
for setting the sameSite security value. The
com.HttpServiceRequest.setResponseCookies() method, which uses the record, may
raise a runtime error if the SameSite attribute is not set correctly. | 
See: Changes to how GWS handles cookies, Single sign-on (OpenID Connect, SAML, and GIP) sameSite security. | 
| Related upgrade notes | |
| Upgrade notes for web services. | See Web Services changes. | 
| 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 (GMA), 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. | 
GMA and GMI support standard.openFile/openFiles front
calls. | 
See standard.openFile, standard.openFiles, File management. | 
| gmabuildtool produces Android App Bundle .aab packages. | See Android App Bundle (.aab) packages | 
| Overview | Reference | 
|---|---|
| New parameter for monitor.update front call to control administrator permission elevation prompt. | See Front calls changes, monitor.update front call. |