SYNERGY-E-NEWS
News and Updates for Synergy/DE Developers

January 18, 2013

 

Synergy/DE 10.1 has been released!

V10.1 lets you take your applications wherever you want to go.

Read More


Synergy/DE Tech Tip

Bulding using a .NET DLL

Read More


Quiz

Synergy/DE pros, see if you can answer this question!

Take Quiz


Platform News

Read a selection of recent articles

Read More

 

 

Nullable ain't nothin'

How to use nullable types

Read More


The changing face of data

By Richard Morris, Senior Synergy/DE PSG Consultant

Read More


HTTP API Enhancements in version 10

By Steve Ives, Senior SynergyDE PSG Consultant

Read More


Did you receive your 2013 Synergex calendar?

If not, let us know!

Read More


twitter.com/synergyde

 

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.


The changing face of data

By Richard Morris, Senior Synergy/DE PSG Consultant

With the eagerly anticipated release of Synergy/DE version 10, we now have the ability to track and manage changes to Synergy DBMS data files. This new feature, Change Tracking, gives you the ability to track and monitor records within a file that have been modified, added, or deleted.

Read more in the PSG Blog.


HTTP API enhancements in version 10

By Steve Ives, Senior Synergy/DE PSG Consultant

In addition to introducing several totally new features, DBL 10.1 also includes enhancements to the client portion of the HTTP API. These enhancements make the API significantly easier to use, and also make it possible to achieve things that were not previously possible.

Read more in the PSG Blog.

Synergy/DE tech tip

Building using a .NET DLL

Question:

I'd like to use a .NET DLL in my Synergy program. How do I do that?

Answer:

To use a .NET DLL in a Synergy program, you’ll need to use gennet, which generates both a wrapper for the DLL and an “.inc” file to be included in your Synergy .NET program. Then you’ll .INCLUDE the .inc file in your program, and link your Synergy program to the wrapper. Here are the steps:

1. Run gennet on the .NET DLL:

gennet –o “gen_output.dbl” “.NET_ASSM.dll”

This produces a wrapper (.dbl) file and an include (.inc) file.

2. Run dblproto on the wrapper file you just created:

 dblproto “gen_output.dbl”

3. Compile the wrapper file using -qrelaxed:interop. This creates a .dbo file.

 dbl –qrelaxed:interop –o “gen_output.dbo” “gen_output.dbl”

4. Use dblink to create an .elb from the .dbo you just created.

dblink –l “gen_output.elb” “gen_output.dbo”

5. Include the .inc file (generated in the first step) at the top of your Synergy program:

.include “path:gen_output.inc”

6. Compile your Synergy program:

dbl –o “syncode.dbo” “syncode.dbl”

7. Link the .elb file you created in step 4 to your Synergy program:

dblink –o “syncode.dbr” “syncode.dbo” “gen_ouput.elb”

8. Run the .dbr file.

dbr syncode.dbr



Quiz

In traditional Synergy DBL on Windows, if a routine opens user32.dll using %DLL_OPEN but fails to close it using %DLL_CLOSE, what will happen when the routine is called more than once?

a. A "DLL already open" runtime error
b. A resource leak for each call
c. Just one resource leak for the DLL
d. Nothing special

 Click to read the answer


Did you receive your 2013 Synergex calendar?

If not, let us know!

Designed by local designer Dan Tirapelli of Crux Design and based on a photograph taken by photographer Owen Perry at Cox Bay in Tofino, British Columbia, this year's calendar builds on last year's theme of “no boundaries,” illustrating that there are no limits to where you can take your software applications with today’s Synergy/DE.



If you did not receive your Synergex 2013 calendar, or if you would like additional complimentary copies, please e-mail us at synergy@synergex.com. Include your address and the quantity you’d like, and we’ll send them right out to you.


Platform News

Read a selection of recent articles

Windows

Microsoft to fix critical Internet Explorer vulnerability today http://www.techspot.com/news/51324-microsoft-to-fix-critical-internet-explorer-vulnerability-today.html

Two months in: Windows 8 PC and tablet sales remain weak, slower adoption than Vista http://www.extremetech.com/computing/144584-two-months-in-windows-8-pc-and-tablet-sales-remain-weak-slower-adoption-than-vista

Microsoft exec defends Windows 8 sales pace
http://www.computerworld.com/s/article/9235498/Microsoft_exec_defends_Windows_8_sales_pace?taxonomyId=89

Microsoft may be stepping up the delivery pace http://news.cnet.com/8301-1001_3-57562126-92/microsoft-may-be-stepping-up-the-delivery-pace/

Microsoft kicks off 2013 with clutch of critical Windows updates
http://www.computerworld.com/s/article/9235461/Microsoft_kicks_off_2013_with_clutch_of_critical_Windows_updates?taxonomyId=89

PC sales are in decline, and in an alarming way for the first time http://www.extremetech.com/computing/145465-pc-sales-are-in-decline-and-in-an-alarming-way-for-the-first-time

Linux

Fedora 18 finally arrives
http://www.zdnet.com/fedora-18-finally-arrives-7000009845/

Red Hat ships Enterprise Linux 5.9
http://www.zdnet.com/red-hat-ships-enterprise-linux-5-9-7000009540/

Five predictions for Linux in 2013
http://www.computerworld.com/s/article/9235786/Five_predictions_for_Linux_in_2013?taxonomyId=89

Linux (slowly) comes to Windows 8 PCs with UEFI secure boot http://www.extremetech.com/computing/144204-linux-slowly-comes-to-windows-8-pcs-with-uefi-secure-boot

OpenVMS

OpenVMS MUP released for security issue
http://www.openvms.org/stories.php?story=12/12/03/8738786