You are here: Home News & Events News 'Hydra4GL' Full Release Available Now
Document Actions

'Hydra4GL' Full Release Available Now

'Hydra4GL' 4.3 was released on the 6th February 2008. The Beta Testing Phase is now completed & closed.

'Hydra4GL' 4.3 is now available to download from our website. Click here to go go to the secure downloads area and enter your login details to download.

Improvements made to 'Hydra4GL' since the last release are detailed below:


‘Hydra4GL‘ 4.3 - A Team Work Project

A team consisting of 4GL business application developers/ customers and Querix experts were challenged to raise the capabilities of 4GL to new levels. With the new version of ‘Hydra4GL’™ they achieved more than was anticipated.

team_01_300.jpg

The ‘Hydra4GL’ 4.3 suite boasts a 4GL compiler, an integrated design environment, and MS-Windows® and Java®-based graphical thin clients, all originating from the Informix 4GL® and BDS® development languages.

In the past few decades many programming languages have evolved but each only dedicating or rather limiting itself to a particular environment or infrastructure. With ever growing competition and continually changing requirements, time is simply too short and expensive to learn and deploy new languages over and over in a bid to achieve the same goal.

‘Hydra4GL’ is much more than just a programming language; it is a business application infrastructure which allows the developer to create highly robust and fast performing enterprise applications. This makes for rapid and cost effective programming. You will be freed from the cumbersome environmental aspects of platforms, databases and infrastructure.

What Were the Objectives?

In conjunction with our partners and customers, Querix focused on the following three major objectives to be fulfilled by ‘Hydra4GL’ 4.3:chess_01_300.jpg

  • Minimising dependency on static scripting, Active X controls and Java Beans
  • Enhancing ‘Hydra4GL’ to become a more dynamic and flexible programming language.
  • Provide a modern look and feel for application users

What are the Enhancements?

The performance and cost effectiveness of developing in ‘Hydra4GL’ has been enhanced in a number of ways: puzzle_01_300.jpg

  • Dynamic Combo Boxes with optional validation rules
  • Dynamic Toolbar
  • Dynamic Context Menu
  • Modern looking and operating Grid Control
  • Fglprofile server configuration additions
  • New GUI application server with enhanced security Modes including built-in ‘login’ procedure
  • Over 35 new functions
  • New Form extensions
  • New Script options
  • And more...

    Context Sensitive Toolbar and Mouse Menu

    The application now has full control of the appearance and behaviour of the graphical Toolbars. Using a rich set of functions and optional form extensions, Toolbar icons can now be displayed, removed and shown as enabled or disabled at any time during program execution. Toolbar icons have properties to show an image, label, tooltip and its position. gd_contact_context_02_300.jpg

    Icon Size and Location

    The pixel size of an icon and the location of the Toolbar (above or below the ring menu) can also be defined to suit the user’s needs.

    Toolbar Dividers

    Toolbar dividers can be placed and removed using normal function calls.

    The Context Menu

    The dynamic mouse right-click Context Menu can also inherit the key label definitions. It takes a single line of script code to display the Toolbar, Context Menu or both.




    Dynamic Combo Boxes

    combo_list_box_00_org.jpg

    Dynamic Management of Combo List Boxes

    Previously, in ‘Hydra4GL’ 3.0 - 4.2, Combo Boxes were populated statically using an ’Include’ statement as part of the form file. In ‘Hydra4GL’ 4.3, Combo widgets no longer carry this limitation. In other words, Combo Box entries are manageable with standard 4GL function calls. There is a whole range of built in functions to insert, delete, sort and search Combo Box list entries.

    combo_list_box_02_300.jpg

    Optional Server Side Validation

    The server side field validation can be turned off to allow the entry of values freely or it is possible to pick one from the list.

    Combo Box Navigation

    Keyboard cursor keys can navigate through the Combo list with a single keystroke, leading to the entry beginning with the key pressed. Combo Box navigation is flexible to support mouse selection, cursor key selection or by typing in the corresponding list item.




    Fglprofile Configuration File Enhancements

    The GUI server configuration file fglprofile includes further customisable options such as:fglprofile_01_300_300dpi.jpg

    • Conditions for auto-generated list Combo Boxes such as field width and list size
    • Maximum list size of auto-generated Combo Boxes
    • Lazy Server Cache control - File caching is now tunable to suit the developer’s needs
    • Key label definitions
    • Automatic Operating System file format
    • Grid control data page size
    • And many more...



    4GL Attributes

    gd_attrib3_blue_01_300.jpg

    Previous versions of ‘Hydra4GL’ ignored the ‘underline’,

    ‘reverse’ and ‘bold’ attributes. With version 4.3 however, these attributes are fully supported in 4GL display statements, Form definitions and scripting. The inclusion of these attributes

    allows for even more design options for the developer.




    Modern Grid Control

    Classic Screen Array And Grid Control

    ‘Hydra4GL’ 4.3 has improved the appearance, usability and functionality of traditional Screen Arrays with the introduction of the modern Screen Grids functionality.

    gd_cont_classic_grid_01_300.jpg gd_cont_modern_grid_01_300.jpg

    Data Transmission Between Grid Control And Server

    This not only enhances the visual presentation of data, but makes the way data is sent to the client more efficient. Instead of sending only data required for the current view, as is the case in Screen Arrays, all the data is sent at once (with customisable limitations in case of large amounts of data) meaning scrolling through the Screen Grids does not require resending all the data.

    Using the modern Grid control means the developer can choose between:

    • Sending all Grid data to the client
    • Sending data to the client in chunks of a specified size

    Grid Column Resize

    The new Grid control not only brings visual enhancements to the graphical user interface, it also adds new functionality and capabilities. The developer can control whether the user should be able to resize the columns and if so, whether these changes should be stored in the local registry for future application sessions. The Grid resize helps to manage a larger set of data on the screen.

    Grid Column Header

    The Grid column header labels can be populated

    statically and dynamically including the alignment using functions and form field attributes. The developer is able to attach an event (key or action) to a column header which in the case of a mouse click, triggers the corresponding event. The Grid header can also be removed if and when desired.

    grid_resize_ex1_01_org.jpg grid_resize_ex1_02_org.jpg









    Exporting Of Grid Datagd_grid_export_all_c_01_300.jpg

    The Grid control functions offer the developer the opportunity to cater for Grid data export. Grid data can be passed on to other applications for further processing and reporting purposes.

    Export Data Range

    The data range can be specified by columns and limited between all data, or only the data currently displayed in the Grid control.

    Supported Data Format

    Supported data formats are standard text, CSV and HTML.

    Export Target

    The target location can be a file or simply the clipboard.


    Using graphical widgets in classic screen arraygd_settings_toolbar_01_300.jpg

    The classic screen array is still useful for applying graphical field widgets.









    Window Properties

    The developer now has full dynamic control of all window properties, such as:

    • Window Name, Color, Border...
    • Window size is not constrained by text mode
    • Window location absolute/relative
    • Titlebar label and icon
    • Titlebar window control buttons
    • Titlebar/Statusbar visible/hidden
    • Statusbar text
    • Window Toolbar and Context Menu
    • Text fonts and attributes ...


    Managing Windows And Forms Dynamically

    Dynamic Window and Form Handling

    ‘Hydra4GL’ allows the management of windows and forms dynamically. This gives the developer more control and increases efficiency as the code becomes more flexible and manageable. Functions with window operations can easily be written for code-reuse, which saves time and removes repetitive code fragments of window operations. All options and attributes available in the OPEN / CLOSE / CURRENT / CLEAR... Window/form statements are catered for and additional properties such as the Titlebar text can be managed too.

    Relative Window positions

    There is also the option to open windows absolute or relative to the parent window.



    Window Layout

    Padding and Scaling

    The Querix GUI clients define the Grid size and line padding by calculating the average character size of the specified default font. This can now be refined using script options for horizontal/vertical scale and line padding.

    scale_off_01_cut_240.jpg scale_on_01_cut_300.jpg





    Language Extensions

    OPTIONS ON CLOSE <option>

    ‘Hydra4GL’ 4.3 provides an extension to the ‘ON CLOSE’ gd_array_widget_01_300.jpg

    OPTIONS clause. This clause allows you to determine the action when the user clicks the close button on the top right corner of an application window.

    There are four possible actions to be taken when the button is clicked:

    • STOP
    • CONTINUE
    • CALL
    • KEY

    Comment Addition for 4js -> Querix migration

    When migrating from BDS/Genero™ to Querix, developers want to use the new functionality provided by Querix but not by FourJs®. In some cases you may be forced to support the old application for a period of time. For this reason, Querix has introduced another comment symbol:

    --*LET file = fgl_file_dialog("Export XML","default.xml","*.xml|*.txt")

    Code after the --* symbol will be ignored only by non-Querix 4GL tools.



    GUI Server Security Model

    Security_full.jpg

    The most significant change between the old 4.2 server and the new 4.3 server is the ability for a client to authenticate to the server. The server process runs as the user that has actually connected to the server rather than the traditional model, where the server processes were executed within the same user context as the service itself. To allow us to achieve this, the new listener introduces three types of authentication: none (classic), basic and full.

    When the GUI server is operating in full authentication mode, the client must specify a username and password. The server will then use a choice of authentication methods including PAM and Windows Active Directory Authentication.

    Encryption

    ‘Hydra4GL’ uses the Secure Sockets Layer to provide strong encryption over communication channels. After ‘Hydra4GL’ is installed, demonstration SSL certificates are installed with the Querix application server. The GUI application server can also be configured to use your own digitally signed certificates for maximum security.



    File Upload and Download

    With ‘Hydra4GL’ 4.3, the developer can integrate facilities to upload and download data between client and server using the functions fgl_upload() and fgl_download(). gd_blob_03_300.jpg

    The main benefit of having such functionality is that in a networked system, passing files between the application server and the client would usually require an intermediary technology that may present compatibility issues. With fgl_upload() and fgl_download() this is no longer an issue as there is a direct connection between the application and the client.




    File Dialogbox

    filedialog_01_300.jpgThe new function fgl_dialog_box() enables the user to open or save a file in a graphical environment. This function uses the native file dialog box provided by the operating system. This makes it look and feel familiar for any user. Additionally, users are able to select specific file extensions for opening or saving and users can now select multiple files to open from within the same file dialog box.



    File Management Functions

    fgl_basename()

    fgl_dirname()

    fgl_mkdir()

    fgl_rmdir()

    fgl_rm()

    fgl_mk()

    To complete the rich set of File/BLOB handling facilities on the server and on the client side, ‘Hydra4GL’ 4.3 also introduces functions for the management of files and directories. You are able to find the file name from a given path and similarly you can find just the directory from a given file path. You are also able to create and remove directories and paths. File attributes and status such as open, read, write... can be queried and assigned by the application.

    User Defined Types

    ‘Hydra4GL’ allows developers to define their own data types. These can be based either on primitive data types (such as INTEGER), or complex types such as structures and arrays. graph_01_300.jpg

    User defined types can also be derived from database objects, and even structured types defined within the RDBMS. User-defined data types can be reused throughout the program eliminating the need to repeat the definition of core business objects.

    Derivation / Inheritance

    It is also possible to derive new sub-types from these user defined data types. For example, if a record is defined as a type containing properties of a person, such as first name and last name, it is possible to create an employee type that shares these properties but also has additional properties, such as an employee number.

    Increases Productivity and Maintainability

    By allowing developers to define types that can be reused throughout the program, changes need only be made in one place and therefore code is more efficient and is easier to read and maintain.



    Easy Migration for Legacy BDS/D-4GL Applications

    To make the migration for 4GL applications written in the legacy 4GL-BDS language even easier, Querix took the basic concept of the BDS/Dynamic 4GL™ keylabels to control the Toolbar and Context Menus.compatibility_01_300.jpg

    In BDS, using key label functions, it is possible to assign a key name to a button label which is then displayed on the right hand side of the application window. The order of the buttons is dictated by the key value.

    Querix enhanced all these key label function calls and options to take on optional arguments for the image resource, the position and the visual enabled/disabled behaviour.

    To simplify working with key events, Querix has also increased the function key range to F1024.

    Additionally, named ‘Action’ events were introduced. This makes management of larger applications much easier. Developers no longer need to remember which function key corresponds to which action (i.e. F64 is print) as they can now be referenced with meaningful names i.e. ‘action print’.



    Field Related Enhancements

    Update variables with current field buffer

    The function fgl_dialog_update_data() can be called during an input statement to write back any field buffer data which are not committed at this stage.

    Cursor position retrieval and manipulation

    The field cursor position can now be fully controlled within 4GL.

    Ignore field conditions during navigations

    To increase the flexibility and behaviour when the user navigates through fields on a form, the function fgl_dialog_fieldorder() was introduced to control the navigation field order sequence. If any BEFORE and AFTER field validations should be triggered when jumping from a lower field to a higher field (i.e. when the cursor is located in field f1 and the user clicks field 5), the before and after field validations for field f2-4 can either be executed or ignored.

    fgl_dialog_update_data()

    This function writes all data from non-commited field buffers to their corresponding variable without leaving the INPUT statement.

    Selection of Disabled Fields

    It is possible to specify whether the user should be able to select disabled fields e.g. for copy/paste operations.

    Field Border Stylefield_border_all_02_300.jpg

    4.3 allows the choice of three field border styles which can be applied to all fields or individual fields. The three border style property values are 3D, FLAT and NONE.



    Field Order Logic

    The function fgl_dialog_field_order() and the fglprofile setting dialog.field_order are used to toggle between two different sets of events that occur when moving from one field to another. gd_con_calendar_01_300.jpg

    The normal behaviour is that traversing from one field to another will apply some before and some after logic for all other fields between them. This behaviour can be altered where only the after logic of the current field and the before logic of the destination field is triggered.

    This allows the user to freely navigate between fields using the mouse avoiding unnecessary field events.



    Hotlinks

    Within the config section of a form definition .per file it is possible to define a ‘hotlink’ widget. This function allows the developer to set a label with its class determining whether the label will, when clicked on, either open a web link in a browser with a specified URL, open a file explorer, or perform a key or an action event.gd_co_countr_hotlink_01_org.jpg

    Dynamic Update / Manipulation

    The standard 4GL DISPLAY TO statement can be used to populate and manipulate the hotlink ‘Label’ text and the hotlink event (which can be a key event, action event or a web-browser URL launch call).

    Using Hotlinks in Screen Arrays

    There is no limitation to where hotlink widgets can be used. One can even display a screen record which uses one column in the form of a hotlink widget to trigger a data related event.



    Miscellaneous New Functions and Extensions

    Over 35 new Functions and Function Extensions have been introduced with the release of ‘Hydra4GL’ 4.3, including:

    fgl_random()

    Function fgl_random() generates a random number between (and including) two minimum and maximum numbers passed to it.

    fgl_set_keylabel()

    Additional arguments such as image, location and static behaviour can be specified.

    fgl_grid_header()

    Manage Grid Column Header labels and alignment.

    sizeof()

    Query an array for its size.

    fgl_upload() and fgl_download()

    Transfer files between client and application server.

    fgl_settitle()

    You can now manipulate the window titlebar label of any window.

    fgl_dialog_update_data()

    This function writes all data from non-commited field buffers to their corresponding variable without leaving the INPUT statement.



    Client Side Print

    gd_co_print_02_300.jpgThe advanced client systems Phoenix and Chimera are no longer limited to printing ASCII text. The 4GL application can use static HTML files or create HTML files dynamically based on the contents of records/reports and print these on the client system specified printer / network printer.