BDL 2.00 new features

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

Important:

This version of Genero BDL is desupported, use a more recent version of the product.

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 2.00 upgrade guide.

Prior new features guide: BDL 1.33 new features.

Table 1. Core language
Overview Reference
The runtime system (fglrun) now uses shared libraries for database drivers; there is no need to link anymore. See Database driver specification (driver).
The TYPE instruction allows to define your own data type structures. See Types.
File management function library provided as loadable extension. See The os.Path class.
Mathematical function library provided as loadable extension. See The util.Math class.
C extension support has been extended with Informix-like C API functions. No longer applicable as of Genero 2.51.
The runtime system now shares several static elements among all processes, reducing the memory usage. The shared elements are: Data type definitions, string constants and debug information. For example, when a program defines a string containing a long SQL statement, all fglrun processes will share the same string, which is allocated only once. See Runtime system basics.
The IMPORT instruction allows to declare a C extension module. See IMPORT (C-Extension).
New debugger commands (call, ignore). See Debugger commands.
The base.Channel class now has an isEof() method to detect end of file. See Read and write text lines.
Ignoring the CTRL_LOGOFF_EVENT events on Microsoft™ Windows® platforms. See Responding to CTRL_LOGOFF_EVENT.
New built-in function to set an environment variable: FGL_SETENV(). See fgl_setenv().
The XML reader and writer classes have been extended to properly support markup language entities (like HTML's   ). See The XmlReader class, The XmlWriter class.
Table 2. User interface
Overview Reference
New form item types (i.e. widgets): SLIDER, SPINEDIT, TIMEEDIT. See ATTRIBUTES section.
The WIDTH and HEIGHT attributes can be used for IMAGE form items, as a replacement for PIXELWIDTH/PIXELHEIGHT. See HEIGHT attribute, WIDTH attribute.
New debugger commands (call, ignore). See Debugger commands.

Presentation styles support now pseudo selectors such as focus, active, inactive, input, display for fields and odd / even states for table rows.

See Pseudo selectors.

New presentation style attributes were added:

  • 'errorMessagePosition' can be used for windows to define how the ERROR message must be displayed;
  • 'highlightTextColor' for tables allows you to change the color of the selected line;
  • 'border' allows you to remove the border of some widgets like button, images;
  • 'firstDayOfWeek' can be used for DateEdit widget to specify the first day of the week in the calendar;
  • The auto-selection behavior for ComboBoxes and RadioGroup can be changed using 'autoSelectionStart'.
See Style attributes reference.
With X11 or Windows TSE environments, you can now automatically start up the front-end with FGLPROFILE entries. See Automatic front-end startup.
Up to fourth accelerators can now be defined for an action in actions defaults files or in the ACTION DEFAULTS section of form files. See Defining keyboard accelerators for actions.
Specify TTY attributes (COLOR, REVERSE) and conditional TTY attributes (COLOR WHERE) for all type of fields. See COLOR attribute, REVERSE attribute, COLOR WHERE Attribute.
Table 3. SQL databases
Overview Reference

Database schema files have been extended to centralize form field definition with the new FIELD item type.

Important:

This feature is deprecated in 2.51 and +.

Call database stored procedures with output parameters with the new IN/OUT keywords. See EXECUTE (SQL statement), Stored procedures.

Primary key, foreign key and check constraints can be specified in static SQL CREATE TABLE statements:

CREATE TABLE t1 (
     col1 INTEGER PRIMARY KEY,
     col2 CHAR(2),
     col3 DATE,
     FOREIGN KEY (col2)
      REFERENCES t2(col1)
  )
See CREATE TABLE.
The fgldbsch tool can now extract database tables with LVARCHAR columns. The LVARCHAR type is converted to VARCHAR2(n>255) in the .sch file. See Data type conversion control.
Upgrade notes for database drivers. See Database drivers changes.
Table 4. Web Services
Overview Reference
You can now choose to use Document Style Service (Doc/Literal) or RPC Literal Style Service (RPC/Literal) with Genero Web Services (GWS), for .NET compatibility and WS-I compatibility (standards defined by the Web Services Interoperability organization).
  • Document Style Service allows you to exchange complex data structures, such as database tables or word processing documents (MS.Net default)
  • RPC Literal Style Service is usually used to execute a function, such as a service that returns a stock option
Note:

RPC/Encoded Style Service (Traditional SOAP section 5) is available for backward compatibility.

See Choosing a web services style and Writing a Web server application.
Genero Web Services now provides a tool, fglwsdl, to allow a Genero application that is accessing a Web Service to obtain the WSDL information for the service. It does not matter what language the Web Service is written in. The fglwsdl tool is installed in Genero as part of the Genero Web Services package. See fglwsdl.
You no longer need to create a runner that includes the Genero Web Services package. Instead, your applications import the Genero Web Services library named com. This library provides classes and methods that allow you to perform tasks associated with creating GWS Servers and Clients, and managing the Web Services. See The com package.
GWS now supports SOAP header management through the CreateHeader method in the Web Service class that is part of the Web Services library (com). See The WebService class.

HTTPS support has been added on the client side. GWS supports secure communications through the use of encryption and standard X.509 certificates. Based on the OpenSSL engine, new security features allow a Web Services client to communicate with any secured server over HTTP or HTTPS.

A new tool is provided, fglpass, allowing you to encrypt a password from a standard X.509 certificate, and to decrypt a password you previously encrypted with a certificate.

Entries in the FGLPROFILE file are used to define the configuration for client security.

See fglpass, Encryption, BASE64 and password agent with fglpass tool, and The FGLPROFILE file(s).
You can configure a GWS Client to connect via an HTTP proxy by adding an entry in the FGLPROFILE file. See Configure a WS client to connect via an HTTP Proxy.
You can define multiple Web Services in a single Genero DVM. When you start the Web Services engine, all registered Web Services are started. See The WebServiceEngine class.
You can remap the location of Genero Web Services using entries in the FGLPROFILE file, depending on the network configuration and the access rights management of the deployment site. See Use logical names for service locations.
Serializing Genero data types: you can add optional attributes to the definition of data types. You can use these attributes to map the BDL data types in a Genero Web Services Client or Server application to their corresponding XML data types. See Attributes to customize XML serialization.

The WSHelper.42m library included in the $FGLDIR/lib directory of the Genero Web Services package file contains internal BDL functions to handle SOAP requests and errors.

It is recommended that it is linked into every Genero Web Services Server or Client program.

See Compile the client application and Compiling GWS server applications.
Upgrade notes for web services. See Web Services changes.