BDL 2.11 new features

Features added in 2.11 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 2.11 upgrade guide.

Table 1. Core language
Overview Reference

New -p noln preprocessor option to remove line number information to get a readable output:

fglcomp -E -p noln mymodule.4gl
See Source preprocessor
The -b option of fglrun has been extended to recognize headers of p-code modules compiled with older versions of Genero. See 42m module information
The fglform compiler now writes build information in the .42f files, to identify on the production site what version was used to compile forms. See Compiling form specification files (.per)
Table 2. User interface
Overview Reference
The ui.ComboBox class has been extended with new methods: getTextOf() and getIndexOf(). See The ComboBox class

A new FGLPROFILE entry has been added to force the current row to be shown automatically after a sort in a table:

Dialog.currentRowVisibleAfterSort = 1

By default, the offset does not change and the current row may disappear from the window. When this new parameter is used, the current row will always be visible.

See Dialog configuration with FGLPROFILE
Table 3. SQL databases
Overview Reference

Static SQL syntax now supports derived tables and derived column lists in the FROM clause. For example:

SELECT * FROM
 (SELECT * FROM customer
  ORDER BY cust_num) 
  AS t(c1,c2,c3,...)

See database server documentation for more details about this SQL feature.

Informix® 11 does not support the full ANSI SQL 92 specification for derived columns, while other databases like DB2® do. For this reason, fglcomp allows the ANSI standard syntax.

See SELECT

The SET ISOLATION statement now supports the newInformix 11 clauses for the COMMITTED READ option:

SET ISOLATION TO COMMITTED READ
 [LAST COMMITTED]
 [RETAIN UPDATE LOCKS]

When connecting to a non-Informix database, the LAST COMMITTED and RETAIN UPDATE LOCKS are ignored; other databases do not support these options, and have the same behavior as when these options are used with Informix 11.

See SET ISOLATION

The CAST operator can now be used in static SQL statements:

CAST ( expression AS sql-data-type ) 

Only Informix data types are supported after the AS keyword.

See Static SQL statements

In order to execute database administration tasks, you can now connect to Oracle as SYSDBA or SYSOPER with the CONNECT instruction:

CONNECT TO "dbname"
 USER "scott/SYSDBA"
 USING "tiger"
See CONNECT TO
Table 4. Web Services - Version 2.11.00
Overview Reference
The Genero Web Services com library provides the HTTPServiceRequest class to perform low-level XML and TEXT over HTTP communication on the server side. This allows communication at a very low-level layer, to write your own type of web services. See The HTTPServiceRequest class.
XML facet constraints attributes: the Genero Web Services XML library provides 12 new XML attributes to map to simple BDL variables. These attributes restrict the acceptable value-space for each variable in different ways such as:
  • a minimum or a maximum number of XML characters or bytes.
  • a strict number of XML characters or bytes.
  • a minimum inclusive or exclusive value depending on the data type.
  • a maximum inclusive or exclusive value depending on the data type,
  • a enumeration of authorized values.
  • a number of digits and fraction digits.
  • how white spaces have to be handled.
  • a regular expression to match. (See Section F of XML Schema Part 2)
See Attributes to customize XML serialization.

The fglwsdl tool has been enhanced with the following three new options :

  • -disk : to retrieve locally a WSDL or an XSD with all its dependencies from an URL on the disk
  • -noFacets : to avoid the generation of the new facet constrain attributes (for compatibility)
  • -regex : to validate a value against a regular expression as described in the XML Schema specification
See fglwsdl.
Table 5. Web Services - Version 2.11.04
Overview Reference
The Genero Web Services library provides two new methods in the WebOperation class to create One-Way operations in services.

A One-Way operation means that the server accepts an incoming request, but doesn't return any response back to the client. There is one method called CreateOneWayRPCStyle to create an RPC Style operation, and another one called CreateOneWayDOCStyle to create a Document Style operation.

For instance, a One-Way operation can be used as a logger service, where a client sends a message to the server, but doesn't care about what the server is doing with it.

See The WebOperation class.
The fglwsdl tool has been enhanced with the following new options:
  • -b: Generate code from a WSDL using the binding section instead of the service section
  • -autoNsPrefix: Determine the prefix for variables and types based on the XML namespace they belong to
  • -nsPrefix: Set the prefix for a variable or a type belonging to the given XML namespace
The following options have been changed:
  • -o: If there are several services in one WSDL, they will be generated in the same file with the given base name instead of returning an error
  • -disk: Retrieves and displays all dependencies to the current directory but there are no sub directories any longer.
  • -prefix: Accepts patterns %s, %f and %p
See fglwsdl.
The Genero Web Services library has been enhanced to support WSDL with circular references.

The Genero language doesn't provide a way to define variables or types that refer to themselves. However, to provide better interoperability and a way to handle such circular data, the fglwsdl tool now generates variables or types of xml.DomDocument type when circular references are detected during the processing of WSDL files. This gives the user the ability to manipulate the circular data by hand, using the XML DOM API.

See The xml package.