Synergy/DE 10.1 has been released!
V10.1 lets you take your applications wherever you want to go.
Synergy/DE 10.1 adds exciting new features to your already powerful Synergy/DE toolset. With features like Change Tracking, Windows 8 support, and Synergy .NET enhancements, you can add significant new value to your proven applications. And productivity features like multi-user Repository and improvements to the C# to Synergy code converter make it even easier for you to develop great software.
Version 10.1 is a significant milestone for the Synergy/DE community. Because you’ve continually advanced your applications with Synergy/DE, and provided us with feedback along the way, together we’ve been able to bring Synergy/DE to what it is today—a modern, productive, OO developer tool suite that takes advantage of the latest industry technologies and enables you to do the same.
New features in Synergy/DE 10.1 include:
- Change tracking. You can track the changes made to your Synergy DBMS ISAM files and then save and restore snapshots of your data. This powerful feature can be used to implement database replication, “end-of-period processing” (with no interruption), or any other function that makes use of data snapshots.
- Enhancements to HTTP/HTTPS API. New client-side API routines make it easier for you to write HTTP/HTTPS code (e.g., using strings instead of memory handles) and give the ability to interact with REST-based web services.
- Multi-user repository. Multiple developers can now update the same repository concurrently.
- Windows 8 support. Enables you to offer Windows 8 support to your users. Includes support for Windows Store application deployment.
- Synergy DBMS enhancements. New Synergy DBMS ISAM revision provides many new features to help you manage your Synergy DBMS data. Includes new key types and performance improvements.
- Synergy .NET enhancements. Synergy .NET gives you a path to dramatically advance your applications, providing access to all of the resources available to .NET applications. You can add a new UI, create Synergy .NET class libraries, integrate with C# assemblies, and much more. With Synergy/DE 10.1, Synergy .NET is better than ever with new features like asynchronous processing (for improved performance) and YIELD (which enables methods to return collections item by item).
- Visual Studio 2012 support. Includes support for the latest Visual Studio features, performance improvements, and support for Windows Store application deployment. Synergex continues to work closely with Microsoft to ensure seamless integration with the latest Visual Studio releases.
- Improvements to the C# to Synergy Code Converter. With v10 support for more C# constructs, you can make use of even more C# examples when writing new Synergy .NET code or getting up to speed on developing with Synergy .NET. Also includes a new C# to Synergy solution converter that enables you to convert entire solutions.
Here’s what customers are saying about Synergy/DE 10.1. (For additional quotes, visit our website.)
“Windows 8 support is definitely a needed requirement for our customer base! We are also excited about the Change Tracking feature and the different possibilities that are now open for us to improve some of our old processes…. “
Clint Rader
Jack Henry & Associates, Inc.
“With Synergy/DE as our development toolset, we are able to retain our Synergy/DE investment, evolve our applications, and keep up with our competitors. We are planning to ship a new dashboard product in the first quarter 2013 written entirely in Synergy .NET.”
Steven Parish
BusinessCraft Pty Ltd
Where do you want to go?
With the technologies and tools available in Synergy/DE 10.1, now is the perfect time to consider new opportunities for your Synergy solutions. Contact us to discuss what’s possible.
Go to the Synergy/DE 10.1 website for more information about the new release.
Download Synergy/DE 10.1 now.
Nullable ain't nothin'
How to use nullable types
By Bob Studer, Senior Synergy/DE Developer
Synergy/DE 10.1 offers improved support for nullable types. This article will explain what nullable types are and how to use them.
With variables of value types, there is typically no way to tell that a value is undefined, or not set. If you have a Boolean variable, for example, it can either be true or false. But if you haven’t set it yet, it is set to false anyway — and there’s no way to tell the difference. At this point, you may want a three-state Boolean: true, false, and ^NULL, and that’s where nullable types become useful. If “undefined” is valid for a data field that’s a value type, a nullable type allows it without having to reserve one of the valid values of the type to mean “undefined.”
That’s the function of nullable types: They essentially add ^NULL to the possible values that a value type can assume. A nullable int, for example, can contain the values -2147483648 to 2147483647 and ^NULL. (Prior to version 10.1, you would have had to, in many cases, use the Value and HasValue properties of the variable to check this.)
A nullable type can be made from any CLS value type. In Synergy DBL on .NET, you can declare a nullable type in one of two ways: as a generic type or by appending a question mark (?) to the end of the value type. For example,
record
nbval, Nullable<boolean>
nival, int?
Nullable variables can be set just like any other value type. They can also be set to ^NULL, which sets them back to the null state:
Nbval = true
Nival = ^NULL
You can test to see if a nullable variable is undefined by comparing it with ^NULL:
if (nival == ^NULL) console.writeline(“nival is not set”)
You can also assign a nullable type to a non-nullable field of the same base type:
Data isRead, Boolean?
Data state, Boolean
isRead = true
state = isRead
If the nullable type is in its null state, the assignment will result in the value type field being set to the default value for the type, which in the case of Boolean is false.
The subroutine below takes a nullable Boolean as an argument, and a string to use as a name will print out the current state of the argument passed in.
subroutine WriteState
arg, boolean?
name, string
proc
console.write(name)
if (arg == ^NULL) then
console.writeline(" is ^NULL")
else
if (arg) then
console.writeline(" is true")
else
console.writeline(" is false")
end
In the first IF statement, if arg is ^NULL, that fact is written out. Otherwise, if the value of arg is true, the statement that writes “ is true” is executed; if not, it’s reported to be false.
So now you can tell the difference!
For more information about nullable types, see the Synergy Language Reference Manual.
For more information about Synergy/DE 10.1 features, see our web site.