9.3 Features

Synergy/DE 9.3 delivers a number of important new features that enable you to improve security, performance, and productivity. Select each feature below to see additional details.

To see a list of 9.3.1 patch changes, click here.

  • Encryption
  • Securely store data to files and securely transfer network data

    With the increase in computer system security regulations and end-user security concerns, data encryption has become a requirement for many business solutions. You can now encrypt sensitive Synergy/DE data using industry-standard cipher techniques in three application areas:

    • 1. When storing data fields to a Synergy DBMS file (ISAM or relative)

      You can prevent unauthorized access to your data.
    • 2. When transfering data between your client application and xfServer

      You can encrypt all data packets to and from the server or just data packets on specific channels.
    • 3. When transferring data between your xfNetLink client application and xfServerPlus

      You can encrypt (parameter and return value data for) all methods or you can select specific methods to encrypt.

    Synergy/DE encryption gives you control over what you encrypt and what level of encryption you use.

    It interfaces with OpenSSL and supports 3DES (Triple DES or Triple Data Encryption Algorithm) running in triple CBC (cipher-block chaining) mode and AES (Advanced Encryption Standard) running in CBC mode.

    Note that we recommend that you not encrypt key fields in records destined for ISAM files because encrypted key data can not index properly.

    To use encryption, the server and all clients must be version 9.3 or higher.

  • Select class
  • Simplify data selection logic and significantly improve remote file access

    The Select class is a group of classes and class members that enable you to simplify your selection logic and significantly improve the performance of remote file access. It supports SQL-like data selection and enables you to read only those records that meet certain criteria.  Here’s an example of the new Select class:

    custs = new From(ch,cusmas)
    noNewSales = new Select(custs,(where)status.
    &eq.'A'.and. last_sale.year < lastYear)
    foreach cusmas in noNewSales
    call printLine

    The From object describes the file to use and the record layout. You can also optionally use Where class objects (to define selection criteria) and OrderBy class objects (to define the order of the records).

    The Select class outperforms a typical READS loop because the filtering is done at a lower system level. This increase in performance can be very significant when you access remote data via xfServer because the I/O layer on the server is now doing the filtering, rather than returning the data to the client to process.

    You can optionally specify a “sparse record” (a subset of the record) to be retrieved, in which case only the specified fields will be returned, and all other fields will be blanked out. The SparseRecord method is most effective when you’re using xfServer and only parts of the record are needed. Only those fields specified are transferred across the network.

  • GRFA and optimistic concurrency
  • Improve I/O performance when using optimistic locking

    The GRFA (global RFA) consists of the standard 6-byte RFA and a new 4-byte CRC (“cyclic redundancy check” code).

    Typically with optimistic locking, records read during a transaction are immediately unlocked. And at the completion of the transaction, the records are re-acquired, validated, and then written out. So a copy of each record must be kept in memory so that it can be compared against the current record on disk before committing the changed record. Now with the new GRFA, you no longer need to keep copies of the records in memory. Instead, a READ statement can read a record and its CRC and then, based on that CRC, attempt to re-acquire the same record on a subsequent READ. If the record has changed between reads, the CRC will no longer match and a trappable error will result.

    We highly recommend optimistic locking to decrease lock contention issues, and this new GRFA feature enables you to create a more efficient implementation.

  • Improved xfServerPlus development
  • Simplify development with automated Method Catalog updates, enumerations, and more

    A number of 9.3 features will make it easier for you to develop your xfServerPlus/xfNetLink applications.

    • New language attributes and the new dbl2xml utility improve how you update your Synergy Method Catalog (SMC) and keep it up to date. You will no longer need to manually edit your methods via the Method Definition Utility (MDU).

      The dbl2xml utility creates an XML file with information about the routines in your source code. You can update your SMC with this information using the existing MDU import function. You can also add the dbl2xml and MDU commands to your build process to automate this SMC update process and make it happen every time you compile. By automating this process, your code and your SMC are less likely to get out of sync.

      There are new language attributes, parameter modifiers, and documentation comments for you to add to your code when using this new update process. These enable your code to provide all the routine information required by the SMC. Also, the documentation comments can be used to create API documentation for your .NET or Java components.
    • Support for enumerations (defined in your repository)
      • as parameters and method return types within your .NET applications.
      • as fields within a structure parameter
      An enumeration is a set of related values. It has a name and one or more members associated with it. The members may have values assigned to them, or you can let the compiler assign them.

      Enumerations are a nice productivity feature. They give you better control of your code, they make code more readable. For example, instead of a “status_flag”’s value being 1, 2, 3, or 4, it can be “active”, “inactive”, “stalled”, or “dead”.
    • Support for a boolean data type within a structure
    Note that when you upgrade to 9.3, you will need to convert your SMCs to accommodate the support for enumerations.

  • Workbench enhancements
  • Develop more efficiently with collapsible regions, project enhancements, and more

    There are numerous new features in the 9.3 Workbench that will give your development productivity a boost.

    • Upgrade to SlickEdit 14 (which brings you up to date with the latest SlickEdit version and also provides a number of the features)
    • Project enhancements
      • New Synergy/DE Options dialog for specifying project-specific options for the compiler, linker, and librarian
      • New project types for building ELBs, OLBs, and applications
      • Full support for all compiler and dblproto options
    • Support for different build configurations
      • Debug, Release, 32-bit, and 64-bit
      • Ability to switch between 32-bit and 64-bit configurations
      • Ability to apply changes on Synergy/DE Options dialog to all configurations
    • New Compile All, Create Library, Prototype, and Synergy/DE options
    • On-demand prototype loading for improved tagging performance with large numbers of prototypes
    • Improvements to .NET Component project support
    • More control of keyword case during syntax expansion and keyword completion (users can specify current or previous functionality)
    • Collapsible region support (.REGION/.ENDREGION) so you can hide regions of code that you do not want to see
    • SlickEdit license key no longer required (the Workbench key will continue to provide license enforcement)
    • Support for XFPL_SMCPATH when determining default SMC path values in Workbench
  • Synergy Windows printing API enhancements
  • A number of new features in the Windows printing API make it easier for you to meet your users’ printing requirements.

    • Ability to detect a printer’s status, for example if it is offline
    • Ability to print text in other orientations.
    • Transparent background images -- enable you to overlap an image and text. Previously if you tried to print text over an image, it would wipe out an area of the image with the current background color.
    • Simpler method of filling an area with a background color. Currently, developers must create a solid pen of the same thickness as the region they wish to fill and then draw a line from one end of the region to another.
    • Mouse wheel support in print preview
  • Gennet support for partial classes
  • A new gennet option, -s, enables you to specify only the classes you will use, which will prevent gennet from building wrappers for large numbers of unused classes.

    The gennet utility generates Synergy classes that wrap the classes defined in a .NET assembly so you can use them in your Synergy applications. Previously gennet would generate wrappers for all the classes in the assembly. Now it can be much more efficient and only wrap the classes you specify.

    This new feature reduces the memory used, improves application efficiency and performance, and improves gennet performance.

  • Improvements to compiler prototyping
  • Look for better performance when compiling your prototyped files.

    • Binary-encoded prototype files
    • On-demand prototype loading for improved compilation speed
    • Reduced memory usage for prototyping and compilation of large numbers of files
  • Debugger enhancements
  • New features in the debugger will make it easier for you to troubleshoot issues.

    • Ability to control the View command’s output
    • Ability to copy/cut/paste text to/from the debug window
    • Ability to find the length of a variable
  • Ability to include IMPORTs and .DEFINES at the beginning ofcompilation units
  • The SYNUSERDEF environment variable makes it easier for you to apply .IMPORTs and .DEFINEs to multiple compilations.
    With it, you can specify a file for the compiler to include at the beginning of a compilation unit. This enables you to import multiple namespaces into a project without explicit IMPORT statements in your source code, as well as to define identifiers that will apply across all files in the compilation unit.

  • Ability to retrieve the version of the dblink utility used to build your application
  • You can now use listdbr or listelb to retrieve the version of the dblink utility used to create a DBR file.
    This can be helpful when debugging your application.
  • Language enhancements
  • %TIMEZONE, ability to .include enumerations, control over scrollbar display, and more
    • Ability for XCALL TRACEBACK to write the traceback information to a file instead of displaying it on the screen
    • %TIMEZONE, which returns the time zone of the current machine
    • Ability to .include enumerations from your repository
    • (*) pseudo array argument definitions
    • Addhandler and Removehandler for GENNET code
    • Control over scrollbar display (ability to turn on/off the horizontal and vertical scroll bars of a window independently of each other on Windows)
    • Ability to specify an initial value for the dimensioned NEW operation for dynamic arrays

      array = new myarray[10]{1,2,3,6,7}
    • Support for d28 and d28.28 variables (Previous maximum precision was 10)
    • Additional -qnet warnings
  • Repository enhancements
  • Support for new data types, enhanced “find” capabilities in list, and more
    • Support for declaring and associating enumerations with fields and templates
    • Support for new datatypes
      • Boolean
      • User-defined binary
      • Structfield
      • Enum
      • d28.28
    • Support for xfODBC “Null allowed” field attribute
    • Separate repository script library from repositories
    • Support for 999 fields per structure OR group
    • Enhanced “find” capabilities in lists
      • “Contains”-type search
      • “Find next” in all lists
      • Find now wraps to search the entire list
  • UI Toolkit enhancements
  • Ability to add Tooltips to buttons, ActiveX list enhancements, and more
    • Ability to determine whether a window or list is contained within any tabset (currently can tell if contained in a specific tabset but not “any” tabset)
    • Ability to retrieve toolbar and toolbar button information—for example, the names of buttons on a toolbar
    • %U_WINMETRICS returns height of tabs on tabset
    • Ability to suppress beeps
    • Ability to add ToolTips to buttons on a window
    • Ability to apply input processing renditions on Windows
    • Control over scrollbar display-- ability to turn on/off the horizontal and vertical scroll bars of a window independently of each other (currently, can only turn both on and off together) 
    • ActiveX list enhancements
      • Ability for up and down arrow keys to move by item rather than by line (items can have more than one line)
      • Ability to set the color of the non-list area
      • 32-bit Synergy/DE now defaults to the “new” ActiveX list introduced in 9.1.5a. (It no longer uses the FarPoint Spread OCX. The behavior and look of the new implementation is identical to that of the old implementation.)
  • Connectivity Series enhancements
  • xfODBC support for new data types; new functions ABS, BITAND, and more
    • xfODBC support for new Repository data types Boolean, struct, and user-defined binary
    • xfODBC support for new Repository “Null allowed” attribute
    • COUNT(*) optimization for Unix and Windows files
    • AM/PM mask for TO_CHAR
    • New SDBMS9 license mnemonic to be used for xfODBC and Synergy/DE Data Provider for .NET
  • Windows installation changes
  • /q MSI user-interface level option, support for 32-bit Client on 64-bit machine, and more
    • Support for /q MSI user-interface level for end-user deployment
      • Default product set and install location
      • Properties control license configuration
      • License Type
      • Licensee Name/Server Name
    • Support for 32-bit Synergy/DE Client on a 64-bit machine
    • Ability for a 64-bit Synergy/DE installation on a 64-bit machine to be shared by one or more 64-bit Synergy/DE clients
    • Upgrade to InstallShield 2010
    • Upgrade to Windows Installer 4.5

More information on Current Release
“I've found that working in the new object syntax in Synergy/DE version 9 has been very intuitive, for anyone who works in or has worked in the Visual Studio environment, without losing any of the familiarity with the Synergy/DE environment that we all know and work with every day.”

Chris Blundell
United Natural Foods, Inc.
Synergy/DE Overview
Professional Series
SQL Connection
Solution: The products and services you need to update to a new Synergy/DE version or a new operating system, or port to a new operating system.