News and Updates for Synergy/DE Developers

April 19, 2012


Synergy DevPartner Conference: Early bird discount ends tomorrow

Register today

Free code for Synergy developers

Calling C routines from Synergy and vice versa on OpenVMS


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



Liberated development

Create Synergy .NET apps for free

Synergy/DE tech tip

SELinux can prevent access to libraries used by Synergy/DE

Platform News

Read a selection of recent articles

Synergy DevPartner Conference: Early bird discount ends tomorrow

Register today

The Synergy DevPartner Conference is the annual not-to-be-missed event for Synergy developers. Join us May 22-24 in Chicago, Illinois, or June 12-14 in York, England, for three action-packed days filled with enlightening technical sessions, extensive hands-on workshops, and valuable networking opportunities. You will leave the conference with the skills and knowledge to immediately extend your Synergy/DE-based applications with the latest technologies.

Register before midnight tomorrow, April 20, to obtain the special early bird rate.

Synergy/DE 9.5.3 patch is now available

Includes important fixes and enhancements, including support for SQL Server 2012

Synergy/DE 9.5.3a is now available on Windows. Synergy Language Integration for Visual Studio and Synergy/DE Data Provider for .NET 9.5.3a are also now available.

This Windows-only patch for version 9.5.3 includes many important fixes throughout the Synergy/DE product set and is compatible with Microsoft’s beta release of Visual Studio 11. It also includes support for SQL Server 2012. We recommend that all customers using version 9.5, especially those using Synergy .NET, upgrade to this new version at their earliest convenience.

Download 9.5.3a
See list of changes in 9.5.3a.
Go to the Synergy/DE 9.5 site.
Online and hard-copy documentation is available for Synergy/DE 9.5.3. Download documentation on our Web site, or contact your Account Manager to order hardcopy versions.

Synergy DevPartner Conference
Practical magic: the transformation of a real world Unix application

See it for yourself at the upcoming Synergy DevPartner conference

At the upcoming Synergy DevPartner conference (May 22-24 in Chicago; June 12-14 in York) we will demonstrate how easy it is to migrate to Synergy/DE 9.5 and .NET, regardless of the platform you are on. Using an actual customer’s legacy application, we will then show you how you can quickly add capabilities to your new .NET application by incorporating the Synergy Windows printing API, PDF generation, and e-mail functionality.

This is just one of the exciting sessions scheduled for the conference. Visit the conference website to see the full agenda and to register.


Keeping up with industry security standards

UI Toolkit functionality in Synergy/DE 9.5.3 makes PCI compliance easier
by David Barron, Senior Systems Software Engineer

If your application accepts credit card data, PCI Data Security Standards (published by the Payment Card Industry Security Standards Council) now require you to implement buffer overrun checks. Buffer overruns are memory access errors, and buffer overrun checks can benefit any Synergy application, as these errors can be subtle and are generally difficult to track down. Symptoms can range from strange runtime behavior to an application crash. An application that runs fine on one machine may crash on another machine, it may behave differently from one day to the next (even when running on the same machine), and it may cause errors, such as “Invalid subscript” and “Index out of range.” The Synergy compiler and UI Toolkit already have bounds checking options to detect buffer overruns, and all applications in Synergy .NET use bounds checking that’s automatically provided by the dblnet compiler. But for 9.5.3 we’ve taken further steps to help you track down these bugs in traditional Synergy and comply with the new PCI standards. We now distribute three versions of the UI Toolkit library on Windows, two of which are built with Synergy compiler options for bounds checking.

Starting with 9.5.3, the standard distributed Toolkit library on Windows, tklib.elb, is built with one of the Synergy compiler options for bounds checking: -qstrict. This option enforces strict bounds checking on buffers and real arrays at runtime. It’s similar to setting DTK_BOUNDS=2 in the environment, but in this case, all of Toolkit is checked instead of just a few routines. It detects if insufficient data or too much data is passed to a Toolkit routine. For example, if a field is declared as a25 in a script or with IB_FIELD, and you pass an a20, Toolkit will generate an “Invalid subscript specified” error at runtime. Note that this is the default Toolkit library, so you don’t need to make any changes to build scripts to use it.

For even more thorough checking, we also now distribute a version of the UI Toolkit library that's built with the -qcheck compiler option. This option treats all arrays as real arrays, converts all arguments to real arrays, and checks all subscript ranging and dimension access to ensure that it does not exceed a declared size. If a Toolkit application expects 12 array items, for example, but only 11 are passed, Toolkit will generate an "Index out of bounds" error at runtime. To use this library, build your entire application using –qcheck, and link against WND:tklib_qcheck.elb instead of WND:tklib.elb. Note, however, that -qcheck is not generally recommended for production builds because it can have a negative effect performance. However, for PCI standards compliance, we recommend using this library and building your application with –qcheck for deployment as well as development despite any decreases to performance.

Whether or not your application accepts credit card data, we strongly recommend that you check for and fix buffer overruns. But what if bounds checking uncovers a large number of these, and you don't have enough time to fix them all before your application is released? If you’re not concerned with PCI standards compliance, you can temporarily use tklib_nostrict.elb, a version of the Toolkit library that’s built without –qstrict or -qcheck. To use this version of the UI Toolkit library, copy tklib_nostrict.elb as tklib.elb in the Toolkit directory. Do not rename the library, as this will cause the Windows Installer service to open and prompt for a reboot the first time you run a Toolkit application. Also, be sure to switch back to the default library and schedule time to fix these issues as we will be removing tklib_nostrict.elb from our distribution in our next major release.

For more information about Synergy/DE 9.5.3, click here.

Free code for Synergy developers

Demystifying ArrayLists

Are you still a little unsure about using ArrayLists? If so, check out the SynArrayList CodeExchange entry. This example shows you how to quickly store (and retrieve) your data or records in an ArrayList, how to sort the ArrayList, and even how to extend the functionality of Synergy ArrayLists for your own purposes.

For more information and the code, see CodeExchange. CodeExchange is available in the Synergy/DE Resource Center to supported Synergy/DE customers. Be sure to take advantage of this great resource, and don't forget to submit your own CodeExchange entries so that other Synergy developers can benefit from your cool code.

Synergy/DE tech tip

ILASM errors when trying to run dblnet

I have just received a new computer and installed Synergy/DE 9.5.1, but when I try running dblnet to compile my Synergy .NET code, I get the following error:

 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\ilasm' is not recognized as an internal or external command, operable program or batch file"

I have checked that path, and I can’t locate ilasm.exe. I also checked my installed applications, and I do have the .NET Framework 4 Client Profile installed. The Installation Configuration Guide says I need to have Microsoft .NET Framework version 4 if my Synergy .NET application targets Framework version 4, so why am I getting this error?


There are multiple distributions of Microsoft .NET Framework. The one you have installed, the Client Profile, is only for deployment—not for development.

You need to install the “full version” of Microsoft .NET Framework 4. This can either be downloaded from the Microsoft website or it will be automatically installed if you install Visual Studio on the system.

Note that the terminology that Microsoft uses on the website to designate the full and client distributions of the .NET Framework has changed over time. For example, in version 4, it is the Full Profile and Client Profile; for version 2 it was the SDK and the redistributable.


In honor of St. Patrick's Day, we want to know whether the following Windows application is wearing any green (not counting underwear!)

.include "DBLDIR:windows.def"
.include "WND:tools.def"
.define DARK_GREEN      ^x(007F00)
.define ORANGE          ^x(007FFF)
      id    ,int
      u_wincolor(D_SETCOLOR,  3, DARK_GREEN)
      u_wincolor(D_SETCOLOR,  4, ORANGE)
      u_rend(D_LOAD,  D_PALETTE, 3, 4, 3)
      w_proc(WP_CREATE,  id, "", 1, 40)
      w_area(id,  WA_COLOR, 3)
      w_proc(WP_CREATE,  id, "", 1, 40)
      w_area(id,  WA_COLOR, 3)
      u_window(D_PLACE,  id, 2, 1)
      w_proc(WP_CREATE,  id, "", 1, 40)
      w_area(id,  WA_COLOR, 3)
      w_disp(id,  "Happy St. Patrick's Day!")
      u_window(D_PLACE,  id, 5, 1)
      w_proc(WP_CREATE,  id, "", 1, 40)
      w_area(id,  WA_COLOR, 3)
      w_disp(id,  WD_COLOR, 3, "Happy St. Patrick's Day!")
      u_window(D_PLACE,  id, 8, 1)

So, is the program wearing green?

a. No—pinch it!
b. Yes—hand that app a Guinness!
c. The only thing this app is wearing is my patience!

Click to find the answer

Platform News


Visual Studio 11 Beta released

Windows 8 consumer preview highlights metro evolution

Microsoft doubles support lifespan for consumer Windows 7, Vista

Windows Server 8 to be storage-focused OS



Red Hat vs Oracle Linux support: 10 years is new standard

Zing JVM adds support for SUSE Linux Enterprise Server


Cloud security, big data, and mobile to dominate RSA conference

Apache 2.4 delivers more performance