BDL 3.10 new features
Features added in 3.10 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.10 upgrade guide.
Overview | Reference |
---|---|
The DICTIONARY type, to define associative arrays /
hash-maps. |
See Dictionaries, DICTIONARY as class. |
New FUNCTION definition syntax, to declare exact function
signature with parameter types in the parentheses, and return types in the RETURNS
clause. |
See FUNCTION syntax, Function parameters, Returning values. |
Function references, to call functions only know at runtime. | See Function references, FUNCTION func-spec. |
Invoking methods with an object reference returned from a method: LET
s = s.subString(1,10).toLowerCase() |
See Working with objects. |
Java SE 10 and 11 support. | See Java Inteface changes, Java software requirements for FGL. |
New DYNAMIC ARRAY methods copyTo() ,
search() , searchRange() . |
See DYNAMIC ARRAY.copyTo, DYNAMIC ARRAY.search, DYNAMIC ARRAY.searchRange. |
Defining the localized string lookup path when program starts. | See base.Application.reloadResources. |
Bit-wise operation and hexadecimal/binary string conversion on
INTEGER values. |
See The util.Integer class. |
Channel openFile() method can write to stderr. |
See base.Channel.openFile. |
Variable definition attributes for JSON serialization:
json_null , json_name . |
See JSON support. |
Resource files (.42f, etc) can now also be found in the
directory where the MAIN module resides. |
See Default resource file search path, FGLRESOURCEPATH. |
Base64 to/from Hexadecimal string conversion methods. | See util.Strings.base64DecodeToHexString, util.Strings.base64EncodeFromHexString. |
Source documentation enhancements, to describe module variables, constants and user defined types. | See Commenting a module constant, Commenting a module variable, Commenting a module type. |
fglform checks for unique TABINDEX
values. |
See Unique TABINDEXes in a form. |
Upgrade notes for C extensions. | See C Extension changes. |
Upgrade notes for Java interface. | See Java Inteface changes. |
Overview | Reference |
---|---|
Dynamic dialog creation (equivalents of INPUT ARRAY and
DIALOG blocks). |
See Dynamic Dialogs, ui.Dialog.createInputArrayFrom, ui.Dialog.createMultipleDialog. |
Click on cell in DISPLAY ARRAY with
FOCUSONFIELD attribute. |
See Field-level focus in DISPLAY ARRAY. |
Get user's preferred language defined on the front-end platform. | See User's preferred language. |
New "accordion" value for the position style
attribute of FOLDER containers, to render the children pages as a set of
collapsible group boxes. |
See Folder style attributes, FOLDER item type, Presentation styles changes. |
A set of ready-to-use web components are now provided in the Genero BDL package. | See Built-in web components, Web components changes. |
gICAPI Web Component onFlushData and
onStateChange methods to better control content change and form field
state. |
See gICAPI.onFlushData(), gICAPI.onStateChanged(). |
New dialog methods to set text, image and comment of default action views. | See Configuring default action views dynamically. |
Defining array cell attributes in dynamic dialogs with simple and two-dimensional dynamic arrays. | See ui.Dialog.setArrayAttributes. |
Display values to form fields or screen arrays that are only known at runtime. | See ui.Form.displayTo. |
NOTEDITABLE can be specified for TEXTEDIT
form fields. |
See NOTEDITABLE attribute. |
Use the DateEdit style attribute
calendarType to define the type of calendar. |
See DateEdit style attributes. |
GBC supports the buttonIcon style attribute for
DateEdit and DateTimeEdit classes. |
See DateEdit style attributes, DateTimeEdit style attributes. |
The UserInterface style attribute reverse
can be used for Arabic languages support. |
See Right-to-left languages support. |
localStorage front calls to store key/value pairs on the
front-end side. |
See Local storage front calls, New localStorage frontcalls. |
Style attribute rowActionTrigger (Table
class), to define the physical event to fire the row choice action. This allows you to define
simple-clicks to select a row in a table controlled by DISPLAY ARRAY . |
See Defining the action for a row choice. |
DOUBLECLICK attribute now supported for
SCROLLGRID lists, in .per file syntax and as DISPLAY
ARRAY attribute. |
See Defining the action for a row choice. |
ON CHANGE is now allowed in
CONSTRUCT . |
See ON CHANGE block. |
SCREEN can get a TAG attribute. |
See SCREEN section. |
bold attribute in table cell attributes. |
See ui.Dialog.setArrayAttributes. |
The Window style attribute
thinScrollbarDisplayTime accepts a negative value, to hide the scrollbar. |
See Window style attributes: Basics. |
Form item attribute INITIALPAGESIZE for
SCROLLGRID elements. |
See INITIALPAGESIZE attribute. |
The standard.openFiles front call can be used to let the user
select multiple files on the front-end platform. |
See The openFiles front call. |
The Window style attributes
actionPanelButtonSize and ringMenuButtonSize support the
em unit ("20em" ). |
See Presentation styles changes, Window style attributes: Action Panel, Window style attributes: Ring Menu. |
AGGREGATE fields can be used with any item type (was limited
to EDIT columns). |
See Summary lines in tables. |
GDC auto-update front call (monitor.update ) to install a new
GDC automatically from a Genero program. |
See monitor.update frontcall. |
Input field hint specification with the PLACEHOLDER attribute. |
See PLACEHOLDER attribute. |
Front call API allows RECORD and ARRAY
specification in input and output parameters. |
See ui.Interface.frontCall, webcomponent.call. |
The ui.Dialog.nextField() method accepts
"+NEXT" , "+PREV" and "+CURR" field
specification. |
See ui.Dialog.nextField. |
The ui.Dialog.cancel() method can be used to cancel a parent
DIALOG from the SUBDIALOG code. |
See ui.Dialog.cancel. |
New theme front calls allow the Genero application to set the
theme, retrieve the theme in use, or list all available themes for an application using the Genero
Browser Client. |
See Theme front calls. |
Better control of row / cell highlighting for TABLE and
SCROLLGRID containers. |
See Row and cell highlighting in TABLE, Row and cell highlighting in SCROLLGRID, Row highlighting in TREE. |
Set the Table style attribute tableType to
listView , to get Mobile list view rendering for tables. |
See Controlling table rendering, Table style attributes. |
Set the Scrollgrid style attribute
customWidget to pagedScrollGrid , to render the scrollgrid as a
responsive tile list. |
See SCROLLGRID item type, ScrollGrid style attributes, Scrollgrid views. |
Set the Checkbox style attribute
customWidget to toggleButton , to render the checkbox as a toggle
switch. |
See CHECKBOX item type, CheckBox style attributes. |
The Button style attribute alignment can be
used to define the content position in the widget. |
See Button style attributes. |
The Window style attribute windowState can
be set to fullscreen to display the window in fullscreen mode (GDC only). |
See Window style attributes: Basics. |
Upgrade notes for presentation styles. | See Presentation styles changes. |
Upgrade notes for front calls. | See Front calls changes |
Upgrade notes for web components. | See Web components changes. |
Overview | Reference |
---|---|
Support of Microsoft® ODBC v13 and v17 for SQL Server with dbmsnc_13 and
dbmsnc_17 ODI drivers. These drivers are available on Windows® and Linux®
64bits platforms, to connect to SQL Server 2016, 2017 and Azure SQL Database. |
See Microsoft ODBC Driver for SQL Server. |
Support for SAP HANA® 2.0 database
with the new ODI driver dbmhdb_2 . |
See SAP HANA. |
Support for IBM® DB2® LUW 11.x (with
dbmdb2_10 ). |
See Database driver specification (driver). |
Support for Oracle® 12c on macOS®. | See Mac OS X platform notes (Special consideration must be taken for libclntsh.so) |
Support for PostgreSQL 9.6 and 10. | See Database driver specification (driver). |
Support for Oracle
MySQL 5.7 (dbmmys_5_7 ) and MySQL 8.0 (dbmmys_8_0 ). |
See Oracle MySQL 5.7 and 8.0 support, Database driver specification (driver). |
Support for MariaDB 10.2 with the new ODI driver dbmmdb_10_2 . |
See Database driver specification (driver), Prepare the runtime environment - connecting to the database. |
Support for FreeTDS 1.00 (to connect to SQL Server up to version 2016) | See Prepare the runtime environment - connecting to the database. |
The SNC driver selects automatically the char mode
(snc.widechar FGLPROFILE parameter) depending on the application locale. |
See Wide Char mode of SNC driver. |
Special hints in C-style comments to control SQL statement execution. | See fglhint_* in SQL comments. |
Defining ODBC connection string parameters for SQL Server with the
"datasource?options" notation in the
"source" connection parameter. |
See Database source specification (source), SQL connection identifier. |
Specifying Oracle DB schema and tablespace in temporary table emulations. | See Temp table emulation with Oracle DB. |
Oracle DB proxy authentication. | See Oracle DB Proxy Authentication. |
Print SQL debug message only when SQL error occurs, and control SQL debug
level from programs with fgl_sqldebug() |
See Debugging SQL statements, fgl_sqldebug(). |
Converting MATCHES to PostgreSQL SIMILAR TO expressions. | See MATCHES and LIKE |
Faster SQL execution with PostgreSQL driver and new pre-fetch row count parameter in FGLPROFILE. | See PostgreSQL specific FGLPROFILE parameters. |
SET LOCK MODE support with PostgreSQL driver. |
See Concurrency management. |
Upgrade notes for database drivers. | See Database drivers changes. |
Overview | Reference |
---|---|
GUI log file name with process id
(--start-guilog="myfile-%p.log" ). |
See Front-end protocol logging. |
Source code coverage tool (FGLCOV / fglrun
--merge-cov ). |
See Source code coverage. |
Program execution trace (fglrun --trace ). |
See Execution trace. |
VIM plugins can be used directly from $FGLDIR/vimfiles. | See Configure VIM for Genero BDL. |
The fpi command line tool can be used to show Genero BDL version information. | See fpi. |
The fglgar command line tool is now delivered with the FGLGWS package. | See fglgar, Packaging web applications. |
fglcomp option -W to-err-file to write
warnings to the .err file. |
See fglcomp. |
fglcomp option
--tag=string to write a custom string to the
.42m pcode module. |
See fglcomp, 42m module information. |
Overview | Reference |
---|---|
Support of Message Transmission Optimization Mechanism (MTOM), a method of efficiently sending binary data to and from Web services. | See Message Transmission Optimization Mechanism (MTOM), XMLOptimizedContent, and fglwsdl (-hexb64AsString option) |
The swaRef feature optimizes file transfer when the files are attachments and located on disk. | See swaRef (SOAP with attachments using wsi:swaRef). |
Better support of Web Services on iOS mobile devices. | See Web Services on mobile devices. |
New methods clearHeaders() and
removeHeader() remove headers from an HTTP multipart object. |
See com.HttpPart methods. |
New XML serializer options xml_ignoreunknownelements and
xml_ignoreunknownattributes , to ignore unexpected elements or attributes. |
See Serialization option flags. |
The XMLElementNillable attribute provides an option to set
all XML elements explicitly to null and to serialize them with xsi:nil="true" , when
the BDL variable is NULL. |
See XMLElementNillable, Web Services changes. |
The XMLNillable attribute provides an option to set an XML
node explicitly to null and to serialize it with xsi:nil="true" , when the BDL
variable is NULL but not optional. |
See XMLNillable, Web Services changes. |
New built-in server-side methods for the com.HTTPServiceRequest class:
getURLHost() , getURLPort() , getURLPath() ,
getURLQuery() , findRequestCookie() , and
setResponseCookie() . |
See The HTTPServiceRequest class. |
Methods added to assist with cookie management. | See WebServiceEngine options, com.HTTPRequest.setAutoCookies and com.HTTPServiceRequest.setResponseCookies. |
New Genero BDL helper functions: SplitUrl() ,
FindQueryStringValue() , and SplitQueryString() . |
See WSHelper library. |
New methods for proxy management of the current HTTPRequest . |
See The HTTPRequest class. |
Genero Web Services accepts 2 new options to enable OCSP (Online Certificate Status Protocol). | See Enable OCSP. |
The xml.XSLTTransformer class provides methods for transforming XML
following the XSLT version 1.0 specification. |
See The XSLTtransformer class. |
New methods to generate a password of a given size and based on a human readable password using Password-Based Key Derivation Function 2 (PBKDF2). | See The PBKDF2 class. |
New methods allow you to save passwords as BCrypt results. | See The BCrypt class. |
A new REST demo has been added in $FGLDIR/demo/WebServices/forum. This demo uses REST services with JSON, text and binary data; manages authorization access via the new HTTP automatic cookie API; and uses the new BCrypt API to store a password in a database. | See the readme.txt provided with the demo. |
The enveloped-signature method has an optional parameter to specify
the node where the signature will be added. |
See Transformation identifier. |
FGLPROFILE entry to define regex-based URL specification for HTTP configuration. | See Web Services changes, Server configuration. |
New fglwsdl option -fRPCNamespace to produce BDL code
supporting the namespace attribute for RPC parameters. |
See Web Services changes, fglwsdl. |
New fglpass option -gid and
security.global.agent.gid=true FGLPROFILE entry, to allow agent authentication to
be performed with UNIX user group instead of user only. |
See Web Services changes, fglpass, Use the password agent. |
Upgrade notes for web services. | See Web Services changes. |
Overview | Reference |
---|---|
GMI and GMA include generic Cordova/PhoneGap plugin front calls to make use of the Cordova plugins. | See Cordova plugin front calls. |
GMI build tool options --install-plugins and
--list-plugins , to manage Cordova plugins. |
See gmibuildtool and Cordova plugins. |
GMA build tool option --build-cordova , to embed one or more
Cordova plugins. |
See gmabuildtool and Cordova plugins. |
GMA build tool command scaffold , to manage scaffold archives.
This new command comes with the --list-plugins and
--install-plugins options to handle plugins in the scaffold archive. |
See gmabuildtool and Building Android apps with Genero. |
Stretchable SCROLLGRID lists are supported on mobile
front-ends. |
See SCROLLGRID item type. |
Predefined actions enterbackground and s
enterforeground to detect app state change. |
See Background/foreground modes. |
The GMIDIR environment variable allows you to install the GMI archive in a different directory than FGLDIR. | See Building iOS apps with Genero. |
GMI build tool option --extensions-libs , to specify the
libraries to be used to build your iOS app. |
See Building iOS apps with Genero. |
GMA build tool options --build-status-icon-* allow you to
define the status notification bar icon. |
See Building Android apps with Genero, gmabuildtool. |
GMA build tool option --accept-licenses allows you to
silently accept Android SDK licenses
during updates of Android SDK. |
See gmabuildtool and Building Android apps with Genero. |
GMA supports now the alignment style attribute for
IMAGE . |
See Presentation styles changes, Image style attributes. |
GMI build tool option --install provides a method
for installing without the need to snoop with instruments for the actual device
name. |
See gmibuildtool and Genero mobile development client for iOS. |
The style attribute reduceFilter controls the display of the
the listview reduce filter on mobile clients. |
See Table style attributes. |
GMA build tool option --build-force-scaffold-update , to
re-create the app project directory from a fresh GMA scaffold directory. |
See gmabuildtool and Genero Mobile for Android (GMA) 1.30 changes. |
GMA build tool option --build-quietly , to force yes for any
answer asked during the build process. |
See gmabuildtool and Genero Mobile for Android (GMA) 1.30 changes. |
The front call mobile.isForeground indicates if the app is in
foreground mode. |
See Front calls changes, isForeground. |