BDL 3.00 new features

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

Important: Please read also:
Table 1. Core language
Overview Reference
Attach the debugger to a running program with fgldb -p process-id. See Attaching to a running program.
Improved compilation time (fglcomp and fglform) See Improved compilation time.
Datetime-related utility methods. See util.Datetime.getCurrentAsUTC, util.Datetime.format, util.Datetime.parse.
Date-related utility methods. See util.Date methods.
Interval-related utility methods. See util.Interval methods.
Temporary file name creation with os.Path.makeTempName(). See os.Path.makeTempName.
JSON stringification method to omit NULL elements. See util.JSON.stringifyOmitNulls.
New fglcomp warning for invalid NULL usage in expressions like var==NULL. See Compiler warning -6636.
fglcomp option to avoid source name in the .42m module. See 42m module information.
C Extension runtime stack introspection (parameter type and actual string value size in bytes). See Runtime stack functions.
The fglmkext command line tool can build your C Extension library. See fglmkext.
Table 2. User interface
Overview Reference
Dynamic dialog creation (equivalent of INPUT, CONSTRUCT and DISPLAY ARRAY blocks). See Dynamic Dialogs, ui.Dialog.createConstructByName, ui.Dialog.createInputByName, ui.Dialog.createDisplayArrayTo.
Resizable SCROLLGRID containers (WANTFIXEDPAGESIZE=NO). See WANTFIXEDPAGESIZE attribute.
The ON SORT dialog control block can be used to execute code when the record list is re-ordered by the user. See List ordering, Populating a DISPLAY ARRAY, ON SORT block, ui.Dialog.getSortKey, ui.Dialog.isSortReverse.
ON TIMER trigger in dialogs, to execute a block of code at regular intervals. See Get program control on a regular (timed) basis.
Autocompletion in text edit fields with the COMPLETER attribute. See Enabling autocompletion.
Centralization of icon definitions with the FGLIMAGEPATH environment variable. See Providing the image resource, FGLIMAGEPATH, Built-in front-end icons desupport.
Binding structured ARRAYs in DISPLAY ARRAY and INPUT ARRAY. See Structured ARRAYs in list dialogs.
Defining an action for IMAGE form items (clickable images). See Defining action views in forms, Image columns firing actions, IMAGE item type.
Detect window resizing or device orientation change with the windowresized predefined action. See Adapting to viewport changes.
Dialog methods to convert the program array row index to the visual index, and the opposite. See ui.Dialog.arrayToVisualIndex, ui.Dialog.visualToArrayIndex.
Providing application image resources to Web Components with ui.Interface.filenameToURI(). See Using image resources with the gICAPI web component, ui.Interface.filenameToURI.
The standard.openFile frontcall is now supported with GBC. See standard frontcall support matrix.
The dictionariesDirectory parameter for the standard.feInfo frontcall can be used to get the directory where spell checker dictionary files can be uploaded. See standard.feInfo frontcall.
The allowWebSelection style attribute can used to enable items selection with a simple mouse drag. See Table style attributes.
The browserMultiPage style can be used to specify whether the RUN and RUN WITHOUT WAITING instructions will be executed in the same browser tab or in a new browser tab. See UserInterface style attributes.
Table 3. SQL databases
Overview Reference
Support for PostgreSQL 9.4. See Database driver specification (driver).
Support for SAP® ASE 16.x Warning: SAP ASE is now fully desupported in all BDL versions See Database driver specification (driver).
Support for SQL Server 2008, 2012 and 2014 with FreeTDS driver (using FreeTDS 0.95) See FreeTDS driver supports SQL Server 2008, 2012, 2014.
Maria DB support (V5.5 and V10): Use the dbmmys driver. See MariaDB support.
Support for Microsoft® SQL Server 2016 with SNC 11, ESM and FTM drivers. See Microsoft SQL Server.
Dynamic cursor built-in class base.SqlHandle. See The SqlHandle class.
SQL interruption is now supported with Oracle® MySQL. See Using SQL interruption.
MySQL VARCHAR(N) can be used when N is greater as 255. See MySQL VARCHAR size limit.
MySQL DATETIME can store fractional seconds. See MySQL DATETIME fractional seconds.
Native Oracle NUMBER type (without precision/scale) can be extracted by fgldbsch. See Oracle DB NUMBER type.
Serial emulation based on triggers and sequences with SQL Server 2012 and +. See SERIAL data types.
PostgreSQL connection string option specification in the source parameter. See Database source specification (source), Prepare the runtime environment - connecting to the database.
Table 4. Web Services
Overview Reference
IPv6 support for Web Services clients. See Configure a WS client to use IPv6.
Flushing immediately the response of a web service operation with com.WebServicesEngine.flush. See com.WebServiceEngine.Flush.
Base64 / Hexadecimal / Digest methods using a specific character set for string data. See security.Base64.FromStringWithCharset, security.Base64.ToStringWithCharset, security.HexBinary.FromStringWithCharset, security.HexBinary.ToStringWithCharset, security.Digest.AddStringDataWithCharset.
com.WebServiceEngine option server_readwritetimeout to define a server socket read/write timeout. See Web Services changes, WebServiceEngine options.
Specific APIs for Apple® Push Notification Service support. See The APNS class, com.TCPRequest.setKeepConnection, com.TCPRequest.doDataRequest, com.TCPResponse.getDataResponse, Push notifications.
Methods to perform RESTful requests using files on disk. See com.HTTPServiceRequest.readFileRequest, com.HTTPServiceRequest.sendFileResponse, com.HTTPRequest.doFileRequest, com.HTTPResponse.getFileResponse, com.HTTPPart.getAttachment, com.HTTPPart.CreateAttachment.
FGLPROFILE entries to define XML Signature and XML Encrypted data prefix: xml.signature.prefix and xml.encrypted.prefix. See XML configuration.
SOAP fault handling works now when HTTP error 200 is returned by the server. See SOAP fault handling in client stub.
Client stub multipart supports now optional parts. See Optional multipart handling in client stub
Table 5. Mobile apps
Overview Reference
Command line tools to build mobile apps. See Building Android apps with Genero, Building iOS apps with Genero.
Starting remote applications from a mobile device with the runOnServer front call. See Running mobile apps on an application server.
Push notification APIs for Google Cloud Messaging (GMA) and Apple Push Notification Service (GMI), with new predefined actions (notificationpushed). See Push notifications.
Extended feInfo front call options for mobile devices (deviceModel, deviceId, freeStorageSpace, iccid, imei, ppi, windowSize, and so on). See feInfo.
New materialFABType and materialFABActionList style attributes for Window class, to control the FAB button on devices following material design guidelines. See Android floating action button.
Front call to display a box controlling debug settings on GMA. See showSettings (Android).
Automatic FGLAPPDIR environment variable (defining the path to the appdir), and automatic FGLDIR environment variable, when executing on mobile devices. See FGLAPPDIR, FGLDIR, Setting environment variables in FGLPROFILE (mobile).
Front calls to take or choose videos on mobile devices. See chooseVideo, takeVideo front calls.
Front call to ask user for Android permissions. See askForPermission (Android) front call.
GMA buildtool --clean option to cleanup the scaffold directory in case of interruption or failure in prior build. See Building Android apps with Genero.
GMA buildtool --no-install-extras option to avoid installation of extras during Android SDK update. See Building Android apps with Genero.
GMI specific style attribute iosTabBarUnselectedColor, to define the color of unselected tab bar elements. See Navigator pane.
GMA specific style attribute androidKeepForeground, to control the app state and the background state notification. See Mobile app foreground and background modes, UserInterface style attributes.
Table 6. Experimental features
Overview Reference
Stacked form definition in .per files with the new STACK container, for mobile programming. See Stack-based layout, STACK container.