Genero v2.10 now available
Irving, Texas – December 6, 2007 — Four Js Development Tools is pleased to announce the release of Genero v2.10. This important release comprises several breakthrough features that improve on the language and render user interaction more intuitive.
Genero v2.10
Breakthrough features
Genero v2.10 is an important milestone for Four Js and the I-4GL developer community in general, due to the introduction of a new multiple dialog grammar to further simplify the development of user interfaces.
Why do we call this grammar multiple dialogs? For the simple reason that it enables the developer to combine the power of each Genero dialog class within a single form; prior to this release each dialog had to be singular, that is, it produced its own form that deactivated any preceding forms.
Use of multiple dialogs will improve the readability of your code and shorten it by as much as a third, leading to more intuitive user interfaces. Multiple dialogs is a much anticipated feature, don’t miss your chance to try it first!
Multiple dialogs – an important extension to the family of input dialog statements: INPUT
,DISPLAY ARRAY
, MENU
, CONSTRUCT
and PROMPT
.
By using this new DIALOG
statement, it is now possible to combine the power of all these statements into a single form.
Example:
DIALOG ATTRIBUTES(UNBUFFERED) INPUT BY NAME currtable DISPLAY ARRAY afields TO a.* DISPLAY ARRAY cfields TO c.* ON CHANGE currtable CALL on_change_currtable() ON ACTION right CALL right(DIALOG) ON ACTION allright CALL allright(DIALOG) ON ACTION left CALL left(DIALOG) ON ACTION allleft CALL allleft(DIALOG) ON ACTION prevwiz DISPLAY "prevwiz" EXIT DIALOG ON ACTION nextwiz DISPLAY "nextwiz" EXIT DIALOG ON ACTION cancel EXIT DIALOG AFTER DIALOG -- show all chosen columns in the terminal FOR i=1 TO cfields.getLength() DISPLAY sfmt("table:%1,column:%2",cfields[i].ctable,cfields[i].ccol) END FOR END DIALOG
For a description of how DIALOG
improves the user interface, refer to the Roadmap presentation below (slides 8-16).
The TRY exception handler – introduces a more elegant means of handling exceptions without introducing the GOTO statement.
Example:
TRY [ statement ...] [ CATCH [ statement ...] ] END TRY
Any statement in the TRY
block will be executed until an exception is hit, after which program control is passed to the CATCH
block. If no exception is hit, then program execution continues afterEND TRY
. TRY statements can be nested.
The statement is a pseudo statement, because it does not instruct the compiler to generate code. It is therefore not possible to set debugger break points at TRY/code>
, CATCH
or END TRY
.
Before TRY
, the traditional mechanism of handling exceptions was via the WHENEVER ERROR GOTO
statement as follows:
Example:
WHENEVER ERROR GOTO catch_error
< -- 4GL statements GOTO no_error
LABEL catch_error: WHENEVER ERROR STOP
-- 4GL statements catching the error LABEL no_error:
WHENEVER ... RAISE statement – This statement defines an alternate exception handling mechanism when not using TRY
. If an error occurs, the current function will be returned and the same error will be encountered again. If the exception occurs in the main function, the exception cannot be processed by the caller function, so the Dynamic Virtual Machine (runtime system) will stop the program.
DOUBLECLICK attribute – to be used to send a specific action when the user double-clicks on a row in a TABLE
or SCROLLGRID
.
A new MS SQL SERVER NATIVE CLIENT DRIVER (SNC) – to be used with MS SQL Server 2005 instead of the MSV driver and ignores table columns of a given type in fgldbsch
. Thefgldbsch
tool now supports a new X conversion code to ignore table columns of a specific data type. This is useful for ROWID
-like columns such as MS SQL Server's UNIQUEIDENTIFIER
columns.
SQL INTERRUPT ON – is now supported for all databases providing a mechanism to cancel long running queries. In the past, this was only available for Oracle, PostgreSQL and Informix. This feature is now also supported by Genero db 3.80 (FY07 Q3), MS SQL Server 2005 (SNC driver only) and IBM DB2 UDB. Neither MySQL nor Sybase ASA provide an SQL INTERRUPT
facility. When an SQL
statement is interrupted, FGL
sets SQLCA.SQLCODE
to -213
. See documentation (SQL Programming) for more details.
STACK TRACE – the class method base.Application.getStackTrace()
returns the stack trace of the program flow. This can be useful for debugging applications.
The CLIENT SOCKET interface in channel – the base.Channel built-in class now provides a client socket connection with the openClientSocket()
method.
N.B. this function is ONLY provided to establish a client connection to a server. Data flow is based on the current character set (locale) and only works with ASCII-based protocols or when the server uses the same character set as the application. See Channels documentation for more details.
NULL POINTER EXCEPTIONS – in order to avoid fatal NULL
pointer errors caused by trying to call an object method with a variable that does not reference an object (ie. contains a NULL, error–8083
), trap this exception with WHENEVER ERROR
.
Click here for more details on these new features.
Genero Web Client v2.10
Major work has been undertaken to the rendering engine of the Genero Web Client (GWC) in order to minimize the differences with the Genero Desktop Client (GDC) and support all widgets. In addition support is provided for the following features:
- Multiple dialogs
- An AJAX framework
- Single Sign-On (SSO)
- File transfer
- User configurable forms for browser specific tuning:
- Embed HTML and CSS code
- Standard configurations provided:
- ‘Web 2.0’: Internet Explorer, Firefox, Safari, Opera
- ‘Mobile’: PDA, smartphone
- All GDC widgets supported
N.B. .4st style files, COM objects and Canvas not supported
Genero Web Services v2.10
The Genero XML Extension Library (XML) - is a new feature providing classes and methods to perform low level functions:
- XML manipulation with a W3C Document Object Model (DOM) API,
- XML manipulation with a Streaming API for XML (StAX),
- validation of DOM documents against XML Schemas,
- serialization of 4GL variables in XML,
- creation of XML schemas corresponding to 4GL variables.
Low-level XML over HTTP client communication (COM)
- The Genero Web Services COM library provides two classes: HTTPXmlRequest and HTTPXmlResponse to perform low-level XML over HTTP communications on the client side. This allows communication between applications using the core Web technology, taking advantage of the large installed base of tools that can process XML over HTTP as well as SOAP over HTTP.
- Specific streaming methods are also available to improve the communication by sending XML to the network even if the serialization process is not yet finished, as well as for the deserialization process.
Generating a low-level client stub from WSDL
- The fglwsdl
tool generates all client stubs with the low-level HTTPXmlRequest
andHTTPXmlResponse
classes of the COM
library to perform HTTP communications. The low-level generated stub also takes advantage of the streaming methods, if Document Style
or RPC-Literalweb services are performed. In the case of RPC-Encoded
web services, streaming is not possible because nodes can have references to other nodes in the XML document, requiring the entire document in memory to perform serialization or deserialization.
Generation of data types from XML schemas (XSD)
- Genero Web Services Extension provides an enhanced fglwsdl
tool that is able to generate 4GL data types from an XML schema. The data types can then be used in your application to be serialized or deserialized in XML. The resulting XML is a valid instance of that XML schema, and validation with an XML ‘validator’ will succeed.
Best Regards,
Four Js Development Tools