BDL 3.20 new features
Features added in 3.20 releases of the Genero Business Development Language.
This version of Genero BDL is desupported, use a more recent version of the product.
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.
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). |
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 with the dbmpgs_9 driver
(PostgreSQL 13 and 14 backported from FGL 4.01) |
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. |
Starting at 3.20.16 | |
fglgar run --pid-file option writes fglgar process-ids to file. |
See fglgar. |
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. |
Starting at 3.20.13 | |
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. |
Starting at 3.20.14 | |
The fglwsdl -xmlname option is added to generate variables
named with XMLName attributes in stubs. |
See fglwsdl |
Starting at 3.20.15 | |
The REST engine WSAttachment attribute has been enhanced with
an optional regular expression (regex) type value to validate the names of incoming files. |
See WSAttachment |
Starting at 3.20.17 | |
The GWS OpenID Connect service has enhancements to how scopes are exchanged. The Genero Identity Provider (GIP) follows the standard RFC 8693 as the default method when creating OAuth ID and access tokens with the scope parameter. |
See Support for RFC 8693 in the Genero Identity Provider (GIP) creation of OAuth ID and access tokens with scopes |
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 |
GMA build tool command updatesdk has a
--no-interaction option to handle user interaction during installation of extras.
It allows you to silently accept these installations during updates of Android SDK. |
See gmabuildtool updatesdk --no-interactions and Building Android apps with Genero. |
Starting at GMA-1.40.22 | |
New gmabuildtool option to enable data collection for analytics, when using Firebase Cloud Messaging. | See Controlling Firebase data collection for analytics |
Starting at GMI-1.40.14 | |
New gmibuildtool option to update the app installed on a simulator. | See New option --update for gmibuildtool |
Related upgrade notes | |
Upgrade notes for GMA. | See Genero Mobile for Android (GMA) 1.40 changes. |
Upgrade notes for GMI. | See Genero Mobile for iOS (GMI) 1.40 changes. |
Overview | Reference |
---|---|
New parameter for monitor.update front call to control administrator permission elevation prompt. | See Front calls changes, monitor.update front call. |