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 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:
By using this new
DIALOG statement, it is now possible to combine the power of all these statements into a single form.
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.
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 after
END 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, the traditional mechanism of handling exceptions was via the
WHENEVER ERROR GOTOstatement as follows:
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
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 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
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,
-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
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 W
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
fglwsdl tool generates all client stubs with the low-level
HTTPXmlResponse 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.
Four Js Development Tools