June 10, 2015

In This Issue

Synergy/DE 10.3.1a is Available on All Platforms for Download
The Results are In!
DBL's Long-Standing Synergy with Visual Studio
Source Control Becomes Source of Pride
Where.In Is Where It's At
Platform News
Stay up-to-date on the latest Synergex information & news

Synergy/DE 10.3.1a Is Available on All Platforms for Download

Announced at the recent Synergy DevPartner Conference, this patch delivers significant improvements and includes

  • A new iOS Application project template to help you create iOS executables. This project template has code for a simple working iOS application that includes a basic implementation of device licensing.
  • A new ERASE_ON_DELETE file creation option for the ISAMC routine, the bldism utility, and XDL keyword files. This option enables you to erase (i.e., null out) records, instead of having them just marked as deleted. (When a record is marked as deleted, its contents remain in the file until the space is reused.)
  • Support for the new debugger engine in Visual Studio 2015 RC.


The Results Are In!

See what attendees at the recent Synergy DevPartner Conference had to say...

“This was my first conference—I had no idea what I was missing. The conference far exceeded my expectations.” - Denis Hodgkins, VizTech

“If you’re not coming to the Synergy developers’ conference, you are probably not aware of all of the development alternatives that are available to you.” - Bill Ferris, CSA Data Solutions

Read all the testimonials.

Synergy DevPartner Conference 2016 - 30th

We’ve already started planning next year’s conference. Be sure to put it in your plans for 2016. Stay tuned to Synergy-e-News for details!

DBL's Long-Standing Synergy with Visual Studio

Synergex CTO blogs about our history with Visual Studio

We’ve long fostered a close relationship with Microsoft through their VSIP program, which has enabled us to pioneer many aspects of language integration with Visual Studio. We have pushed the envelope in this area farther than any other non-Microsoft language. With the recent release of Visual Studio 2015 RC, we published an article summarizing our history with Visual Studio. We are delighted that Microsoft picked up this article and blogged about it in the VC++ blog.

Read the rest of the Synergex CTO blog.

Source Control Becomes Source of Pride

Fleet Factors improves processes, productivity after PSG engagement

Founded in 1975, Fleet Factors Ltd. takes pride in being the “first-choice supplier to the vehicle parts and refinish market” in the UK. In addition to selling hundreds of automotive parts and consumable products and providing vehicle repair workshops on a variety of topics, Fleet Factors also develops the StoresManagement system, which provides its customers with an integrated system process that shares data; manages accounting functions; and processes stock, sales, and purchase orders, all geared towards the automotive industry. StoresManagement modular applications are written in Synergy/DE on Windows.

About a year ago, Fleet Factors asked Synergex’s Professional Services Group (PSG) to help them improve their development process. The Fleet Factors development group didn’t have a team-wide process for source code control or management, and code modifications were made directly to live source files. Without a procedure in place to ensure that software changes were monitored, tracked, and tested before they were released, errors could easily be introduced and propagated. Fleet Factors wanted a formal process for software changes and a way of locking down their system.

PSG worked with the Fleet Factors development team to review current practices. They identified several areas for improvement, the most significant being source control management and testing. A source control management system is essential to ensure that code changes are traceable and to provide structure for testing and release procedures across a development team. PSG recommended a product called SourceGear Vault, which offers an archive-centric development environment that fully integrates with Synergy/DE Professional Series Workbench and Microsoft Visual Studio. Changes to the source code can be tracked to identify who changed what, when, and why. SourceGear Vault also enables a previous version of the archived software to be restored if changes introduce a problem. The Fleet Factors development team installed and configured this system, and PSG provided full training.

With the SourceGear Vault system in place, the local desktop system for each developer at Fleet Factors now has a completely private development environment. To modify code, the developer must check out source files from the archive. No other team member can modify the code in the checked-out files, which prevents multiple developers from changing the same source files. By checking modified code back in to the archive system, the developer confirms that he has completed the work to the best of his abilities, tested the changes he’s made, and verified the continued integrity of the software.

PSG also recommended building and maintaining a virtual server with a complete execution environment for the sole purpose of testing software. Following this advice, Fleet Factors configured a virtual testing server and licensed it for Synergex products. Now when software is modified, the changed software is built and released to the test area. It is eligible for release to the live production server only when testing is completed, and the software is labeled, versioned, and released on a regular schedule. This process does not preclude the ability to provide a hot-fix update to critical issues, but these are limited and are only allowed with good reason and with the consent of the release engineer. To ensure software integrity, only the release engineer can put software live.

The focus on source control management has enabled Fleet Factors to better control software development, which has reduced the number of errors and issues reported. They now have a defined process built around the source control system that ensures that nothing changes in the system until it is approved, and the software is always tested before it hits the live system. Gary Norris, Company Director, says that the PSG engagement was the catalyst for change. “It gave us the confidence and the knowledge to introduce the new changes into our business smoothly.”

The benefits of the new system and processes are obvious. “Everyone is really happy,” states Gary. “The directors are delighted with the improvements that have been made, especially from a risk and security standpoint but also for the productivity of the team. It’s a much more effective way of working. The whole process has made the team be more exact about what they do. Previously if a programming error was made, there was no way of identifying the origin, which created ambiguity. Now every program change is fully traceable with a unique fingerprint, and the development team can reflect on any issues and learn from them. Accuracy, efficiency, and productivity have continued to improve. As a result, error rates are very low, and the risk to the business is greatly reduced.”

For more information about Fleet Feet’s new source control system, or to discuss doing something similar at your company, contact your Synergy/DE account manager.

Where.In Is Where It’s At

Using Select Where.In to optimize your code

By Galen Carpenter, Senior Systems Software Engineer

The Select statement is an important tool for speeding up an application. For performance, a properly optimized Select statement can be better than writing your own loop to read data from your Synergy DBMS ISAM files. It’s especially important when using xfServer, as all of the reading and selection occurs on the server, with only the desired data being sent over the network to the client. The following environment variables can further improve xfServer performance with Select:

  • SCSPREFETCH allows the server to send multiple records at once to the client.
  • SCSCOMPR causes the record(s) to be compressed when transferred from the server to the client.

The Where.In clause is a useful way to find the match of several values for a specified field. When you need to compare a field against multiple values, you can specify each comparison separately in the expression, but the Where.In syntax makes it easier to read and understand the code. For example:

(Where)((fld .eqs. “AAA”) .or. (fld .eqs. “BBB”) .or. (fld .eqs. “CCC”))

is simpler written like this:

Where.In(fld, “AAA”, “BBB”, “CCC”)

This simplified form is expanded to the first form (with the .OR. operators) behind the scenes to perform the operation.

The Select statement optimizes access if the file is an ISAM file and fields in the Where.In expression are keys in the ISAM file. But previously the use of .OR. disabled all key field optimization. With Synergy 10.3.1, however, some Select Where expressions that use .OR are optimized. For optimization to occur, comparison operators must be .EQS. or .EQ., all comparisons must use the same field which must be a key, and comparisons must be separated by the .OR. operator. With the above example, the Select can create a series of FINDs (for records matching each of the values) and READs (for fields with the same value).

Even more complex expressions can be optimized. Take the following example:

Where.In(fld, 3, 4, 5) .and. ((fld2 .eq. “NY”) .or. (fld2 .eq. "NJ"))

By duplicating the .AND. portion of the expression with each .OR. comparison, the example results in this:

((fld .eq. 3) .and. ((fld2 .eq. “NY”) .or. (fld2 .eq. "NJ"))) .or.

((fld .eq. 4) .and. ((fld2 .eq. “NY”) .or. (fld2 .eq. "NJ"))) .or.

((fld .eq. 5) .and. ((fld2 .eq. “NY”) .or. (fld2 .eq. "NJ")))

The value comparisons occur first, followed by .AND. expressions. The .AND. expression can be complex, so be sure to use parentheses in the Where expression to ensure that the .AND. has precedence over any .OR..

If any of the following changes were made to the above example, optimization would no longer occur:

  • Making the key case-insensitive
  • Replacing the .AND. with .OR. (because then either side being true would make a valid match, and the entire file would need to be read instead of only a subset)
  • Placing a .NOT. in front of Where.In (which would invert the selection)

To find out if Select has been optimized, use the DBG_SELECT environment variable to log optimization details. (You can control where the log is written by setting the DBG_SELECT_FILE environment variable.)

And note that the following rules apply:

  • If two Where.In clauses are specified in the same Where with different keys, Where.Keynum can be used to specify which key to use for optimization.
  • If a partial key is specified, it must start at the beginning of the key field and must not be missing any segments in the middle for optimization to occur.
  • If two Where.In clauses using the same key field are separated by .OR., they will be combined into a single Where.In with all of the comparison values from both.

As you can see, Select Where.In can be a very powerful tool. If you want your code to run more efficiently (and who doesn’t?), try it in your own application soon. 

You can find more information about Select Where.In here or in the “System-Supplied Classes” chapter of your Synergy DBL Language Reference Manual.

Platform News

Microsoft circles July 29 as Windows 10 release date
Windows 8, 8.1 combined beat XP for first time
Visual Studio code editor comes to Mac, Linux
VMS Software, Inc. launches new version of OpenVMS operating system worldwide

Note that Synergy/DE does not support this OpenVMS release. We have been following VMS Software’s activities and have talked with our OpenVMS customers about their platform plans, and at this point we do not have a business case for adding this support. We encourage you to provide input on this topic by contacting your Synergy account manager.

Integrating bulletproof security into app development