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.
- 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.
- 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.
- 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.
- 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.
- 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
- 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
- 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.
- 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
- 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
- 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.
- 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.
-
%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
-
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
-
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.)
-
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
- New functions ABS, BITAND, BITOR, BITXOR, REPLACE, and REVERSE
- AM/PM mask for TO_CHAR
- New SDBMS9 license mnemonic to be used for xfODBC and Synergy/DE Data Provider for .NET
-
/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