Version History
Select the links below to see the features and fixes included with each Synergy/DE version specified.
Download the latest Synergy/DE versions from the Synergy/DE Resource Center (for customers with Developer Support and ALM; contact your account manager for more information.)
Download the latest Synergy/DE versions from the Synergy/DE Resource Center (for customers with Developer Support and ALM; contact your account manager for more information.)
Version History
- Synergy/DE 9.5.3 [Expand All | Collapse All]
- Synergy Language [Expand All Synergy Language | Collapse All Synergy Language]
- We added a new define, SYN_VERSION, to dbl.def in preparation for version 10. See the "Important Notes and Warnings" section for more information. [tr#32948]
- Analysis engine
- The .DEFINE resolution has been optimized to only use local fields and class fields. This means fields defined in imports will not give an .IFDEF true result, which is the same behavior as other languages. [tr#32492]
- (Windows) Using a CONST field of type enumeration as an initial value for another field caused a segmentation fault. This has been fixed. [tr#32989]
- Compilers (dbl & dblnet)
- This section includes changes that apply to both the dbl (traditional Synergy) and dblnet (Synergy .NET). See "Compiler (dbl)" and "Compiler (dblnet)" below for changes that apply ONLY to one or the other.
- Because the analysis engine is a core component of the compiler, see the "Analysis engine" section above for additional features and fixes.
- We added a new function, ^ARGPRECISION, to return the precision of an implied argument. [tr#32908]
- Using a multi-identifier path in an .IF directive with a comparison expression no longer causes a NOTCEXP error. [tr#31375]
- Using a member of a structure field within the same record as an overlay gave a WRNGRC error. Now the compiler allows a field to overlay a member of a structfield in the same record. [tr#32381]
- Casting an id and then calling it using indexer qualifiers (i.e., ((ArrayList)ovar)[0]) previously caused an NFND error. This has been fixed. [tr#24995]
- If you used an enum that had an initial value as an initial value before the enum was declared, a DECLORDER error was reported. This no longer occurs, as we now support using an enum value before declaring it. [tr#25113]
- (Windows, UNIX) The compiler now generates an INVOPT error when the first command line argument after the valid switches begins with a invalid filename character. [tr#31976]
- (Windows) An internal lexer error was reported when IMPLEMENTS came before EXTENDS in a class declaration. Now this order is fully supported in Synergy .NET, while the traditional compiler gives an invalid syntax error on interfaces. [tr#32038]
- A FOREACH statement incorrectly caused a TYPMISMCH error on an array containing objects of a class that the loop variable inherited from. This has been fixed. [tr#32045]
- When using a global literal or external literal in a statement expecting a compile time expression, the compiler was reporting the error NOTCEXP. This has been fixed. [tr#32339]
- It was possible to overload a virtual method that declares one or more arguments as "IN" with a method that declares the same argument(s) as "INOUT". The semantic check was enhanced to include parameter modifiers when looking for a matching overload to prevent this situation. [tr#32478]
- Double casts within a path gave NFND error with an incorrect path listed. They are now loaded and resolved properly. [tr#32584]
- An incorrect narrowing warning message was generated in some circumstances when -W4 was specified. This has been fixed. [tr#32327]
- The compiler previously reported a -W4 warning (INVDECSIZ) when the size was declared for a parameter group. This warning has been removed. [tr#32328]
- The compiler previously issued a level 4 DIMNDIM warning on a parameter whose type contained (*). This has been fixed. [tr#32694]
- We added the fully qualified member name to the HIDEW warning. [tr#32727]
- If a non-parameter group of zero size is detected, the dbl compiler reports a ZEROSIZ .NET warning and the dblnet compiler reports a ZEROSIZ error. [tr#32856]
- (Windows) An invalid NEWREQ warning no longer occurs when a routine field has the same name as a class field in its inheritence tree. [tr#32882]
- Error condition detection has been enhanced and some error messages have been clarified. [tr#32787, tr#32910, tr#32926, tr#32928, tr#32939, tr#32051, tr#32095, tr#32159, tr#32194, tr#32456, tr#32475, tr#31571, tr#32164, tr#32512, tr#32616, tr#32377, tr#32031, tr#32052]
- Compiler (dbl)
- We added the Synergy version to the DBP file header for Visual Studio integration purposes, so old DBP fields can be invalidated. [tr#31954]
- The compiler will now provide a .NET warning when passing an alpha to an OUT or INOUT structure routine parameter. This already generates an error in the .NET compiler. [tr#32322]
- The compiler previously reported INTERNAL or PROTECTED INTERNAL accessibility as an INVMOD ("Invalid modifier") error. Specifying INTERNAL or PROTECTED INTERNAL is now allowed, so the code will compile, but the accessibility changes to PUBLIC, and an ACCERR warning occurs to notify you of the change. [tr#32458]
- The compiler previously crashed when casting a Boolean as an integer or I type being passed to an OUT or INOUT parameter. This has been fixed. [tr#32460]
- An indexer using a descriptor index parameter compiled with -qcheck gave invalid INVNEW warning. This has been fixed. [tr#32553]
- The compiler now correctly counts the lines from global structures when they are included from the repository so that the debugger will show the correct source lines. [tr#32583]
- Object handles can now be passed using RCB_SETARG, RCB_SETARGS, and RCB_INSARG to a local routine (not xfNetlink Synergy). [tr#31860]
- We fixed the creation of prototype files (.dbp) when the -out options is specified. All members are now loaded correctly. [tr#32335]
- We fixed the creation of prototype files (.dbp) to correct a problem in which some members would not get loaded. [tr#32505]
- The compiler reported a PROTOMISMCH error on a global structure when SYNDEFNS was used in combination with -out=SYNDEFNS.synroutine.somestring. This has been fixed. [tr#32829]
- The first parameter to %ERR_TRACEBACK is now correctly prototyped as optional in the compiler. [tr#32874]
- A quoted literal initial value on a string field gave an IVBAD error. This has been fixed. [tr#32884]
- An incorrect $ERR_SUBSCR error occurs while doing an absolute range, a relative range, or dimensioned access on a field in a global structure inside a ^M. This has been fixed. [tr#32903]
- A pseudo array parameter (*) prototyped and then compiled with -qcheck and -qnet gave an invalid PROTOMISMC error. This has been fixed. [tr#32970]
- Compiler (dblnet)
- For many reasons, all Synergy .NET code must be rebuilt to work with 9.5.3. [tr#32892]
- We added support for declaring extension methods in Synergy
.NET. Now you can call a method by importing the extension
method's namespace. For example,
someobject.MyExtensionMethodName(param1, param2)
[tr#31801, tr#31802] - We added support for declaring and using lambda functions. Use the new LAMBDA statement to declare a lambda function. [tr#31806]
- We added support for ^INCR() and ^DECR(), to allow
incrementing and decrementing within a complex path. For
example,
^incr(myvar).ToString() ^decr(myvar).ToString()
[tr#31891] - We added support for type inference on DATA statements.
The syntax is
[DISPOSABLE] DATA >variable< = >value<
whereis a data reference to a local variable or any literal initial value. If is a reference to a local variable, the type of is the same as the data reference. If is an initial value, the type of variable is determined by changing the Synergy literal type to the same .NET literal type. [tr#31988] - DATA statements no longer have to be enclosed in BEGIN-END blocks in Synergy .NET. [tr#32062]
- We added support for ^AS(), to convert an expression to the
specified type. The syntax is
^AS(
[tr#32050], ) - When assigning a literal to a field or property whose type is System.Object, the compiler will automatically box the literal using .NET types. Also, casting a literal to an object will use .NET types to remain consistent with all automatic boxing. [tr#32063]
- If a value type is assigned to a System.Object type variable the compiler now automatically boxes the value type. [tr#32414]
- We added syntax for custom event-handler methods within an
event. The syntax is
PUBLIC
[tr#32438]EVENT , @ - We added support for STATIC READONLY fields. [tr#32465]
- We added support for setting an attribute field value when using the attribute. [tr#32712]
- We added support for specifying the DllImport attribute on a method to denote an external method call in a Win32 DLL and setting the DllImport field values as needed. [tr#32685]
- We added event += and event -= syntax that is equivalent to ADDHANDLER and REMOVEHANDLER, respectively. [tr#32780]
- If a global data section contained a record that had the same name as a record in another global data section, a duplicate name error would be reported. This has been fixed. [tr#31655]
- Assigning a method to a delegate with a parameter group gave a MOREARGS error. This has been fixed. [tr#32360]
- When true and false were used, they became integer literals, not Boolean literals. This caused potentially wrong overloads to be selected. Now, true and false are boolean literals. [tr#32387]
- A TOKUDF error was reported when loading an assembly that had a namespace with the same name as a generic class. This has been fixed. [tr#32389]
- A class member marked as "protected internal" did not produce the same accessibility as C#. This has been fixed. [tr#32462]
- When using ^ID() in a path with generic qualifiers, the parser reported an invalid INVEXPR error. This has been fixed. [tr#32471]
- A field declared as i4 and passed to a method with two overloads (one taking i4 and another taking int) incorrectly picked the int overload. Now it picks the i4 overload. [tr#32493]
- A method parameter whose type is an array of generic type parameters within a generic class gave an invalid BADACCESS error. This was fixed, along with the MSIL code generation for calling the method from an array of type parameters. [tr#32534]
- (Windows) Passing an enum value into something that takes a descriptor produced invalid MSIL, causing a null reference exception at runtime. This has been fixed. [tr#32555]
- Ranging on a variable whose type is a non-CLS structure gave an invalid ACCESS error. This has been fixed. [tr#32627]
- Casting a real array or an array generated by doing ^M of a structure on a handle to a string now gets the first element of the array, like traditional Synergy does. Also, passing a real array without [] also gets the first element of the array. [tr#32637]
- Casting arr[] (the scope of an array) to string gave an incorrect result. This has been fixed. [tr#32638]
- An initial value of a new dynamic array of shorts with initial values for array elements on a DATA statement and an initial value of a boxed structure type both reported an IVBAD error. These have been fixed. [tr#32681]
- Compiling only a class with an empty unnamed class record gave an autodetect synrnt warning. This has been fixed. [tr#32692]
- A class member qualified with an interface member but no accessibility gave a MISIMP2 error. This has been fixed. [tr#32718]
- Using a literal in an expression with float used an implied-decimal literal instead of the expected float literal. This has been fixed. [tr#32753]
- We added support for performing an implicit conversion on initial values when the field type doesn't match the initial value type and the initial value is not cast. [tr#32766]
- If a new delegate was used as an initial value and a matching method was passed to it that was declared after the initial value, the compiler reported a "Does not match delegate" error. This has been fixed. [tr#32769}
- We made many optimizations to code generation, affecting performance and memory utilization. [tr#32806, tr#32753, tr#32845, tr#32918, tr#32863]
- Constructing a generic type using a handle to a reference type (class, interface) used to give a NOTALLOWED error. Now it's the same as constructing using the class or interface itself. [tr#32793]
- The compiler was misreporting HIDEW warnings for fields in static records from assemblies and also for inaccessible structure fields. This has been fixed. We also improved HIDEW warning to give the name of the specific item being hid. Both HIDEW and STRUCTHIDE changed from level 3 to level 4 warnings. [tr#32822]
- Assigning array scopes in ^M caused an internal compiler error. This has been fixed. [tr#32857]
- An invalid BADROLOC error no longer occurs on a READONLY loose class field. [tr#32923]
- A routine field whose type was a dynamic array that had initial values gave a NOTIMPLE error. This has been fixed. [tr#32932]
- A runtime access violation occurred when trying to run DATETIME's ToString method from an element of an array of datetime structures. This has been fixed. [tr#32942]
- A runtime error occurred if an N type parameter group was used as a channel number in an I/O statement. This has been fixed. [tr#32990]
- Casting a nullable type to its interior type resulted in CLR runtime failure. Now the compiler reports an INVCAST error when a nullable type is cast. [tr#33019]
- The compiler previously reported an invalid NOTSTAT error when accessing a static field whose type was a non-CLS structure loaded from an assembly. This has been fixed. [tr#33051]
- If the case of the identifiers in one routine's global data section didn't match the case of the identifiers in the routine where the section was INIT'd, the compiler generated an inappropriate GDSMSMCH error. This has been fixed. [tr#33058]
- Debugger
- (Windows) We added an optional /FULL switch to the SHOW CHANNELS command. When /FULL is specified, the full Windows filename is returned for each open file. The /FULL switch is ignored on Windows systems prior to Vista. [tr#30585]
- The limitation of 255 source files on a debug compile of a compilation unit has been lifted. This is the default compilation method for Workbench projects where multiple source files are built into a single .dbo file. You must recompile any files in 9.5.3 to debug those routines in 9.5.3. [tr#32837]
- HTTP document transport API
- (.NET) An invalid memory handle exception previously occurred on a 0 (send) handle passed to %HTTP_CLIENT_POST. This has been fixed. [tr#32862]
- Installation
- On a 64-bit operating system, 32-bit and 64-bit Synergy/DE now install a shortcut under the Start menu for the installation that will launch a command prompt with Synergy environment variables already sourced. [tr#30805]
- (Windows) We have upgraded to InstallShield 2012, and the distributed setup_base.ini file has changed. If you are using the shared installation feature of Synergy/DE version 8.1 or later, the version 9.5.3 installation will update your customized setup.ini file automatically with the changes. First, the version 9.5.3 installation will rename your current setup.ini file to setup_old.ini. It will then create a new setup.ini file by copying the distributed setup_base.ini file. Finally, it will merge your customized command line settings from setup_old.ini ("CmdLine=") into the new setup.ini file. [tr#32742] IMPORTANT: If you are using the shared installation feature of Synergy/DE version 7.5, the version 9.5.3 installation will *not* update your customized setup.ini file. Because setup.ini was an "installed" file in version 7.5, it will be removed when you uninstall 7.5 or upgrade. All customizations will be lost. If you are currently on version 7.5, YOU MUST SAVE OFF YOUR SETUP.INI CUSTOMIZATIONS BEFORE YOU INSTALL VERSION 9.5.3. After installing version 9.5.3 on the shared machine, copy your command line settings ("CmdLine=") from your saved-off setup.ini file to the newly installed setup.ini file.
- We modified the License Configuration screen in the Synergy/DE installations to clarify the licensing options being presented. [tr#32922]
- When installing Synergy/DE on a 64-bit machine, the License Configuration screen now defaults to License Server as opposed to License Client. [tr#32924]
- Runtime
- We enabled GRFA support for READ, READS, WRITE, and WRITES on stream, sequential, relative, and block files. [tr#30989]
- A new clone method was added to System.Collections.ArrayList and to the Synergex.SynergyDE.Collections.ArrayList that performs a shallow copy of the objects in the original ArrayList into the newly created ArrayList. This means that the new ArrayList has references to the same objects that are referenced in the original ArrayList. [tr#31551]
- We added a new IOHooks class to support I/O statement hooks. See Synergex.SynergyDE.IOExtensions.IOHooks in chapter 9 of the Synergy Language Reference Manual for details. [tr#32286]
- We added a new function, %ISLITERAL, that returns a 1 on
Windows and UNIX if the passed-in argument is a literal or a
runtime temp. The syntax is
See %ISLITERAL in chapter 9 of the Synergy Language Reference Manual for details. [tr#32338]= %ISLITERAL( ) - (Windows, UNIX) We added a new runtime startup switch, -dz, to allow the runtime to break into the debugger on an untrapped error with a post-mortem debug session. [tr#32415]
- We added a Dispose method to Select and From classes for compatibility with Synergy .NET. [tr#32435]
- We added a new function, %IO_ERROR, to return error numbers on
a specific I/O channel. The syntax is
%IO_ERROR(
See %IO_ERROR in chapter 9 of the Synergy Language Reference Manual for more information. [tr#32457], [ ], [ ]) - (.NET) We added support for specifying environment variables using an app.config file. [tr#31691]
- (Windows, UNIX) We fixed the runtime to generate an error on startup when there are duplicate global data areas with differing sizes that were linked directly against the ELBs using a post-9.1.5 linker. If the program is started up in debug mode, the debug screen will have the information about the duplicate globals and the program will still run. [tr#32245]
- A sequential I/O operation on a channel formerly used by a Select object that has been released or disposed no longer generates an "$ERR_INVOPER, Invalid operation: Select context is active" error. However, following the Select enumeration, the sequential context is undefined. [tr#32428]
- (OpenVMS) The runtime was fixed to output multiple UNHANDLED error messages when the text would be truncated due to OpenVMS system call limitations. [tr#32781]
- (Windows) Using a rooted environment variable (c:\temp\,e:) caused the internal filename to have \\. If this was part of an ELB, the ELB caching to avoid duplicate commons sometimes failed and caused "duplicate common" messages in the debugger. This has been fixed. [tr#32809]
- (.NET) An unsigned int8 that would be seen as a negative number if signed was not being correctly stored into a d28. This has been fixed. [tr#32853]
- (.NET) %UNSIGNED returned incorrect results for negative numbers and implied variables on .NET. This has been fixed. [tr#32901]
- (.NET) An error message from %HTTP_CLIENT_GET or %HTTP_CLIENT_POST on 64-bit Windows for Synergy .NET was getting truncated. This has been fixed. [tr#33034]
- (Traditional) %UNSIGNED for decimal and implied negative numbers incorrectly returned a negative number. This has been fixed. [tr#32902]
- (Windows) In previous versions, a definition of COLOR255 in synergy.ini or synuser.ini was not accepted and caused a warning dialog to be displayed. This has been fixed. [tr#32955]
- When iterating to EOF on a Select enumerator, certain conditions (an optimized exit condition or an OrderBy option) will no longer cause a record to remain in a locked state. [tr#32900]
- (UNIX) We fixed a 9.5.1 through 9.5.1c regression in the Select class when the file was on a differing endian machine and the keys specified for selection criteria were integers. [tr#33041]
- In version 9.5.1 through 9.5.1c, passing a field of an arrayed entity (group or struct) gave a dimensioned descriptor. This has been fixed.[tr#32980]
- Synergy .NET assembly API
- Loading assemblies is now supported from a mapped drive on .NET 4.0 without generating a security exception. [tr#31387]
- The gennet utility was strong named, which caused unsigned DLLs to fail when loading. This has been fixed. [tr#33056]
- Synergy windowing API
- (.NET) We added support for scaling the font used in a .NET application that makes use of low-level windows or the Toolkit. If SYN_RESIZE_SCALE is set to 1 in the environment, you may resize, maximize, or restore the form used for window/Toolkit display, and the font will be scaled accordingly. [tr#32945]
- Synergy XML API
- (.NET) The XML API did not correctly escape 8-bit characters, as it did in traditional Synergy as of 9.5.1b. This has been fixed. [tr#32917]
- Utilities
- (OpenVMS) We made several enhancements to the servstat program. The servers are numbered in the list, making it easier to select the one you want to view. In addition, the list now distinguishes between xfServer and xfServerPlus. The display status shows additional information when encryption is enabled: whether master or slave, the cipher level (low/medium/high), and the certificate file being used. [tr#31241]
- The isutl fast-load option (-f) now recognizes the packing density option (-p). [tr#31811]
- Visual Studio integration
- In many cases of a multi-project solution, property pages marked with an * were not saved on build or saved. In some cases, reloading a project caused property pages to be marked with an * again, even though no changes were made. These have been fixed. [tr#31438]
- The output path on the build property page now supports environment variables using the $(xxx) format (e.g., $(BIN)\myLoc). [tr#32515]
- Build errors that don't reference a particular source file no longer cause error tasks that point to Synergex.SynergyDE.targets. [tr#32615, tr#32792]
- We have made many enhancements and bug fixes to the code generator and code converter. [tr#32797, tr#32779, tr#32721, tr#32634, tr#32509, tr#32756, tr#31588, tr#31940, tr#32203, tr#32725, tr#33003, tr#33004]
- When expanding the "ctor" snippet in a generic class, the generic type information from the parent was carried over into the generated constructor. This has been fixed. [tr#32941]
- The .ARRAY preprocessor directive is now colored correctly. [tr#32597]
- The debugger now steps significantly faster than it used to when showing a watch point. [tr#31497]
- We made numerous enhancements and fixes to the debugger. See the online help for new QuickWatch commands. [tr#32890, tr#32859, tr#31715, tr#32432, tr#31555, tr#31601, tr#31603, tr#31747, tr#32188, tr#32396, tr#32549, tr#32613, tr#32618, tr#32679]
- After a fresh install, when in a Synergy .NET project, the WinForms designer did not allow third-party controls the very first time. This has been fixed. [tr#32606]
- Binding a DataSet to a DataGridControl was failing with errors. This has been fixed. [tr#31534]
- The type and member drop-down list incorrectly showed duplicates when handling generic classes. [tr#32198]
- Hover-over for Synergy builtins showed extra commas between parameters. This has been fixed. [tr#32610]
- We improved the performance of document reformatting in Visual Studio when the document is already partially formatted. [tr#32796]
- IntelliSense now correctly resolves ambiguity between symbols that differ only by case. [tr#32817]
- Formatting for preprocessor directives and comments on column 0 was incorrect when contained within a BEGIN-END block. This has been fixed. [tr#32195]
- FOR-FROM-THRU was incorrectly indented in Visual Studio when not followed by "BY". This has been fixed. [tr#32804]
- IntelliSense now shows parameter direction (INOUT/OUT/REF) where appropriate. [tr#32747]
- If a project has already built its IntelliSense symbols, when you shut it down and reopen it, those symbols will be used until the next IntelliSense build has completed. [tr#31682]
- We added support for extension methods. [tr#31985]
- When initially creating a multi-project solution, IntelliSense was incomplete for the referenced projects. This has been fixed. [tr#31647]
- Generic classes declared in Synergy displayed incorrect text in IntelliSense dropdowns. This has been fixed. [tr#32067]
- Generic parameters were not shown in IntelliSense when inside of the classes/methods in which they were defined. This has been fixed. [tr#32071]
- Method overloads were not shown when the one or more of the overloads was in an inherited class. This has been fixed. [tr#32168]
- Documentation comments were not loading for constructors. This has been fixed. [tr#32193]
- IntelliSense incorrectly included the containing type and namespace when showing the names of type parameters. This has been fixed. [tr#32200]
- When the name of a record, structure, enum, delegate, or interface was typed, IntelliSense incorrectly popped up suggested data section keywords. This has been fixed. [tr#32235]
- The .ARRAY preprocessor directive was not showing up in IntelliSense. This has been fixed. [tr#32312]
- Attempting to GOTO a namespace gave a different error than C#. This has been fixed. [tr#32470]
- IntelliSense now works correctly when parameters for builtins are being typed. [tr#32559]
- IntelliSense for types defined in a C#/VB project referenced in a Synergy/DE project didn't show up if a DLL was not already built on the first load of the reference. This has been fixed to always look for a built file in referenced projects. [tr#32598]
- An .INCLUDE of a file containing a record (or an included structure) at the top of a file right before an implicit main gave a filename of the including file instead of the main source. This has been corrected to give the correct file information for IntelliSense purposes. [tr#32340]
- If you started typing a function that began with a caret (^) but ended the IntelliSense, the ^ was ignored when you resumed typing, causing incorrect IntelliSense. This has been fixed. [tr#31479]
- IntelliSense failed to offer the correct suggestions when a DATA statement (or record) was typed if you didn't include at least once space between the parts of the declaration. This has been fixed. [tr#32698]
- Single-letter completions such as T failed to include T as a completion when other options also started with T. This has been fixed. [tr#32717]
- IntelliSense incorrectly displayed events as though they were fields. This has been fixed. [tr#32748]
- D_HANDLE, D_GRFA_TYPE, D_RFA_TYPE, D_ADDRSIZE, D_NATLNG, D_NATINT, and D_MAXINT have all been added to the list of completions when completing a data type. [tr#32763]
- Nested types referenced from an assembly were not considered when IntelliSense suggestions were generated. This has been fixed. [tr#32860]
- Parameter IntelliSense incorrectly showed "&" on reference arguments that originated in an external .NET assembly. This has been fixed. [tr#32894]
- IntelliSense for private members was incorrect when a single-letter completion that started with the same letter as the private member existed in the current scope. This has been fixed. [tr#32897]
- (Windows) We added “pre-release” support for ClickOnce deployment: we added a Publish page and a Runtime Settings page to the Project Designer (i.e., project properties), and we added support for the Publish Wizard (which you can open from the Publish page). As this is a pre-release feature, it may not support all functionality. Refer to our online help within Visual Studio for details on the status of this feature. [tr#31805]
- We added a new option to the Interop property page that enables you to turn off adding the XFPL support methods to a generated component class. By default, this option is checked, to include the XFPL support methods. [tr#31565]
- Synergy Language Integration now offers better support for the Windows Service project type. The designer for the service is functional and can be used to add the Installer. We have also added item templates for Installer and Service types with included designer support. [tr#31784]
- We now support Add Service Reference. When in a project, right-click the project node or References folder and select "Add Service Reference". [tr#31885]
- We now support datasets, which enables you to generate dataset code by using the DataSet wizards. [tr#31533]
- The Add Reference dialog displayed the .NET tab when first opened. It will now display the Project tab. [tr#32594]
- We changed the mask used to write the date/time from "h:m:s" to "h:mm:ss", to include leading 0s for the minute and second positions. [tr#32713]
- We fixed an issue that caused a form's designer.dbl file to gain focus when saving changes while the Properties window had focus. [tr#32122]
- When adding an Application Configuration File using Add Item, the wizard showed the filename with an auto-increment (App1.config), although the file was correctly named App.config after it was added to the project. The wizard now shows the correct name and starts incrementing after the first file. [tr#32140]
- Adding a new project to a solution that contained multiple projects and then giving it a name starting with a number caused a problem for Visual Studio. This has been fixed. [tr#32838]
- Projects containing files with non-Windows file endings could cause a project to get an IndexOutOfRangeException error when loading. This has been fixed. [tr#32849]
- In order to be fully compatible with MSBuild, an "App.config" in a project needs to have a Build Action of "None". In current Synergy projects in SLI, the default Build Action is "Content". Adding an "App.config" from this point forward should have the correct default state. To fix this in existing 9.5.1 projects, select the file in the Solution Explorer, open the Properties toolbar, and select "None" under the "Build Action" property. [tr#32929]
- After launching a solution with the Windows 7 jumplist, trying to execute the Command Prompt menu item from the Tools menu caused a null object error. This has been fixed. [tr#32971]
- The tabbing orders for fields in the Advanced, Formatting and IntelliSense sections of the Synergy/DE text editor options have been corrected. [tr#31460]
- Making changes to an Options pane for Synergy Language and selecting Cancel did not cause the changes to be reset. This has been fixed. [tr#31466]
- We fixed an aesthetic bug in Tools > Options > Text Editor > Synergy/DE > Advanced where the "Underline errors in editor" feature was marked as checked. (Note that this feature is not currently supported.) [tr#31477]
- We fixed a graphical bug that caused a second horizontal scrollbar to display when a project properties window was sized small enough. [tr#32303]
- It is no longer possible to Save and Build with an invalid identifier in the Default namespace on the Application Tab. [tr#32430]
- The tab order for the "Assembly Information" dialog has been corrected. [tr#32444]
- Vertical scroll bars now appear for the Pre-build and Post-build event text boxes. [tr#32450]
- We added support for specifying environment variables by implementing a new property page that writes to the app.config file rather than the project file. [tr#32696]
- We now support the use of environment variables in the path of the strong name file on the signing property page. [tr#32848]
- Selecting certain tabs in the property pages caused the default settings to be written to the project file. This has been fixed. [tr#32904]
- UI Toolkit [Expand All UI Toolkit | Collapse All UI Toolkit]
- Debugger
- We improved Toolkit debugging when using the DTKDBG environment variable. When DTKDBG is set, the debugger now checks for any %M_SIGNAL call that supersedes a pending menu entry. When the debugger encounters such a call, it displays a message box that indicates which menu entry the call is signaling and which entry is being superseded. It also asks if you want to continue. If you click Yes, the operation proceeds. If you choose not to continue, the debugger calls U_ABORT, which generates a fatal Toolkit error. [tr#31944]
- displays a message box if a USTART_METHOD cannot be invoked. The message box asks if you want to continue. If you click Yes, the program proceeds with non-DTKDBG behavior--i.e., it ignores the method. (In previous versions, this happened regardless of DTKDBG.) If you click No, the debugger calls U_ABORT, which generates a fatal Toolkit error. [tr#32622]
- Input Processing
- We updated I_TXTPOS with two new options that enable you to get either the last position occupied by the cursor or the next projected position for input in a multi-line text field. If the third argument is D_GETLAST, the next two arguments are returned with the row and column last occupied by the cursor (or 0,0 if no row or column had been established). If the third argument is D_GETNEXT, the next two arguments are returned with the next row and column that will be used for input (or 0,0 if none has been specified). [tr#32016]
- In previous versions, if the fourth argument to I_USER contained fewer characters than the original user string for the field, the characters following that argument in memory would be appended to the value. This could result in an access violation if the value resided at the end of the data division or was a literal or expression. This has been corrected. [tr#32927]
- List Processing
- We added two new subfunctions to L_STATUS: D_LHDRID returns the ID of the window used internally by Toolkit for a list's header, and D_LFTRID returns the ID of the window used internally for a list's footer. These subfunctions should be used in place of any references in your code to glst_hdrid or glst_ftrid (from lstprv.def). [tr#32950]
- (Windows) In previous versions of the ActiveX list control, double-clicking an item during L_SELECT processing would cause a meaningless beep. This has been corrected. (Double-clicking a prompt or a read-only or disabled field during L_INPUT or L_INPFLD processing will still correctly result in a beep). [tr#32878]
- (Windows) In previous versions of the ActiveX list control, if L_RESIZE was called, and if it specified a number of columns that would result in a width that was greater than the initial width of the list, the width change would not be applied unless the height also changed. This has been corrected. [tr#32262]
- (Windows) In previous versions of the ActiveX list control, clicking on a scroll bar would not signal a mouse click event. We have corrected this and the situation in which an ActiveX list in a container window would not load all items when a scroll bar was clicked unless focus was first moved to the list. [tr#31199]
- Selection Processing
- In previous versions, if a selection field had exactly 99 entries, quick-select characters would disappear or would seemingly be random. This has been corrected. [tr#32833]
- Utility Routines
- We added U_EDIT, a new routine that, like T_EDIT, enables users to enter and edit text in a window. Unlike T_EDIT, however, U_EDIT automatically wraps text at the end of a line, preserves hard breaks, and enables you to specify the type of line break (hard or soft) that will be created when the user presses ENTER. With U_EDIT, you can also supply initial text to be displayed when U_EDIT starts, and U_EDIT returns the final state of text in a way that preserves hard returns. [tr#31321]
- We added a new, optional argument to U_VERSION to return the version number with space allocated in anticipation of version 10. We have also made the original first argument to U_VERSION optional so you don't have to obtain both formats to get the new one. [tr#32963]
- (UNIX, OpenVMS) We improved U_ABORT so that if possible it wraps (rather than truncates) lines of text that are longer than the 70-character limit for an error message. [tr#31399]
- Miscellaneous
- (Windows) We added support for cell-based functions to the UI Toolkit library for .NET (tklib.dll). This gives you the ability to move a cell-based application to .NET without having to recode the UI elements. And if you already have a Windows application, you can move back-office programs to .NET. Note that your UI Toolkit applications will still function as cell-based applications--for example, there will be no mouse, no native menu controls, nor the ability to maximize the application window. But this new functionality does give you the ability to get your applications running quickly under .NET, and then you can migrate select screens to Windows Forms or WPF.
- (Windows) We extended the meaning of DTK_BOUNDS on Windows platforms. If this is set to any value, Toolkit now also checks to make sure W_PROC(WP_RESIZE) is not used to resize one of Toolkit's reserved windows (header, footer, or information line) or an input window for a list. If W_PROC is used in this way, Toolkit calls U_ABORT to report this along with the window ID and the old and new sizes. [tr#32844]
- (Windows) Tklib.elb is now built with -qstrict, and there is a new distributed file, tklib_qcheck.elb, that is the UI Toolkit library built with -qcheck. See the related entry in "Important Notes and Warnings" above for more information. [tr#32453, tr#32454]
- (.NET) We added support for scaling the font used in a .NET application that makes use of low-level windows or UI Toolkit. If SYN_RESIZE_SCALE is set to 1 in the environment, you may resize, maximize, or restore the form used for window/Toolkit display, and the font will be scaled accordingly. [tr#32945]
- (.NET) In previous 9.5 versions, if a Toolkit application generated a fatal error in Synergy .NET, an "unsupported command" exception would occur. This has been corrected. [tr#32846]
- Debugger
- Connectivity Series [Expand All Connectivity Series | Collapse All Connectivity Series]
- SQL Connection
- (Windows) In previous versions, you could use the VTX12_SQLNATIVE driver with a DSN-less connection only if SQL Server 2005 was installed. It did not work with SQL Server 2008 or SQL Server 2008 R2. This has been corrected. [tr#33022]
- (Windows) In previous versions, SQL Server TINYINT columns were bound as signed instead of unsigned. This has been corrected. [tr#32887]
- In previous versions, performing a STOP chain with a cached cursor would sometimes cause a segmentation fault. This has been corrected. [tr#32940]
- (.NET) In previous versions, SQL Connection would in rare cases hang as an application was shutting down if a connection had not been closed. This has been corrected. [tr#33028]
- xfODBC
- (Windows) We updated the xfODBC driver so that it now returns "not supported" for SQL_ASYNC_MODE, which is an ODBC API version 3.0 information type for the SQLGetInfo function. Although the xfODBC driver supports the ODBC version 2.5 API (level 1), rather than 3.0, some applications request SQL_ASYNC_MODE anyway, so we added support for this information type to prevent unnecessary errors. [tr#32919]
- In previous versions, a view with a space at the 240th character would cause a syntax error when queried. This has been corrected. [tr#32266]
- We fixed the DBA program so that it no longer generates a traceback if you use it to delete a user or group while DTK_BOUNDS is set to 2. [tr#32321]
- (Windows) In previous versions, if a key contained an unsupported data type, dbcreate reported the following as an informational message: "No Access indexes defined for table <table name>." We corrected this so that it is now an error. [tr#33005]
- SQL Connection
- Repository
- The Long Description for fields and templates is no longer in a separate window, only accessible when viewing the "list". It is now another tab in the Field Definition and Template Definition tabsets. [tr#32629]
- A coerced type can now be specified for a field or template when the Type is User, the Class is Date, and the User string is "^CLASS^=YYYYMMDDHHMISSUUUUUU". [tr#32308]
- In version 9.5.1a, we changed the drop-down list for implied-decimal field coerced types to display "Default" instead of "decimal". (See tr#31972 below.) Because xfNetLink Java supports type coercion in 9.5.3, we added "decimal" back to the list. For Java clients, implied-decimal data types can be coerced to decimal, while choosing "Default" will result in the documented default behavior. For .NET clients, selecting either "decimal" or "Default" will result in the same behavior that "Default" used to get. [tr#31979]
- Previously, if you edited a group field and clicked the Group drilldown button to bring up the list of its members, then deleted a member, exited back to the input window, but then CANCELed the input window instead of selecting OK, (and then Save structure changes when prompted), you would subsequently get an error when you VERIFIED. The child count for that group field was not being correctly decremented. This has been corrected. [tr#32602]
- Professional Series Workbench [Expand All Professional Series Workbench | Collapse All Professional Series Workbench]
- COM, Java, and .NET projects
- We added a WCF Contracts field to the Component Information dialog for .NET Component projects. This field allows you to toggle the "-w" invocation option in gencs. [tr#32263]
- We added support for the new -c, -t, and -ro invocation options in genjava. The Component Information dialog in Java Component projects now has dropdowns to select between supported class and JAR file Java Runtime versions, as well as a checkbox to indicate that properties should be generated as read-only. [tr#32307]
- The Component Information dialog for .NET Component projects supports the new -p option in gencs. [tr#32635]
- Synergy/DE Options dialog
- The Workbench build system now always uses input files during Prototype, Compile All, and Build operations. This improves the consistency of files that are generated during a build and also provides significant performance improvements for users who do not compile to single object files.
- Syntax expansion
- The SYNMWSIZE alias was reversing width/height pairs in the parameters. This has been corrected. [tr#32700]
- Tagging
- When displaying function help for a routine, it was possible for a comma in an array declaration of a parameter to throw off the parameter highlighting and advancement. This has been fixed. [tr#31877]
- Synergy logicals in .INCLUDE statements are now tagged properly in Workbench. Previously Workbench was not assigning tags against the resolved path, which caused issues. In addition, Workbench now handles local tagging for the contents of an .INCLUDE file inside a DATA or PROC division better. You should be able to correctly list members and navigate to definitions for included local context variables. [tr#32688]
- Visual editor
- Workbench no longer forcibly closes your workspace after an upgrade. It also no longer forces the display of release notes after an upgrade. [tr#32535]
- When using selective display blocks, trying to insert a line from the beginning of a collapsed block previously resulted in the block moving down a line. This has been fixed to properly insert a line at the end of the block. [tr#31430]
- An error no longer occurs when Workbench is launched with a project open and with the obsolete VSLICKCONFIG environment variable present in the environment. [tr#31639]
- The Symbols toolbar now provides more consistent placement of parent types next to child items in the tree. [tr#32423]
- COM, Java, and .NET projects
- xfServer
- (Windows) The setruser utility now displays additional messages when both global and local RUSER values are used. Removing a local RUSER with -d will display an informational message when a global RUSER still exists. Likewise, removing a global RUSER with -gd will display a message when a local RUSER still exists. In addition, when setting RUSER, a warning message will be displayed when an RUSER is already set in the opposite (global or local) environment. (For example, setruser -g will display "Warning: This RUSER will be hidden by local RUSER <user>" if a local RUSER already exists.) [tr#32628]
- (UNIX) Rsynd was enhanced to take the location specified in the RSFILPATH environment variable if set and use it for the location of files created without a path specified. [tr#31388]
- (OpenVMS) We made several enhancements to the servstat program. The servers are numbered in the list, making it easier to select the one you want to view. In addition, the list now distinguishes between xfServer and xfServerPlus. The display status shows additional information when encryption is enabled: whether master or slave, the cipher level (low/medium/high), and the certificate file being used. [tr#31241]
- xfServerPlus [Expand All xfServerPlus | Collapse All xfServerPlus]
- xfServerPlus
- The xfServerPlus log file now displays milliseconds in the date and time stamp for the packet received, packet returned, and the user function calls. [tr#31429]
- The format YYYYMMDDHHMISSUUUUUU is now supported for both parameters and return values when coercing a decimal data type to a DateTime. [tr#31974, tr#32364]
- We added support for coercing decimal data types to decimals and nullable decimals for parameters and return values. [tr#32365]
- (Windows, UNIX) We added a new command line switch, -text, to rsynd. It takes as a parameter a text string, which is added to the end of the command line when xfServerPlus is started. If the text string contains a single "%s", it is replaced with the IP address of the client. [tr#31380]
- (OpenVMS) We made several enhancements to the servstat program. The servers are numbered in the list, making it easier to select the one you want to view. In addition, the list now distinguishes between xfServer and xfServerPlus. The display status shows additional information when encryption is enabled: whether master or slave, the cipher level (low/medium/high), and the certificate file being used. [tr#31241]
- When a client program in xfServerPlus generated an error that XFPL needed to report, the xfpl.dbr seg faulted when the error packet was sent back via an encrypted connection. This has been fixed. [tr#32933]
- When sending a DataTable from Synergy to xfNetLink .NET, key fields marked as duplicates were incorrectly used as the DataTable's primary key. This has been fixed. [tr#32872]
- xfServerPlus lost objects when string return types were used for xfServerPlus routines. In addition, seg faults sometimes occured on shutdown. This has been fixed. [tr#32975]
- In some cases large implied decimal result expressions would be returned as truncated values. In addition, there were cases where memory was read beyond the allocated memory with a potential seg fault. Both of these have been fixed. [tr#32976]
- Method Definition Utility
- We added "decimal" and "nullable decimal" to the list of coerced types available for parameters and return values when the type of the parameter or return value is decimal. [tr#32297, tr#32298]
- We added a new DateTime Format, YYYYMMDDHHMISSUUUUUU, to the drop-down lists for the Format field in both the Method Definition and the Parameter Definition window. (This field used to be named "Date format"; we shortened it to "Format" to make room for this new format.) [tr#32300, tr#32301]
- We are now correctly generating a warning message when importing XML when an implied-decimal return type or parameter is coerced to double and is longer than 16 bytes. [tr#32299]
- xfServerPlus
- xfNetLink Java Edition
- If the genjava -c option (which determines JRE compatibility) is not specified, the default is now 1.5 instead of 1.2, as it was in 9.5.1a. The value specified with the -c option affects not only what new features are available, but also a number of default type mappings. THIS CHANGE MAY BREAK YOUR CODE if you regenerate classes for an existing application. [tr#32693]
- xfNetLink Java now supports passing enumerations (defined in the repository) as parameters and method return types, as well as enumerations that occur as fields within a structure parameter. [tr#32287]
- We added support for type coercion for return values and parameters for decimal, implied-decimal, and integer data types. This feature enables you to specify a non-default data type (when defining data in the MDU or attributing your code), which will be used as the Java data type in the generated classes. Type coercion is also supported for fields in repository structures. [tr#32288]
- We added support for passing return values of type System.String. [tr#32289]
- We added support for the Synergy System.Collections.ArrayList class as a parameter. [tr#32290]
- We added support for User fields in repository structures passed as parameters where the subtype is Date and the User data field contains either ^CLASS^=YYYYMMDDHHMISS or ^CLASS^=YYYYMMDDHHMISSUUUUUU. Such fields will map to the Java Calendar class when classes are generated with JRE v1.5 compatibility. Previously, all User fields were converted to Strings; consequently, THIS CHANGE MAY BREAK YOUR CODE if you regenerate classes for an existing application. [tr#31901]
- We added support for passing Boolean fields within structures when classes are generated with JRE v1.5 compatibility. Previously, Boolean fields were converted to bytes; consequently, THIS CHANGE MAY BREAK YOUR CODE if you regenerate classes for an existing application. [tr#32291]
- Binary fields within structures are now mapped to byte arrays when classes are generated with JRE v1.5 compatibility. Previously, binary fields were converted to Strings; consequently THIS CHANGE MAY BREAK YOUR CODE if you regenerate classes for an existing application. [tr#32292]
- The following methods have been deprecated: getxfMinport(), getxfMaxport(), setxfMinport(), setxfMaxport(). These methods should be used only when running in debug mode with the debugInit() and debugStart() methods when a firewall is being used and a valid range of ports is needed. They cannot be used when making standard, non-debug connections. [tr#32577]
- When returning connections to the pool, we now check to see if an exception has been thrown on the connection and, if so, discard it rather than return it to the pool. [tr#30946]
- We fixed a problem that was causing a socket to be discarded from the Java pool, resulting in a closed socket exception. [tr#32934]
- Genjava now issues an error for "unsupported DataTable collection type" if the XML file contains a DataTable parameter. No class wrappers are generated. [tr#30895]
- xfNetLink .NET Edition [Expand All xfNetLink .NET Edition | Collapse All xfNetLink .NET Edition]
- We added a new option to gencs, -p, which causes generated structure classes to include the INotifyPropertyChanged class. Because this feature applies only when generating properties, it is not valid when used in combination with the -g option (which generates structure members as public fields). [tr#30442]
- xfNetLink .NET now supports User fields in repository structures passed as parameters, where the subtype is Date and the User data field contains ^CLASS^=YYYYMMDDHHMISSUUUUUU. Such fields map to a DateTime data type in the generated classes. [tr#31961]
- The format YYYYMMDDHHMISSUUUUUU is now supported for both parameters and return values when coercing a decimal data type to a DateTime. You can specify this format when defining data in the MDU or when attributing your code. [tr#31974, tr#32364]
- We added support for coercing decimal data types to decimals and nullable decimals for parameters and return values. (Coercing decimal to decimal is not as redundant as it might seem, because by default, decimals are converted to int or long depending on size.) [tr#31970]
- When a String parameter with a null value was followed by an Arraylist of structures as an out parameter, a parsing error occurred. This has been fixed. [tr#32268]
- Binary data structure fields that were converted to a byte array on the .NET client as out only parameters were not working. This has been fixed. [tr#32279]
- A C# compiler error occurred when a structure with read-only fields was generated with properties and also used as a DataTable. The DataTable methods were still using the set property methods for the read-only fields, but they did not exist in the generated structure. This has been fixed. [tr#32341]
- When sending a DataTable from Synergy to xfNetLink .NET, key fields marked as duplicates were incorrectly used as the DataTable's primary key. This has been fixed. [tr#32872]
- xfNetLink .NET Configuration Utility
- We removed the minport and maxport options from the Key dropdown list in the Add Class Setting dialog because these settings have been deprecated. If you open an existing config file that contains these settings, when you attempt to modify them a message will display, telling you to remove them. [tr#32395]
- Synergy Language [Expand All Synergy Language | Collapse All Synergy Language]
- Synergy/DE 9.5.1c [Expand All | Collapse All]
- Synergy Language [Expand All Synergy Language | Collapse All Synergy Language]
- Analysis engine
- Doing an index on a prototyped field caused a segmentation fault. This has been fixed. [tr#32869]
- Compiler (dbl)
- Using ^ARG in a CASE statement with an alpha label gave an invalid TYPMISMCH error. This has been fixed. [tr#32633]
- The compiler was fixed to prevent a segmentation fault when using the -qvar_review switch. [tr#32689]
- Compiler (dblnet)
- Using ^TYPEOF as an attribute value previously gave an INVTYP error. We now support ^TYPEOF as attribute value for a property. [tr#32705]
- Previously, an access violation occurred when a partial class with a descriptor type field was followed by another partial declaration of the same class with a non-descriptor type field. This has been fixed. [tr#32714]
- A lone routine record field whose type is a boxed enum caused an ilasm error during compilation. This has been fixed. [tr#32715]
- Using a boxed non-CLS structure in an assembly gave "Type mismatch" errors. This has been fixed. [tr#32723]
- Passing a variable of a CLS type to an object array as an initial value caused segmentation fault. This has been fixed. [tr#32734]
- Using a field whose type is an arrayed non-CLS type loaded from an assembly gave a "Type mismatch" error. This has been fixed. [tr#32737]
- The initial value is no longer ignored for a field whose type is an array of non-CLS structures when the field is declared in a record. [tr#32750]
- Assigning a signed integer to an unsigned integer or a larger size type gave incorrect results when compared to C#. Because of this, optimized integer descriptors, which are all integer descriptors except for loose class fields or parameters, assigned to unsigned integer types of a larger size also gave incorrect results. This has been fixed to correctly convert the signed integer to the unsigned integer. [tr#32755]
- A PUBLIC CONST field whose type is a descriptor in a class record imported from an assembly previously gave a NOTSTAT error when it was accessed as a STATIC. This has been fixed. [tr#32778]
- Literal strings with lengths longer than 127 characters that were passed as attribute values were written out incorrectly. This has been fixed. [tr#32807]
- Casting using a handle gave an unexpected BSTMTCH error (whereas casting to the class didn't). This has been fixed. [tr#32810]
- Constructed types that had constraints on type parameters coming from an assembly sometimes caused a segmentation fault on shutdown of the dblnet compiler. This has been fixed. [tr#32812]
- Creating a dynamic array of non-CLS structures caused an execution error. This has been fixed. [tr#32816]
- Debugger
- The debugger no longer issues a RUNERR or stops when it fails to position in the source file. Instead, a warning is displayed in the debug window and the program continues. [tr#32830]
- Runtime
- (Windows, UNIX) When using OrderBy with the Select class, a signal trap no longer occurs when there are no matched records. [tr#32695]
- (.NET) An assignment of a float or double type from an implied-decimal type with a precision greater than 10 produced an incorrect result. This has been fixed. [tr#32772]
- When creating a dynamic array of strings using initial values
with the syntax
"hnd = new string[#] { "abc", "def" }"an $ERR_RUNERR "synobj_store: Object handle not referenced" error is no longer generated. [tr#32786]
- In 9.5.1 through 9.5.1b, when passing a ^M non-dimensioned structfield as a VARARGS parameter via the Synergy routine call block API to SQL Connection, an error occurred. This has been fixed. [tr#32677]
- A memory leak that eventually caused a NOMEM error no longer occurs when repeatedly calling class methods compiled in a module with the refresh compiler option (-r, -qrefresh, or /REFRESH). [tr#32782]
- Visual Studio integration
- The .pdb file was not being copied on release builds. It is now correctly copied to the release output directory. [tr#32655]
- In 9.5.1b, when generating code with attributes, attribute named parameters that conflicted with reserved keywords were incorrectly generated with "local_" prefixes. This has been fixed. [tr#32684]
- In 9.5.1b, when generating code with svcutil (WCF code generation), method declarations in interfaces were incorrectly generated with "private" accessibility modifiers and with procedure divisions. This has been fixed. [tr#32683, tr#32682]
- When the code generator (or C# to Synergy code converter) generates code, any structure definition is now preceeded by a "cls" modifier to force the structure to be .NET compatible. [tr#32744]
- Values displayed for float, double, and large implied-decimal variables were incorrect. This has been fixed. [tr#32772]
- When generating code that contained a reference to a type that was a subclass to another class, the code generator incorrectly output a plus character instead of a period. This has been fixed. [tr#32658]
- Typing a '(' directly after a method call's closing ')' caused IntelliSense to crash. This has been fixed. [tr#32764]
- A segmentation fault previously occurred during a background compile on code with two global classes where the first one forward-referenced the second one. This has been fixed. [tr#32749]
- In a solution that contains multiple projects, the "Clean one project" option was not working, and all projects in the solution were being cleaned. This has been fixed; only the selected project will now be cleaned. Both "Clean the solution" and "Clean one project" are now supported. [tr#32794]
- Analysis engine
- License Manager
- (Windows) A licensing error (from Synergy products running on the License Manager server machine) caused by a failure opening the pipe was generating the wrong system error message in the Windows Event Viewer. It now generates the correct error message. [tr#32626]
- (UNIX) A condition causing license failures and SEND/RECV message failures when there is a high volume of License Manager activity has been corrected. [tr#32835]
- UI Toolkit [Expand All UI Toolkit | Collapse All UI Toolkit]
- Tab Set Processing
- (Windows) In previous versions, if a tab had an inner tab set with a tab whose method had a call to %TS_PROCESS, and a user clicked that inner tab and then clicked another tab in the outer tab set before %TS_PROCESS was called for the method, a fatal Toolkit error would occur if the index of the selected outer tab was higher than the number of tabs in the inner tab set. This has been corrected. [tr#32673]
- Tab Set Processing
- Connectivity Series [Expand All Connectivity Series | Collapse All Connectivity Series]
- SQL Connection
- (Windows) In previous 9.5.1 versions, accessing a SQL Server stored procedure with two or more statements that returned a result set would sometimes incorrectly generate a ZEROCOL error. This has been corrected. [tr#32726]
- SQL Connection
- Repository [Expand All Repository | Collapse All Repository]
- In version 9.5.1b, if you deleted one or more fields and then, in the same editing session, tried to display a selection list of fields (F7) from the Key Definition or Tag Definition input windows, Repository would die with a traceback. The same thing would happen if you deleted one or more keys and then tried to display a selection list of keys from the Relation Definition input window. These issues have been corrected. [tr#32811]
- In version 9.5.1b, a subscript error occurred when trying to access the list of relations for a structure and relations were missing from Print or Schema output. This has been fixed. [tr#32701]
- In version 9.5.1b, if you deleted one or more keys, relations, local formats, or tags, the Repository could die with an "Argument missing" error. This has been corrected. [tr#32866]
- Previously, when defining a new key, if you typed in an invalid structure name for an External key segment, and then tried to display a list of fields to choose from, Repository would die with a traceback. This has been fixed. [tr#32746]
- Professional Series Workbench [Expand All Professional Series Workbench | Collapse All Professional Series Workbench]
- Synergy/DE Options dialog
- An error in the Workbench build system sometimes caused environment variables generated in the build batch file to be formatted incorrectly. This has been fixed. [tr#32229]
- Synergy/DE Options dialog
- xfServer
- xfServerPlus
- When passing a large negative number in an integer parameter on a 32-bit platform, the last digit of the parameter was being truncated by xfServerPlus. This has been fixed. [tr#32668]
- (UNIX) We fixed a problem that was causing a "login failed" or "Bad Password" error upon connection when xfServerPlus was started with encryption enabled either from the root UID or from the same UID as was specified with the -u option and no password was specified. [tr#32858]
- xfNetLink Java Edition
- In 9.5.1a, the import of java.math.* was not included for implied-decimal fields with a value greater than 16; it was only included for a value greater than 18. This caused the generated classes to fail to compile with a "cannot find symbol" error when implied-decimal fields used within a structure were greater than 16. This has been fixed. [tr#32564]
- Synergy Language [Expand All Synergy Language | Collapse All Synergy Language]
- Synergy/DE 9.5.1b [Expand All | Collapse All]
- Synergy Language [Expand All Synergy Language | Collapse All Synergy Language]
- Analysis engine
- The hashing algorithm for the symbol table has been improved to reduce collisions. On larger projects, this can improve performance four-fold for IntelliSense, Workbench tagging, and compilation. [tr#32529]
- Compilers (dbl & dblnet)
- We added support for passing an alpha into an OUT/INOUT non-CLS structure parameter. We added W_ATOS warnings when passing an alpha to a non-CLS structure parameter and an E_ATOS error when an alpha that's too small is passed to a non-CLS structure. A warning occurs in traditional Synergy. [tr#32382]
- The command line processing of redirected commands that have multiple commands with continuation lines or with spaces after the continuation character has been fixed for the following programs: dbl, dbl8, dblink, dblibr, dblnet, dblproto, dbl2xml, dblnet2xml. [tr#32267, tr#32320]
- In 9.5.1 and 9.5.1a, the command line processing of redirected commands when the input file had a continuation line but no space before the continuation character failed, because the first argument on the continuation line fused together with the last argument from the previous line. This has been fixed for the following programs: dbl, dbl8, dblink, dblibr, dblnet, dblproto, dbl2xml, dblnet2xml. [tr#32361]
- The error message reported when a source file line was too long (greater than 8192 characters) was misleading. A "Source line too long" error (SRCLINLNG) is now generated. [tr#32285]
- Using ,x on a class record included from a repository gave an invalid INVQUAL error. This has been fixed. [tr#32344]
- A NEW statement without arguments on a DATA statement node now generates the correct error instead of a sementation fault. [tr#32482]
- In 9.5.1a, the compiler reported an INVCAST error when a variable had the same name as a built-in type and was used in an expression like (a)-a. This has been fixed. [tr#32508]
- (Windows, UNIX) The compiler now correctly removes trailing spaces from the translation of SYNCMPOPT so that an INVOPT error is not signaled. [tr#32511]
- Compiler (dbl)
- A segmentation fault previously occurred if directories in SYNIMPDIR exceeded 530 chars. This buffer has been extended to 10000, and a fatal error is reported when this limit is exceeded. [tr#32233]
- An invalid PROTOMISMC error no longer occurs when comparing prototype of class with nested class. [tr#32448]
- Using implicit external functions (-X) with method overloads no longer causes a segmentation fault during code generation. [tr#32477]
- Introduced in 9.3.1b, a cast of an unreferenced object handle generated a "synobj_store: Object handle not referenced" internal runtime failure on an assignment statement. This has been fixed. [tr#32473]
- Compiler (dblnet)
- We added a -qnet warning when ^DATATYPE(literal) is called on a MISMATCh alpha parameter. If ^DATATYPE(variable) is called, a level 4 warning will be generated. [tr#32332]
- Multi-dimensional arrays of groups and non-CLS structures are now supported. [tr#31535]
- We fixed several issues regarding the code generation for groups and non-CLS structfields that cause runtime failures. If you have any groups or non-CLS structfields, we strongly recommend that you recompile.
- Casting ^A(^VARARGARRAY) no longer causes an INVARGTYP error. [tr#32220]
- Casting a NEW expression to @object no longer causes a NOCONS error. [tr#32048]
- An explicit cast of a literal within an attribute call no longer causes a LoadHexArg error. [tr#32281]
- Passing the result of a ^M to an alpha parameter to a routine no longer causes an invalid OUTPARM error. [tr#32282]
- If a class field used a constructor of a subsequent class as its initial value, the compiler previously reported a NOCONS error even if the constructor was there. This has been fixed. [tr#32284]
- An ONERROR statement in the same routine as a FOREACH statement previously caused a duplicate label ilasm error. This has been fixed. [tr#32304]
- An .EQ. or .NE. comparison of nullable type to ^NULL previously reported an invalid NOOPER error. This has been fixed. [tr#32306]
- The compiler previously emitted code that triggered runtime errors for an implied decimal USING variable compared to a decimal MATCH variable; an array within a group within a struct used as a parameter; and ^M within .NOT. or .OR. The code emitted by the compiler has been fixed. [tr#32326]
- A numeric literal assigned to an alpha was previously stored as alpha, which left-justified the value. Now the numeric literal remains as numeric, causing it to be stored as numeric. [tr#32336]
- Code generation for a method call referenced on a boxed valuetype that caused a runtime error has been fixed. [tr#32342]
- Passing a null as the last parameter to a VARARGS method no longer causes a segmentation fault. [tr#32363]
- An invalid NOOPER error no longer occurs when a decimal is used in a logical .AND.. [tr#32378]
- Passing a CLS structure as an argument into an input parameter of a routine that modifies a field of the structure caused a nullreference runtime exception. This has been fixed. [tr#32380]
- Due to a compiler issue, the debugger previously stepped into a non-constructor routine before it was initialized. This has been fixed, and the first step point now occurs after the local data is initialized. [tr#32280]
- Due to a compiler fix, parent constructor calls can now be stepped into in the debugger. [tr#32373]
- Using ^NULL as an initial value for a reference type no longer causes an IVBAD error. [tr#32385]
- For routines whose declarations are in the same namespace but in split namespace declarations, static records in all but the initial namespace declaration were not getting initialized, causing runtime errors. The same problem also occurred for static records in partial classes. This has been fixed. [tr#32392]
- If an assembly has at least one warning and a rebuild of the assembly is attempted while the assembly is locked (such as by ildasm), the compiler now generates the expected F_OPENOUT error. [tr#32393]
- A null reference runtime exception no longer occurs when an enumeration value is cast to be stored into an i4. [tr#32401]
- Applications with a large number of global records in an external assembly took a long time to build. This time has been significantly improved. [tr#32449]
- Passing a Boolean to an OUT or INOUT parameter that would require a conversion is no longer allowed. [tr#32459]
- It was previously possible to get an AMBSYM error when using a non-generic delegate that had a corresponding generic counterpart in an imported assembly. This has been fixed. [tr#32461]
- Previously a BSTMTCH error occurred when a generic method existed that should have satisfied a call to System.Array.Sort. The resolver has been fixed to iterate over many overloads of a generic method that has the same number of type parameters. [tr#32463]
- We replaced publickey with publickeytoken in a generated assembly to aid the WPF designer. [tr#32503]
- We reduced memory usage by eliminating duplicate initial values from the literal pool. [tr#32526]
- Using an enumeration or delegate as a type argument to construct a generic type no longer causes an INVARG error. [tr#32567]
- An initial value on a local field whose type was structure or array of structs is no longer ignored when initial values are assigned. [tr#32582]
- ^M access was off by 1 times the size of a nested group or array. This has been fixed. [tr#32604]
- Arrayed parameter group access was off by 1 times the size of the array element. This has been fixed. [tr#32605]
- Debugger
- The debugger has been fixed to reference the correct named record in a class when the name is not unique. [tr#32405]
- Runtime
- A boundary condition that caused the sequential context of an ISAM file to be lost following a WRITE, STORE, or DELETE operation has been resolved. This condition only occurred on files with explicit fill density. Typical symptoms are a READS re-reading the first record or getting premature end-of-file. [tr#32525]
- (.NET) A memory leak that occurred when using the Select classes in the .NET runtime has been fixed. In addition, a Dispose method was added to the Select.From class. If the channel must be closed deterministically, you must explicitly call the Select Dispose method. [tr#32434]
- When using .EQS. in the Where portion of the Select class, optimization was not being turned on. This has been fixed. [tr#32259]
- An optimization error in the Select class that caused matching records to be skipped has been corrected. When using alpha fields, matching consecutive key segments where the length of each preceding segment did not match the length of the field or data being compared previously caused reference to an embedded partial segment and failed to match correctly. For example, (seg1.eq."3".and.seg2.eq."40") failed if the length of seg1 was greater than 1, whereas (seg1.eq."03".and.seg2.eq."40") worked if the length of seg1 was 2. [tr#32260]
- (Traditional) The Current property of the Select class now returns the current selected record with its length equal to the size of the record specified in the From object instead of the length of the record read (%RDLEN). [tr#32261]
- Using Select with Count or OrderBy when the length of the From record is shorter than the length of the actual file record no longer causes a segmentation violation. [tr#32277]
- (Traditional) A runtime error "Internal runtime failure: Undefined destructor" is no longer generated when XCALL LOCALIZE is used to alter case. [tr#32376]
- (Traditional) Since 9.1.1, a nondimensioned pseudo-array argument was not being processed correctly through ^ARGA when an index of 1 was specified. This has been fixed. [tr#32379]
- (OpenVMS) In version 9.5.1a, when an implied field of a dimensioned group was passed to a routine, the decimal places were stripped from the descriptor. This has been fixed. [tr#32436]
- (.NET) The first argument to XCALL ENVRN now correctly returns the operating system. [tr#32472]
- In 9.5.1a, using %SYN_ESCAPE_HANDLE could cause a segmentation fault. This has been fixed. [tr#32484]
- (.NET) A WRTLIT error is now generated if certain Synergy routines returning a literal string are passed to an argument and written to. [tr#32334]
- (.NET) In previous versions of Synergy .NET, the synuser.ini file was not supported at all. It is now supported when running under a logged-in username, along with synergy.ini, regardless of whether or not SFWINIPATH/SFWUSRINIPATH is set. [tr#32494]
- (.NET) If a thread shuts down before its channel is closed, CLOSE and other I/O operations sometimes got a segmentation fault. This has been fixed. [tr#32560]
- (Windows, UNIX) To assist in network troubleshooting, the system error code is now output in an InfoErr string when read errors occur while loading from DBR/ELB on a mapped drive or (on Windows only) when a DLL cannot be opened with %DLL_OPEN. [tr#32570]
- Some I/O statements did not wake up after being put to sleep by the synbackup utility. This has been fixed. [tr#32632]
- Synergy ActiveX API
- When more than 255 channels were in use, the ActiveX debugger could not be used to output to a file. This has been fixed. [tr#32488]
- Synergy DBMS
- The SDBMS generation of the following condition has been fixed;
however, an existing file may continue to exhibit the problem. The
latest version of isutl will now correct the problem using the -ra
option. For older Synergy versions, the latest isutl is also
available for download as part of Synergy DBMS Utilities from the
Resource Center on the Synergex web site, starting with 9.5.1b.
An error "Invalid bucket size" may occur when verifying or
reindexing an ISAM file with static RFAs with either compressed or
variable-length records. This problem only occurs when the maximum
record size is less than 96 bytes, but it may occur more frequently
when the size is less than 32. There are no adverse affects to
reading and writing to the file, only verifying and reindexing.
Due to this problem, you may not be able to re-index an afflicted
file unless the data records are compressed. Doing so on a file
without data compression may render the file unrecoverable. Use
fconvert to unload and reload:
1. fconvert -ii isamfile -ocf datfile 2. clear isamfile 3. fconvert -ic datfile -ai isamfile
[tr#32372] - A segmentation fault could occur in irecovr on a very corrupted file when writing out the exception record. This has been fixed. [tr#32543]
- An isutl -ra failure, "Bad data segment - non-correctable" when attempting to recover a very corrupted ISAM file, has been corrected. [tr#32544]
- The SDBMS generation of the following condition has been fixed;
however, an existing file may continue to exhibit the problem. The
latest version of isutl will now correct the problem using the -ra
option. For older Synergy versions, the latest isutl is also
available for download as part of Synergy DBMS Utilities from the
Resource Center on the Synergex web site, starting with 9.5.1b.
An error "Invalid bucket size" may occur when verifying or
reindexing an ISAM file with static RFAs with either compressed or
variable-length records. This problem only occurs when the maximum
record size is less than 96 bytes, but it may occur more frequently
when the size is less than 32. There are no adverse affects to
reading and writing to the file, only verifying and reindexing.
Due to this problem, you may not be able to re-index an afflicted
file unless the data records are compressed. Doing so on a file
without data compression may render the file unrecoverable. Use
fconvert to unload and reload:
- Synergy windowing API
- (.NET) We added row leading (extra space between rows) to match the metrics used in traditional Synergy on Windows. You can control this leading via the MINIMIZE_LEADING environment variable. [tr#32483]
- Utilities
- The command line processing of redirected commands that have multiple commands with continuation lines or with spaces after the continuation character has been fixed for the following programs: dbl, dbl8, dblink, dblibr, dblnet, dblproto, dbl2xml, dblnet2xml. [tr#32267, tr#32320]
- In 9.5.1 and 9.5.1a, the command line processing of redirected commands when the input file had a continuation line but no space before the continuation character failed, because the first argument on the continuation line fused together with the last argument from the previous line. This has been fixed for the following programs: dbl, dbl8, dblink, dblibr, dblnet, dblproto, dbl2xml, dblnet2xml. [tr#32361]
- In dblproto, we fixed the DBP file output for the type name that's emitted when prototyping an array. [tr#32479]
- Using -out on dblproto with namespace.synroutine.somename did not work the same in 9.5.1 as it did in 9.3.1. The DBP file created a synroutine namespace within the DBP (whereas this didn't happen with DBH files). Now, if .synroutine appears in -out, it can still be used for the filename, but you can only use the part before synroutine as the namespace created within the DBP file itself. [tr#32539]
- (UNIX) The synbackup utility has been changed due to some reported E_BACKUPMODE errors (resulting from an invalid base address). The -a option has been removed and will no longer be supported. Also, a new -d option has been added to disable synbackup (by removing the synbackup.cfg file and releasing shared memory). To correct this or any future E_BACKUPMODE errors (from an invalid base address), you must disable synbackup and then re-enable it (using synbackup -d and synbackup -c, respectively). In addition, synbackup -q now displays the number of current processes that are currently using synbackup. [tr#32631]
- Visual Studio integration
- Previously, the Task List > Comments section was not populated with the qualified items in the source code. This has been fixed. [tr#31493]
- We fixed an issue that prevented Synergy Language Integration from launching the Repository application when Synergy is installed to a nonstandard path. This also allows Repository to be run with the correct dbr.exe when in a 32-bit or 64-bit environment. [tr#32455]
- Individual Synergy build tasks are now cancelable instead of canceling only in between tasks. [tr#31966]
- When building the "Release" configuration, an error sometimes occurred because the build was looking for the debug version of the referenced assembly instead of the release version. This has been fixed. [tr#32547]
- Previously, when an interop project was built, the generated files were recreated even if no changes had been made to the project source files. Now we check whether the generated files needed to be regenerated or not. [tr#32545]
- We fixed an issue in code generation where a generated event from the WinForm or WPF designers could provide a malformed type on a parameter. We also fixed another issue where a generated event from the WinForm of WPF designers lacked a necessary MRETURN statement. [tr#32390]
- We added a copy icon to the Edit menu for the Copy entry. [tr#31506]
- We made several enhancements to the code generator to handle
generation of Synergy code in the Visual Studio WinForms designer,
Microsoft's svcutil.exe utility, and the C# to Synergy code
converter utility. This includes improved generation of
- abstract method declarations when comments are present
- code containing delegate method invocation expressions
- code requiring use of "internal" modifiers
- try/catch/finally blocks
- iterator statements
- delegate creation expressions
We also made incremental improvements to
- type handling in event declarations
- handling of array creation expressions
- handling of array indexers and type resolution
- output of type arguments on method calls
- support for inline renaming of some Synergy Language reserved
words
[tr#31836, tr#32474, tr#32324, tr#32323] - When using the 'using' or 'case' snippets in Synergy Language Integration, auto-expansion of enum fields for locally define enumerations would show a type of Void rather than the enumeration type. This has been fixed. [tr#32283]
- Hover over in the Synergy .NET debugger now works consistently. [tr#31583]
- WPF User Controls created in Synergy were not previously populated in the WPF Designer toolbox. This has been fixed. [tr#32374]
- When reloading the WinForms Designer in Synergy Language Integration while the designer.dbl file for the form contained a cast with a negative literal, the Designer failed to load. This has been fixed. [tr#32522]
- When loading the Designer in Synergy Language Integration, in some array or new object expressions, we may use the type of the first element to determine the type of the array itself. Under these circumstances, if the element was cast as an object, we were not correctly processing the object cast and subsequently did not find the correct type. An example of this problem was the DevExpress ChartControl. This has been fixed. [tr#32527]
- The icons in the Solution Explorer were not the same as for C# projects, so we added the missing ones to the menu bar for View Code and View Designer. They can be used to open the selected file in the editor. [tr#31563]
- We fixed a bug in which the wrong view of an open document in the editor was being activated. The same file can be opened up in the editor with multiple views, both designer and code view. [tr#32500]
- Typing a close parenthesis [)] caused an active IntelliSense popup to close, even when in a string literal. This has been fixed. [tr#32315]
- The IntelliSense has been fixed when global structures or enumerations are between one or more namespaces. [tr#32271]
- IntelliSense has been fixed to give the correct number of dimensions for an array of structfield arguments. [tr#32506]
- When in the open mode part of an OPEN statement, typing "SI" does not show IntelliSense for SI. (A similar problem occurs for SU, etc). [tr#32559]
- The Synergy/DE Interop project no longer generates an error if a structure for a struct field parameter came from a referenced DLL and not the repository. [tr#32442]
- The Synergy/DE Interop project no longer produces unescaped text for field descriptions. [tr#32480]
- A Synergy/DE Interop project did not report dblnet2xml errors in the output window and in the correct build panel, which also stopped the build. This has been fixed, and the build now continues even if dblnet2xml fails to create a generated file. [tr#32447]
- Projects created in a directory that contains '&' caused error dialogs to pop up frequently in Visual Studio when making changes in a designer or to the project. [tr#32205]
- Types from C# projects referenced by Synergy projects weren't showing up in the WPF designer. This has been fixed. [tr#32440]
- An XML file did not have "Resource" as an action in the "Build Action" property. This has been fixed. [tr#32453]
- Synergy entries in the Tools menu were unavailable until a DBL source file was opened. This has been fixed. [tr#32476]
- The Save All was not saving all of the modified property pages in a solution that contained multiple projects. This has been fixed. [tr#32517]
- In the project property pages if you select to build with a Win32Resource file, the file extension must be ".res". We added an error to be generated if this is not the case. [tr#31475]
- The correct copyright symbol is now used in the copyright date for projects in the AssemblyInfo.dbl file. [tr#32443]
- The Build menu entry was incorrectly active on the Project Properties page even when a build was in progress. This has been fixed. [tr#32451]
- Visual Studio crashed when the Select Folder button is clicked on the Environment Variables Property Page. This has been fixed. [tr#32495]
- In 9.5.1a, the resource wizard was adding files with invalid names to the project. This has been fixed so that invalidly named files can no longer be added. [tr#32504]
- When multiple items were changed on the Application property page, the settings were not always saved when the page was closed. This has been fixed. [tr#32516]
- xfNetLink Synergy
- A parsing error previously occurred when returning a null string followed by an output ArrayList of structures, and an exception in the wireToObject2 method was thrown. This has been fixed. [tr#32268]
- Analysis engine
- UI Toolkit [Expand All UI Toolkit | Collapse All UI Toolkit]
- Input Processing
- (UNIX, VMS) In previous versions, E_XUP and E_XDOWN would fail to leave a field at the field boundaries if the field had a leave method. This has been corrected. [tr#32311]
- Utility Routines
- (Windows) In previous 9.1, 9.3, and 9.5 versions, calling U_BAR with D_REMOVE and D_INFO would not remove the information line unless OPTIMIZE_REDRAW=0 was set in the environment. This has been corrected. [tr#32337]
- In previous versions, if U_OPEN was called with the D_NOALLOC flags passed TRUE, and an open error occurred, the channel was released and the channel argument cleared, even though the channel had not been allocated by the Toolkit. This has been corrected so that the channel is not released and the argument is not cleared under these circumstances. [tr#32491]
- Input Processing
- Connectivity Series [Expand All Connectivity Series | Collapse All Connectivity Series]
- SQL Connection
- (Windows, UNIX) We added support for MySQL (version 5.1 and higher) on AIX, and we dropped support for MySQL 5.0 versions (which are no longer supported by Oracle) on Windows and Linux platforms. The minimum MySQL version for SQL Connection on Windows, Linux, and AIX is now 5.1. [tr#32490]
- (Linux) The sqlunixbld script has been fixed to link correctly for MySQL on Linux. [tr#32467]
- SQL Connection
- Repository
- Repository now supports the specification of an Alias name when defining a field of type Struct (structfield). [tr#32419]
- We added UI support for the definition of Alias structures. An alias is an alternate name for a structure. Aliases are useful when converting an application to use the Repository and you don't want to change structure names in your code, or when you are converting records to structures and you need to define a structfield of that type, but you still have it as a record also. NOTE: If you previously created aliases in your repository via schema, you MUST RUN THE VERIFY UTILITY to update a new alias counter maintained with each structure. [tr#32485]
- Rpsxref.dbr now generates an "Error 17: Invalid temporary filename" error when RPSTMP is set to a nonexistent directory instead of failing with an "Illegal channel number" error. [tr#32147]
- The Template Override Flag is now set correctly to "Coerced type" when loading a schema where a field or template overloads a parent template's Coerced Type value. Previously, the "Prec" override flag was set. [tr#32305]
- Previously, when adding a group, if you *typed* an implicit group name into the Structure field on the Field Definition tab, and then pressed F4 while your cursor is still in that field, after saving changes, a Verify of your repository would find an invalid Child Count for the owning structure. This has been fixed. [tr#32197]
- Previously, if a given structure was referenced as an implicit group or structfield by more than 156 fields, most of those reference record entries would be lost. A "verify" of the repository would report these missing references and indicate that it had corrected them. But a subsequent re-verify would still indicate that they were missing. Both of these bugs have been fixed. [tr#32486]
- We removed the use of the sequential list mechanisms and memory pool, and replaced them with ArrayLists. This has no visible affect to the user, other than when running the application, there will no longer be temporary sequential list files created. (There will still be temporary repository files created when editing the attributes of a structure.) [tr#32296]
- Previously, when the Definitions list for Field, Keys, Relations, Tags, or Formats was displayed and you did a Find, then a Find Next was not successful. This has been corrected. [tr#32487]
- The Load repository schema utility now works as documented in that it ignores User Type strings on non-User fields. This bug manifested itself as a harmless UI anomaly. [tr#32666]
- (OpenVMS) We fixed a bug introduced in 9.5.1 that caused an error to occur when running rpsutl. [tr#32383]
- Report Writer
- Professional Series Workbench [Expand All Professional Series Workbench | Collapse All Professional Series Workbench]
- Synergy/DE projects
- New Synergy/DE, Synergy/DE Application, Synergy/DE Executable Library (ELB), and Synergy/DE Object Library (OLB) projects no longer have "-X" as a default compilation option. When used in conjunction with strong prototyping, it can mask type mismatch problems making them more difficult to debug. [tr#32489]
- Tagging
- Tagging performance of files with a large number of prototype files for subroutines and functions has been significantly improved. [tr#32528]
- Space characters in the quoted string are no longer stripped when a string value for a .DEFINE is tagged. [tr#31876]
- We fixed a problem that caused tags for routine signatures that contained more than one closing parenthesis (e.g., when a parameter is cast as ^VAL/^REF/^XTRNL) to be cut off at the first close parenthesis. [tr#32099]
- When displaying function help for a routine or otherwise displaying type signatures for variables, a variable of type "boolean" had an empty type signature. This has been fixed. [tr#32230]
- We fixed several incorrect parameter entries and type information in the builtin routine information for the TB_* routines. [tr#32272]
- After an upgrade, Workbench will no longer attempt to tag the last open workspace prior to displaying the release notes. This is a change for the benefit of users with large projects, who would experience long delays before the editor became usable. [tr#32566]
- Visual editor
- When creating .REGION/.ENDREGION pairs, it was possible for the editor to get into a bad selective display state such that multiple .REGION/.ENDREGION pairs collapsed to the wrong beginning or ending keyword. This has been fixed. [tr#32347]
- Synergy/DE projects
- xfServerPlus
- Synergy Language [Expand All Synergy Language | Collapse All Synergy Language]
- Synergy/DE 9.5.1a [Expand All | Collapse All]
- Synergy Language [Expand All Synergy Language | Collapse All Synergy Language]
- Analysis engine
- Groups of a non-alpha type are now correctly prototyped. [tr#31646]
- A syntax error no longer occurs if a ^ function (for example, ^NULL) in a Boolean expression in a complex statement such as IF or WHILE is followed by a statement keyword. [tr#30664]
- An incomplete statement entry within a USING or CASE statement previously caused IntelliSense failures in Workbench and Visual Studio. This has been fixed. [tr#31337]
- (Windows) Using TextBox.Text.ToString (without the parentheses on ToString) previously caused a segmentation fault. Now a compile-time error is correctly reported. [tr#31840]
- When using redirected input (or Visual Studio), subsequent compiles after an ASMLOAD error previously resulted in a segmentation fault. This has been fixed. [tr#31845]
- Compilers (dbl & dblnet)
- Redirected input with line continuation characters is now processed correctly for the following programs: dbl, dblnet, dblproto, and dbl2xml. [tr#31650]
- The command line processing of redirected commands with more than one continuation line has been fixed for the following programs: dbl, dbl8, dblink, dblibr, dblnet, dblproto, and dbl2xml. [tr#31734]
- An NFND error previously occured when an initial value used a property that was declared later in the class. This has been fixed. [tr#30863]
- An INVCAST error previously occurred when using an explicit conversion that was declared later in the compilation unit. This has been fixed. [tr#30909]
- A BSTMTCH error previously occurred when a method was used as the initial variable value in a DATA statement but the method wasn't declared until after the DATA statement. This has been fixed. [r#31015]
- An IMPSTOP error previously occurred on abstract methods when compiling with -W4. This has been fixed. [tr#31121]
- Previously a method could have the same name as a built-in type, thereby hiding the built-in type. The compiler now gives a level 3 TYPHID warning in this situation. [tr#31351]
- A NOOPR error previously occured for op_LogicalNot when an !stringVar was encountered. This has been fixed to convert the string to alpha and then apply the operator. [tr#31358]
- Dblproto now correctly honors system option #28, without causing a compiler error. [tr#31636]
- (Windows) A REQPARM error previously occurred when SETSTATE or GETSTATE was XCALLed. This has been fixed. [tr#31699]
- An assignment to a range within an IF expression now correctly causes a RECWHANDLE error. [tr#31733]
- A problem in the command line processor for several utilities (dblproto and dbl2xml) previously caused errors when invocation options contained a quoted path with a space. This has been fixed. [tr#31754]
- An INVCAST error previously occurred when casting to [#]string. This has been fixed. [tr#31788]
- An INVNUMDIM error previously occurred on an assignment that accessed an array of ^ARGN() or ^ARGA(). This has been fixed. [tr#31827]
- Using PROTECT as an I/O qualifier no longer causes an INVQUAL error. [tr#31857]
- A nested group field whose size is equal to or less than a group's declared size previously caused a NOEXTEND error when a referenced overlay field using the @ syntax was used. This has been fixed. [tr#31883]
- Assignments within .AND.,.OR.,.XOR., or .NOT. are now correctly reported with a NOTBEXP level 4 warning when compiling with -W4 and -qerrwarn. [tr#31082]
- A file that included itself more than once exhausted memory from recursively trying to process .INCLUDEs. Now when the first NUMINCL error is reported, the parser stops trying to include more files, which prevents the memory usage issue. [tr#32003]
- Passing (int)-1 as an argument value no longer causes an invalid WROARG error. [tr#32054]
- The second operand now correctly resolves in an operation with a left-hand side of new someclass(). [tr#32069]
- When using ^M in a routine argument, an HSIZERR error now occurs if the structure field is larger than the ^M being referenced. The traditional compiler no longer removes the explicit[1] from an array field used with ^M, which would otherwise cause an HSIZERR despite the explicit[1]. The .NET compiler now correctly creates an array descriptor when passing a structure field to an array argument. [tr#31884]
- Compiler (dbl)
- We added an INVFCALL warning (level 4) for functions that are called without a "%" or without parentheses. Because such functions are susceptible to other compile-time errors that may not be obvious, we recommend that you correct them. [tr#31978]
- Structfields are now fully supported in group arguments. [tr#31748]
- Variable review processing (with the -qvar_review compiler option) has been fixed to correctly show a referenced data reference operation argument as a variable and not an argument, as well as indicate whether the reference is destructive. [tr#31657]
- When compiling with -T and calling a method with a trailing ^NULL literal argument, the null was previously stripped, resulting in incorrect overloading that caused a MOREARGS error to be reported. This has been fixed. [tr#31739]
- An INTCMPERR error previously occurred when -qvar_review was specified on a source that had a function with an undefined argument. This has been fixed. [tr#31878]
- When a program compiled with -qcheck has a reference to ^arg(num)(index) or ^arg(num)[index], a HATFNC {ARGA[]} opcode is now correctly output, instead of a HATFNC {^ARGA+MOD} opcode followed by an INDEX opcode. [tr#31903]
- (Windows) An array of structures in ^M previously caused an incorrect SFLDREQ semantic error. This has been fixed. [tr#32027]
- Casting d to int previously gave an INVCAST error. Now explicit casts from d, d., n, or n. to int (for example, (int)mydvar) transform into a call to %INTEGER(). [tr#32036]
- Using the operators *=, +=, -=, and /= with integer variables on the left side and an implied variable on the right side no longer causes a NOTALLOWED error. [tr#31486]
- Previously, a function that was not called as a function didn't run all argument checks. As a result, some warnings (such as VALREQD) were not generated. This has been fixed. [tr#31782]
- (Windows) An INVTYP error previously occurred when using an indexer qualifier on a string return value of a method. This has been fixed. [tr#31838]
- A DATA statement with the same name as a base class virtual method no longer gives an invalid NEWREQ error. [tr#32094]
- In a source compiled with -qnoargnopt, for a USING statement that has a string control variable, any literal USING entry is changed from ("AB") to (.eqs. "AB") to do a string comparison. [tr#32120]
- Compiler (dblnet)
- We added support for specifying attributes on an enumeration member. [tr#32130]
- We added support for loading, using, and declaring generic delegate types, methods, and interfaces. [tr#31503, tr#31751, tr#31776, tr#31783, tr#31795]
- We added support for the ^TYPEOF data reference operation to determine the data type in an attribute value. [tr#31777]
- We added support for D_ADDR in a structure with ^M. [tr#31880]
- We added support for optional parameters whose type is a non-CLS structure. [tr#32256]
- The DATA statement can now appear anywhere within a BEGIN-END block. If it is used before it is declared, a USEBDECL error occurs. [tr#31998]
- We added support for mixing positional and assignment attribute values in an attribute. Note that positional values must come first, or an UNSUPPORT error will occur. [tr#31965]
- Previously, an ID in the middle of a path whose name matched an operator caused an INVEXPR error. For example, cvar.band.fld1 treated "band" as an operator in the parser. We added the ^ID function to encapsulate an ambiguous ID, which enables the parser to recognize it as an ID. In the example above, the offending path would become cvar.^id("band").fld1. [tr#32006]
- We added the MISIMP3 error to indicate when a method, event, or property in a class has a different case than the associated interface's equivalent matching member. Previously a TypeLoadException occurred at runtime. [tr#31816]
- Override methods and properties that don't match the case of the original might not get run in a virtual calling scenario. If this situation is encountered, the case for the override method will be changed to match the base method, and a CHGCASE warning (level 3) will be issued. [tr#31826]
- Previously, if a program was built with the debug option and a record or group was referenced but its fields were not referenced, the fields did not show up in the debugger. This has been fixed. [tr#31645]
- Previously, a CATCH variable could not be viewed in the debugger. This has been fixed. [tr#31629]
- A DUPRTN error is now correctly reported if a subroutine or function with the same name exists globally or in the same namespace. [tr#31505]
- The characters ampersand, greater than, less than, apostrophe, single quotation, and double quotation are now correctly escaped in XML documentation comments processed by dblnet -doc. [tr#31546]
- A NOTCEXP error previously occurred if nonliteral initial values for a DATA statement were declared after the DATA statement. A DATA statement now allows nonliteral initial values. [tr#31593]
- When compiling with -W4, the method signature portion of an EVTHDLR message method now shows the parameter modifiers as expected. [tr#31611]
- The compiler no longer reports alignment warnings for external literals. [tr#31615]
- The compiler no longer generates a segmentation fault for a SET statement with only one variable. [tr#31685]
- Use of scope in an IF statement previously caused bad code to be generated, which in turn caused a runtime failure. This has been fixed. [tr#31697]
- A segmentation fault sometimes occurred on nested constructed types that used a combination of built-in types and imported or local types for construction. This has been fixed. [tr#31701]
- Previously, an incorrect name was created when creating multidimensional arrays of boxed descriptors. This has been fixed. [tr#31718]
- An incorrect syntax for initializing a dynamic array using the NEW keyword previously caused a segmentation fault. This has been fixed. [tr#31719]
- A cast of a property no longer causes an incorrect NFND error. [tr#31742]
- An invalid TYPCONS error previously occurred if a type was used in the construction of a generic base type and that type was declared after the construction. This has been fixed. [tr#31743]
- A BDINITVAL error previously occurred if nonliteral string values were declared as the initial value in a dynamic array of objects within a DATA statement. This has been fixed. [tr#31744]
- Overloads between types d and d. are now allowed. A DUPMETH error no longer occurs. [tr#31749]
- An INTCMPERR error previously occurred if a class contained both an initialized enum field and two or more constructors. This has been fixed. [tr#31750]
- Using an enum type in a generic class previously caused a segmentation fault when a generic class was constructed. This has been fixed. [tr#31760]
- Setting a nullable property to ^NULL previously generated code that caused a runtime null reference exception. The code is now generated correctly. [tr#31761]
- If a private and nonprivate method with the same signature exists in the same class, the resolver now picks the first nonprivate one. [tr#31762]
- A NOTIMPLE error previously occurred when a handle type was used with the .IS. operator. This has been fixed. [tr#31766]
- A VARGOBJ error previously occurred when a group was passed as a vararg argument. This has been fixed. [tr#31770]
- Protected internal fields and properties are no longer loaded as private, and the resulting ACCESS errors no longer occur. [tr#31772]
- A TYPMISMCH or BSTMTCH error previously occurred when an overloaded method whose first overload didn't match a delegate assigned to a variable or parameter of that delegate type. This has been fixed. [tr#31781]
- An event with an unresolved delegate type no longer causes a segmentation fault during an ADDHANDLER call. [tr#31775]
- An INIT of a group element no longer causes the element that follows to be cleared. [tr#31779]
- A TYPMISMCH error previously occurred when a new value type was assigned to a field whose type was the boxed version of that value type, or System.Object. Now the new value type is automatically boxed under these circumstances. [tr#31786]
- Casting an integer function return value to enum previously yielded an invalid value. This has been fixed. [tr#31787]
- A FOREACH statement iterating over an array in a source program that declared arrays to be zero-based (with .ARRAY 0) previously caused an IndexOutOfBounds exception. This has been fixed. [tr#31789]
- Passing in an instance method to a new delegate no longer generates invalid code. [tr#31790]
- An INVDATADEC or INVMTHDHDR parser error previously occurred when using a generic interface in an implements list or in a method declaration. This has been fixed. [tr#31794]
- Passing a cast of a method or property call to a BYREF parameter no longer causes a fatal error at runtime. [tr#31796]
- An "Invalid IL" exception previously occurred when using a delegate within a generic class in an ADDHANDLER statement. This has been fixed. [tr#31808]
- FOREACH on Dictionary previously resulted in a generic temp whose type in MSIL was bad, which caused a type load exception at runtime. The construction of types nested within a generic has been fixed to prevent this exception. [tr#31818]
- A runtime error previously resulted from getting a field from a boxed type. This has been fixed. [tr#31823]
- Scope on an ^ARG function previously produced bad MSIL, which could result in an EntryPointNotFound exception at runtime. This has been fixed. [tr#31828]
- Using FOREACH on DataGridViewRowCollection previously generated incorrect code that caused a runtime problem. This has been fixed. [tr#31829]
- Doing a symbol table dump, -qdbg:imp, of overloaded generic structures previously combined the fields from both overloaded generic structures. This has been fixed. [tr#31835]
- An invalid INVTYPSIZ error no longer occurs when declaring a field of a nested type within a generic type. [tr#31837]
- If an object argument is passed by reference on .NET, the types must match exactly. If the type of the argument passed was derived from the type of the declared argument, the error was not correctly reported previously. This has been fixed. [tr#31585]
- The compiler now supports the ParamArrayAttribute calling convention, such as what is used on String.Format(), including semantic checks relating to this new convention. [tr#31688]
- A TypeLoadException was previously encountered when using an enumeration type for a property within an attribute value. This has been fixed. [tr#31825]
- If an event in an assembly referenced a nested delegate in another referenced assembly, the compiler previously issued an unexpected NTTREF error when loading the event. This has been fixed. [tr#31871]
- A segmentation fault no longer occurs after a constructed delegate when using the SchedulerControl from DevExpress. [tr#31873]
- A segmentation fault previously occurred if arrays in nested groups were used in ^M. This has been fixed. [tr#31879]
- ^ARGN(1)(2) is now treated the same as ^ARGN(1)[2], to give the same results as traditional Synergy. Previously an error occurred. [tr#31882]
- A NFND error previously occurred on ^ARGA(1)[] or ^ARGN(1)[]. This has been fixed. [tr#31889]
- Partial classes with initialized static descriptor arrays no longer generate bad MSIL. [tr#31905]
- Assigning to a structure reference from an array reference previously generated invalid MSIL that subsequently caused a runtime failure. This has been fixed. [tr#31910]
- A runtime error no longer occurs when calling a method from a parameter whose type is a CLS structure. [tr#31911]
- Passing an array as the second parameter to ^M now correctly adds an implicit array reference [1] to that parameter, giving an error when the first parameter is larger in size than an element of the array. [tr#31921]
- Literals or literals cast as objects that were passed to parameters of type object previously had their types change from a Synergy literal types to the corresponding .NET literal type. If you want Synergy literal types, cast the literal as the desired Synergy type. [tr#31922]
- We have optimized runtime performance and MSIL code generation for ^M. You must recompile your code if you use ^M, or you will get missing method runtime exceptions. [tr#31923]
- Assigning to a field in a boxed struct previously caused a null reference exception if the structure was declared nested within a class. This has been fixed. [tr#31925]
- A set of multiple items previously generated bad MSIL if the element types were not the same. This has been fixed. [tr#31927]
- Assembly parameters of type [*]n, [*]n., or [*]i are now correctly loaded as [*]a, which means a runtime error no longer occurs when a method with those parameter types is run. [tr#31928]
- Passing any of the .NET int types (including D_ADDR, which is IntPtr) into ^M and assigning the result to a field of that type previously produced invalid MSIL. This has been fixed. [tr#31929]
- Using ^ARGN in the CASE statement previously caused bad runtime behavior. This has been fixed. [tr#31930]
- Using ^M on a group array reference previously created bad MSIL, resulting in an object reference error at runtime. This has been fixed. [tr#31931]
- The presence of a group in an unreferenced structure previously caused the structure to be referenced and emitted by the MSIL code generator. This has been fixed. [tr#31932]
- When operators are resolved, integer operands are now promoted to the smallest integer size in which both operands can fit. [tr#31462]
- A group array inside a group array parameter no longer causes a "not supported" error. [tr#31644]
- Literals of type Char are now supported. Previously, alpha literals passed to Char arguments caused TYPMISMCH error. [tr#31887]
- A FOR loop using i8 variables no longer causes runtime issues. [tr#31935]
- Using an @delegate parameter in a NEW statement that sets an initial value previously caused a NOTIMPLE error. This has been fixed. [tr#31942]
- An invalid cast error on a ranged MISMATCH n parameter has been fixed. [tr#31945]
- A group nested within another group in a global data section previously wasn't loaded from an assembly, which caused a GDSMSMCH error. This has been fixed. [tr#31949]
- Using internal accessibility on a global structure or delegate previously caused an MSIL error. This has been fixed. Also, modifiers on delegates are now checked as expected. [tr#31953]
- Multiple records in a global data section could previously be offset on int boundaries, causing the size of the global data section to be too small. Now a global data section is large enough, and record sizes and offsets are correct. [tr#31958]
- A group parameter that contains an array of structures no longer causes an error. [tr#31641]
- Nested VARARGS routines incorrectly used the same temporary variable for the VARARGS parameters. This has been fixed. [tr#31973]
- Passing a type name into a statement that expects an alpha now generates a TYPMISMCH error along with the fully qualified name of the offending type. [tr#31975]
- Previously, if a delegate with parameters wasn't given correct argument values, the compiler reported an NFND error. Now it reports why the match with the delegate wasn't made. [tr#31993]
- Using ADDHANDLER on an event whose type is a generic delegate declared within a generic class no longer causes a missing method exception at runtime. [tr#32001]
- If a class had two events with the same name, differing only by case, an AMBSYM error previously occurred. Now if the usage exactly matches the event case, that event is used; otherwise, an AMBSYM error is still returned. [tr#32007]
- Passing a type parameter with a constraint into another type parameter with the same kind of constraint previously gave a TYPCONS error. This has been fixed. [tr#32008]
- It was previously possible to get an unresolved type error when using a non-generic class that had a generic overload that contained another type. This has been fixed. [tr#32010]
- Having an array of structures in a parameter group now works as expected. [tr#32011]
- Adding an interface-qualified property to a class with the same name as the constructor caused an AMBSYM error when using the constructor. This has been fixed. [tr#32014]
- System.Windows.Forms.Control.get_Font was previously loaded with unresolved parameters, causing bad MSIL. This has been fixed. [tr#32019]
- When a method was passed to ADDHANDLER, the check to ensure that a static or instance method was accessed properly was not being done. This has been fixed. [tr#32040]
- A field of a constructed type was incorrectly put in the layout of a record, causing alignment issues on 64-bit Windows as well as a TypeLoad exception at runtime. This has been fixed. [tr#32046]
- Accessibility errors are no longer incorrectly reported when generic type parameters are used in nested interfaces. [tr#32053]
- Casting a literal value within an attribute previously caused an "Unhandled Type in LoadHexArg" error. This has been fixed. [tr#32059]
- Specifying a box type of literal on an initial value no longer gives an IVBAD error. [tr#32060]
- The nameId for delegate parameters is now being correctly populated in a DBP file. [tr#32068]
- An invalid initial value on a DATA statement no longer causes a compiler exception. [tr#32097]
- A segmentation fault no longer occurs in the dblnet compiler and Visual Studio if a SET statement has a complex expression on the right. [tr#31723]
- A generic struct defined within a generic class previously wasn't being loaded or constructed correctly. This has been fixed. [tr#31839]
- Two local data fields with initializers of the same class no longer cause MSIL code generation failure. [tr#32086]
- An initial value expression in a class field that requires temps no longer causes an undeclared identifier error at compile time. [tr#32097]
- Doing an INIT of an element in an arrayed group previously caused a segmentation fault at MSIL code generation time. This has been fixed. [tr#31773]
- A dynamic array of strings with initial values no longer causes a runtime exception when the program is run. [tr#32115]
- An invalid accessibility error previously occurred when the overload for a method included a private, interface-specific method. This has been fixed. [tr#32119]
- We added support for an initial value of a new array for a dynamic array field. [tr#32121]
- We added extra text to the ISSTAT error to indicate the resolution path for the error. [tr#32135]
- Passing a delegate call to the Invoke method previously caused a segmentation fault. This has been fixed. [tr#32136]
- A string control variable in a USING statement causes string comparisons on USING literal entries. [tr#32120]
- An optional argument to an indexer or in a method call no longer causes a segmentation fault. [tr#32152, tr#32153]
- Using %MEM_PROC in a constructor no longer causes a runtime error. [tr#32156]
- We added a PASSUR warning (level 3 in dblnet, level 4 in dbl) that will occur when a decimal or implied-decimal type is passed into a MISMATCH alpha argument that is not marked as IN. [tr#31962, tr#32160]
- Accessing a field within an object whose handle is in a structure no longer causes a runtime error. [tr#32162]
- Multi-level arrays of .NET types no longer cause runtime errors. [tr#32170]
- Passing the result of ^M to routines that take a structure as a parameter type no longer causes a runtime error. [tr#32171]
- Casting a void function as void no longer results in a stack underflow. [tr#32172]
- Some invalid uses of classes or structures were not being reported. This has been fixed. [tr#32154]
- Passing an integer type to a DISPLAY statement no longer causes runtime errors. [tr#32155]
- Inappropriate uses of an enumeration type are now reported as expected. [tr#32157]
- Errors for invalid use of classes and structures are now reported as expected. [tr#32158]
- We fixed the emission of a generic type that uses a boxed value type as a type argument. [tr#32191]
- A NOTALLOWED error is now reported if a reference type is preceded by an "@" character when being passed as a type argument (for example, List<@string>). [tr#32192]
- Passing a group to a global structure parameter no longer causes an invalid NFND error. [tr#32223]
- Passing a non-CLS structure to a parameter group no longer results in an error at runtime. [tr#32224]
- Passing ^X() of a literal to an object parameter no longer causes a segmentation fault. [tr#32226]
- A BYREF parameter whose type was generic was no longer considered to be BYREF when the assembly was loaded, which caused a runtime failure. This has been fixed. [tr#32244]
- Previously, code was incorrectly generated when ^PASSED was used with a group parameter. This has been fixed. [tr#32248]
- Previously, an attribute specified with "returntype:" was being applied to the method and not the return type. This has been fixed. [tr#32257]
- Debugger
- If a breakpoint is set on the constructor method of a class that extends another class with a constructor method, the debugger now breaks as expected on entry to that constructor method. [tr#31792]
- Negative values are now displayed correctly in implied-decimal fields with zero places to the right of the decimal point when the value completely fills the field's digits. [tr#31915]
- The debugger no longer loads a nonexistent Framework class when checking whether an object is of that class. [tr#31936]
- Group parameters and ^M are now available on entry to the routine. Previously, they were not usable until the first access to the type in question. [tr#31746]
- The EXAMINE of a field that's a structure or class handle and has the same name as another field that's in a class that extends another class has been fixed to correctly display the fields of the structure or class handle. [tr#31934]
- When STEP OVER was used to leave a callback method activated through dotnet_tkinput, a segmentation violation occurred. This has been fixed. [tr#32047]
- The lines of debug window output are now properly terminated when duplicate globals have differing sizes. Previously the warning messages all ran together. [tr#32241]
- Installation
- (Windows) We added support for hosting WCF services in IIS to Synergy/DE Core Components. [tr#31886]
- (UNIX) The installation script has been updated to correctly detect a rooted path (starting with a slash '/'). A subdirectory path can now be specified that will have the current directory path appended to the beginning. When an alternate location of the gzip files is specified, the installation script will continue to look for subsequent gzip files in the same location. [tr#31735]
- Librarian
- The command line processing of redirected commands with more than one continuation line has been fixed for the following programs: dbl, dbl8, dblink, dblibr, dblnet, dblproto, and dbl2xml. [tr#31734]
- Linker
- The command line processing of redirected commands with more than one continuation line has been fixed for the following programs: dbl, dbl8, dblink, dblibr, dblnet, dblproto, and dbl2xml. [tr#31734]
- Runtime
- Performance of the Select class using large records has
been improved. To enhance performance even more, a new From
class flag (Q_NO_GRFA) has been added to disable the generation
of a GRFA for each selected record. This flag should only be
used if a GRFA will not be needed from the selected match set.
To use the Q_NO_GRFA flag, use the lock and wait form of
the From class constructor, and specify Q_NO_GRFA on the lock
argument (using bitwise OR with a locking option). For example,
fobj = new From(ch, Q_NO_GRFA, 0, rec)
orfobj = new From(ch, Q_NO_GRFA|Q_NO_LOCK, 0, rec)
[tr#31797] - (.NET) %TNMBR now returns the same value in Synergy .NET as it does in traditional Synergy when the TNMBR environment variable is not set: 0 if the process is an interactive user session and -1 if it is not attached to the user interface. [tr#31740]
- (Windows, UNIX) We added a buffering feature, which improves performance of sequential WRITES and PUTS calls. Records waiting to be written to the server are held in a buffer on the client and then written all at once, which improves file loading performance. This feature is supported for relative and sequential files that are opened in output or append mode (WRITES) and for stream files that are opened in output or append mode (WRITES or PUTS). Buffering is turned on by setting the SCSPREFETCH environment variable (on the client) to the size of the buffer. (Setting SCSPREFETCH now turns on both prefetching and buffering.) [tr#31865]
- A new OPEN option, BUFSTORE, has been added to enable the records being stored to be cached on the client side of an xfServer connection when system option #36 is not set. The buffered stores are flushed when the buffer is full, a READ/READS/FIND is performed, or a STORE with a GETRFA is performed. An explicit FLUSH statement flushes the buffered stores and turns off store caching. The environment variable SCSPREFETCH can be used to modify the size of the buffer. [tr#31866]
- (.NET) Due to performance improvement changes, the version of the synrnt DLL was changed to force a code rebuild. [tr#32055]
- (.NET) A STOP chain using a Synergy logical, or missing an .EXE extension, did not previously work. This has been fixed. [tr#31741]
- S_MATCH has been fixed to properly handle multiple double quotation marks within a quoted string. [tr#31700]
- When the Count property is used with a Select object created with OrderBy.AscendingKey(n) or OrderBy.DescendingKey(n), where n is an opposite-ordered key index, it now returns the correct count, instead of always returning 1. [tr#31745]
- When using the Select class with a pre-9.3 server, a SRVNOTSUP error is now correctly generated. [tr#31774]
- (ISAM) The Q_NO_LOCK OPEN option (LOCK:Q_NO_LOCK) on a file now only disables record locks (not index locks) due to file integrity errors that may occur when used improperly. Instead, the open (regardless of whether Q_NO_LOCK is specified or not) will automatically detect if a file is capable of locking and will then turn locking off only when appropriate (i.e., the file system is read-only, or system option #50 is set and locking is not permitted). On a channel opened for update, LOCK:Q_NO_LOCK now causes the channel to act the same as if it were opened for input. (This change only affects the OPEN statement; it does not include the LOCK:Q_NO_LOCK options used by other I/O statements such as READ and READS.) [tr#31785]
- When no inner exception exists, InnerException now correctly returns ^NULL rather than a null string. [tr#31793]
- (Windows, UNIX) An INVARG error previously occurred when a Where expression in a Select class referenced a non-integer key segment in a file whose length was shorter than the field's length, and the file was accessed through xfServer. This has been fixed. [tr#31804]
- A memory (object) leak introduced in 9.5.1 occurred because the expansion of the capacity of an arraylist did not release the old object containing the arraylist elements, nor was the scope of the arraylist elements set to the new object. This has been fixed. [tr#31936]
- An OPEN(O:I) with the FDL qualifier now produces the correct error text when the XDL/FDL file contains a key segment that spans the end of the record. [tr#31947]
- (OpenVMS) When a READS on an ISAM file follows a FIND ^FIRST and FIND of a key value past the last one in the file, the READS now correctly generates an EOF error. [tr#32021]
- A situation in which local data handles are declared within an IF statement BEGIN-END block no longer causes the Synergy runtime to generate an $ERR_INVCLSHND error or segmentation fault. Also, a situation in which local data handles are declared within an IF-CASE or USING statement BEGIN-END block and an EXIT statement is executed from within that block no longer causes the Synergy runtime to fail with a segmentation violation. [tr#32022]
- (SCO UNIX) An error generated in a TRY-CATCH block is now caught as expected. [tr#32239]
- Performance of the Select class using large records has
been improved. To enhance performance even more, a new From
class flag (Q_NO_GRFA) has been added to disable the generation
of a GRFA for each selected record. This flag should only be
used if a GRFA will not be needed from the selected match set.
To use the Q_NO_GRFA flag, use the lock and wait form of
the From class constructor, and specify Q_NO_GRFA on the lock
argument (using bitwise OR with a locking option). For example,
- Synergy DBMS
- The bldism utility now generates the appropriate error message when using the -K option with an invalid XDL/FDL file. In isutl, the verification of a file containing a key segement that spans the end of the record now generates a verification error that indicates the bad key. [tr#31947]
- Synergy HTTP document transport API
- (UNIX) Attempting to use HTTPS with the HTTP document transport API on HP-UX no longer fails with an "HTTPS not available" error. [tr#31843]
- An escaped "%" in the userinfo part of a URI for an %HTTP_CLIENT_GET request no longer causes an invalid authorization string leading to a "Bad Request" error. [tr#32034]
- Synergy .NET API
- Returning ArrayLists, strings, and arrays from properties previously caused a memory leak. This has been fixed. [tr#32000]
- Synergy windowing API
- (Windows) In previous versions, if the application window font changed between single field input calls (WD_READS, WD_ACCEPT, WF_INPUT, READS, ACCEPT, etc.), the edit control for input was resized accordingly, but the font used for text was not updated correctly. This has been fixed. [tr#31890]
- Synergy Windows printing API
- (.NET) We added support for the print previewer, which is accessed via DWP_PREVIEW in the %WPR_EXECUTE routine. The optional help routine argument to DWP_PREVIEW is ignored.
- In Versions 9.3.1b through 9.5.1, when using a Print dialog without the DWP_PRINTDLG_STYLEPRINT flag to change the number of copies, the number of copies produced was sometimes the number of selected copies squared. This has been fixed. [tr#31778]
- A segmentation fault no longer occurs when the print spooler is stopped. [tr#31861]
- Synergy XML API
- Special characters (ASCII 127 - 255) are now encoded using XML decimal encoding. [tr#32041]
- Utilities
- The dblproto utility has a new -N option, which processes decimal type arguments as numeric (equivalent to setting system option #28). [tr#31791]
- Line continuation characters in a redirect file are now processed correctly for the following programs: dbl, dblnet, dblproto, and dbl2xml. [tr#31650]
- The command line processing of redirected commands with more than one continuation line has been fixed for the following programs: dbl, dbl8, dblink, dblibr, dblnet, dblproto, and dbl2xml. [tr#31734]
- Visual Studio integration
- We now support Add Service Reference using svcutil.
- We made several changes in the code-behind support to better support the design-time experience with the Microsoft, Infragistics and DevExpress controls.
- We made numerous improvements to the code converter, and generated code from C# is much cleaner with direct one-to-one statement mapping when available.
- We added more snippets and improved navigation within snippets, including auto expansion of enumerations in the using snippet.
- We enabled support for multidimensional arrays in the debugger. [tr#31717]
- We fixed a memory leak that occurred when something other than a variable name was hovered over. [tr#31717]
- We added an internal member view to the arraylist debug display so members can be displayed. [tr#31798]
- Hover-over support is greatly enhanced when editing.
- We made several fixes to improve stability and avoid Visual Studio crashing while editing.
- We made many fixes to IntelliSense, including better support for generic IntelliSense.
- We added support for Microsoft macros for build command and properties (those that aren�t C#-specific or deprecated) to the Environment Variables project properties page. See the Microsoft documentation on these macros (http://msdn.microsoft.com/en-us/library/c02as0cs(v=VS.100).aspx) for more information. [tr#31694]
- We added functionality that enables you to copy and paste or drag and drop existing files into folders within the project hierarchy. [tr#31769]
- Adding a new WPD window or UserControl to a WPF project in a subfolder now uses the correct namespace that contains the subfolder name, enabling the project to build properly. [tr#31768]
- Adding a new item in the Settings tab now correctly creates a new App.config file for a project. [tr#31846]
- Adding a text file to a project as a resource and trying to build previously gave an error stating that the file could not be found. This has been fixed. [tr#31850]
- Adding an icon to a Synergy .NET project now works without error. [tr#31888]
- xfNetLink Synergy
- The xfNetLink Synergy client no longer sends a null IP address to xfServerPlus. [tr#31707]
- The runtime now sends a stop message to xfServerPlus when the runtime is shutting down and an xfServerPlus connection is still active. [tr#32148]
- The creation of a log file using the xfNetLink Synergy routine RX_DEBUG_START no longer generates an ILLCHN error. [tr#32181]
- Analysis engine
- UI Toolkit [Expand All UI Toolkit | Collapse All UI Toolkit]
- Input Processing
- (Windows) In previous versions, focus indicators for input controls would not always be displayed when input fields had focus, especially after a STOP chain. This has been corrected. [tr#31920]
- (Windows) In previous versions, every input field with a drill button (specified with IDRILL_METHOD) leaked GDI resources. This has been corrected. [tr#32056]
- .NET Routines
- (Windows) In previous versions, the Synergy Runtime would stop working if an exception was thrown during a call to %DOTNET_TKWIN. This has been corrected. [tr#31874]
- Text Processing
- (Windows) In previous versions, if an input window with buttons at the bottom had a multiline text field that extended beyond the display area of the window and contained text in that region, using T_EDIT with that window would cause part of the excess text to be displayed in the button area. This has been corrected. [tr#32092]
- (UNIX, OpenVMS) In previous versions, the RETAIN_POSITION qualifier did not work for a multiline text field if another field in a window was accessed in any way between leaving the field and re-entering it. This has been corrected. [tr#32132]
- Renditions
- (Windows) In previous versions, if the colors assigned to the palette entry used for Input Window Background (D_RND_INP_BCK) were changed, the change would not affect the button area of existing input windows. This has been corrected. [tr#31849]
- Utility Routines
- In previous versions, if the maximum number of Toolkit channels was exceeded on a call to U_OPEN, a fatal error always occurred. We have corrected this so that if the optional parameter is passed, it will now be returned with $ERR_TOOLKIT ("Toolkit error") in this case. A subsequent call to %U_GETWNDERR will retrieve the text "Maximum of 255 channels already in use". If the parameter is not passed, the error is fatal as before. [tr#32002]
- (Windows) In previous versions, assigning a UWNDEVENTS_METHOD set to a window that did not include D_EVENT_SIZE would sometimes cause the window to be slightly too large. Among other symptoms, this could cause text outside the display area to become partially visible. This has been corrected. [tr#31868]
- Miscellaneous
- In previous 9.1, 9.3, and 9.5 versions, a "parameter type mismatch" error occurred when compiling the UI Toolkit example file demoprog.dbl. This has been corrected. [tr#31904]
- In previous versions, the "Retain position" qualifier in Repository field definitions was ignored. This has been corrected. [tr#32166]
- Input Processing
- Connectivity Series [Expand All Connectivity Series | Collapse All Connectivity Series]
- SQL Connection
- To support multi-threading with the .NET Framework, we updated the error message buffer for SQL Connection so that it is now channel specific. In previous versions, %SSC_GETEMSG returned the error for the most-recently executed SQL statement, even if it was not for the specified channel. Now the correct error is always returned for the specified channel. THIS MODIFICATION MAY BREAK YOUR CODE. If an incorrect channel number was passed to %SSC_GETEMSG with a previous version, it might still have returned the error you expected. But with this version, it will return the error for the incorrect channel. [tr#31648]
- In previous versions, fetching multiple timestamp columns from an Oracle database caused incorrect results if the columns were in the same row. This has been corrected. [tr#32128]
- In previous versions, if you changed the number of returned rows from an Oracle database and specified a new cached cursor after calling %SSC_REBIND, results would be incorrect. This has been corrected. [tr#32128]
- xfODBC
- In previous versions, creating a view from a view would fail; you would get an "Unknown node type 64" error. This has been corrected. [tr#32127]
- (Windows) In previous versions, repeatedly executing one of the ODBC API catalog functions (e.g., SQLTables) with the same statement handle but with different search criteria resulted in the same data every time. We have corrected this to return data for the specified criteria. [tr#32129]
- (Windows) In previous versions, if ParameterValuePtr==NULL and Strlen_or_IndPtr was set in a call to SQLBindParameter, xfODBC failed to ensure that *Strlen_or_IndPtr value was not set to SQL_NULL_DATA, which caused an "invalid parameter" error. This has been corrected. [tr#32133]
- SQL Connection
- Repository
- The rpsutl utility now supports a -h option for displaying a usage screen. [tr#30006]
- (Windows) The rpsutl utility was modified to sleep for five seconds when an error message is displayed, allowing the user time to read the message. [tr#31652]
- Invalid export filenames specified on the rpsutl command line no longer cause subscript errors. Now you'll see a "Cannot create file " error. [tr#31652]
- When tabbing thru the fields in the Field Definition or Template Definition window, if you selected Decimal or Integer as the data type and then selected a Coerced type, the Coerced type value was not being saved. This has been corrected. [tr#31918]
- When the field data type is implied-decimal, the Coerced type drop-down list now displays "Default" by default instead of "decimal". This is to make it less confusing for users of Java, where an implied-decimal is mapped to either a double or BigDecimal data type depending on field size. (Note that type coercion is not yet supported for xfNetLink Java.) [tr#31972]
- Professional Series Workbench [Expand All Professional Series Workbench | Collapse All Professional Series Workbench]
- COM, Java, and .NET projects
- Workbench now allows you to pass the -w flag to gencs.exe from
within a .NET Component project. The -w option causes the
assembly to be generated to use WCF contracts. To use this option
in Workbench, you must do the following:
1. Select Project > Project Properties.
2. On the Tools tab, select Generate C# Classes.
3. At the end of the command line, add a space followed by "-w".
[tr#31812]
- Workbench now allows you to pass the -w flag to gencs.exe from
within a .NET Component project. The -w option causes the
assembly to be generated to use WCF contracts. To use this option
in Workbench, you must do the following:
- Synergy/DE Options dialog
- The caption of the Synergy/DE Options dialog now includes the type of project in which you are currently working. [tr#31519]
- Tagging
- Builtin functions now specify return types. Parameters for routines and functions now specify IN/OUT/INOUT and type information when applicable. [tr#31758]
- Trying to list the members of a field inside of a USING or CASE label when a BEGIN-END pair was not present previously did not result in a field list. This has been fixed. [tr#31168]
- Tags with invalid or blank identifiers were not being handled correctly. As a result, it was possible for internal incremental or blank identifiers to be shown in list members, Defs, or other tool windows. This has been fixed. [tr#31548]
- A change that we made caused the tagging in Workbench to hold tagged repositories open for read until the current project or Workbench was closed. This was an inconvenience for some developers. Because the performance problem that this change originally addressed was fixed another way, Workbench no longer needs to hold the repository open. [tr#31724]
- Workbench now provides tagging functionality for the DBL$ Synergy Language routines, including return types and parameter lists. [tr#31875]
- Utility
- The File Extension Maintenance dialog was not correctly adding the new file extensions to the folder filters for Synergy/DE Application, Synergy/DE Executable Library (ELB), and Synergy/DE Object Library (OLB) projects. This has been fixed. [tr#31556]
- Visual editor
- When .REGION and .ENDREGION keywords were on adjacent lines, pressing Enter at the end of the .ENDREGION keyword failed to add selective display markers to the pair. This has been fixed. [tr#31509]
- When using Alt + semicolon to place a comment in the comment column, the beginning of the comment was placed one column too far. This has been fixed. [tr#31753]
- Workbench no longer treats filename extensions in the Files of Type field in the File > Open toolbar as case sensitive. [tr#31418]
- The tooltip for a label icon in a list of tags now correctly says "Label" instead of "Ant Target Tag." [tr#31813]
- In version 9.5.1, we introduced a SlickEdit feature that allows you to turn off the auto restore of your last active workspace when launching the editor, but the default value for that option was not set correctly when upgrading from a past version. This has been fixed. If you are upgrading from 9.5.1 and you don't want your workspaces to auto restore, you will need to turn the option back off, by setting Tools > Options > Application Options > Auto Restore > Auto restore workspace to False. [tr#31643]
- Workbench previously failed to display context-sensitive help for routines when Indent Style was set to anything other than "Syntax indent." This has been fixed. [tr#32179]
- COM, Java, and .NET projects
- xfServer
- (Windows, UNIX) We added a buffering feature, which improves performance of sequential WRITES and PUTS calls. Records waiting to be written to the server are held in a buffer on the client and then written all at once, which improves file loading performance. This feature is supported for relative and sequential files that are opened in output or append mode (WRITES) and for stream files that are opened in output or append mode (WRITES or PUTS). Buffering is turned on by setting the SCSPREFETCH environment variable (on the client) to the size of the buffer. (Setting SCSPREFETCH now turns on both prefetching and buffering.) [tr#31865]
- (Windows) We fixed a problem that was causing a segmentation fault in 9.5.1 xfServer on close, which could leave records locked. These faults were reported in the Windows event log. [tr#31807]
- (UNIX) Additional information about unexpected connection errors generated on startup of rsynd is now logged to rsynd.log. [tr#31721]
- (OpenVMS) xfServer now correctly waits on lock when wait:-1 is specified instead of giving a "LOCKED, Record is locked" error. [tr#31956]
- (OpenVMS) Synergy DBMS now correctly returns EOF when doing a FIND on a key past the last key value in the file. [tr#32015]
- xfServerPlus
- The IP address in the xfServerPlus log file is now written correctly. Previously, when there was a .NET client, it was in reverse order. [tr#31702]
- The runtime now writes to the error log when %SS_FATAL has been called on the socket and the runtime encounters a fatal error. [tr#32180]
- (UNIX) Rsynd correctly starts in secure mode (rather than returning a "bad password" error) when the -encrypt option is used prior to the -cipher or -cert options on the command line. [tr#32139]
- xfNetLink Java Edition
- We added a new option to genjava, -c , which indicates the Java compatibility for the generated classes. Valid values for are 1.2 and 1.5. Specifying -c 1.2 means the classes will be generated as they were in xfNetLink Java version 9.5.1 and earlier and will be compatible with JRE 1.2 through 1.4. Specifying -c 1.5 means the classes will be generated so that they are compatible with JRE 1.5. In addition, default type mappings change, ArrayLists use generics, and various new xfNetLink Java features released in 9.5.1a will be available. The default is -c 1.2. THIS CHANGE MAY BREAK YOUR CODE if you regenerate classes for an existing application with the -c 1.5 option. [tr#31896]
- We added a new option to genjava, -t , which indicates the version of the JRE that the JAR file should be built to target. Valid values for are 1.5 and 1.6. If -t is not specified, the default is the version of Java installed on the machine where the JAR file is built. [tr#31971]
- We added a new option to genjava, -ro, which causes fields flagged in Repository as read-only to be generated as read-only properties in structure classes. These properties will have "get" methods but not "set" methods. [tr#31897]
- We have changed the default type mapping for decimal and implied-decimal parameters and return values when genjava is run with the -c 1.5 option. See Appendix B in the Developing Distributed Synergy Applications manual for details. THIS CHANGE MAY BREAK YOUR CODE if you regenerate classes for an existing application with the -c 1.5 option. [tr#31899]
- Date and time fields in repository structures now map to the Calendar class instead of the Date class when genjava is run with the -c 1.5 option. THIS CHANGE MAY BREAK YOUR CODE if you regenerate classes for an existing application with the -c 1.5 option. [tr#31900]
- xfNetLink Java now supports passing parameters of type System.String. [tr#31898]
- We added support for encryption of network packets sent and received between xfServerPlus and xfNetLink Java. See "Using Encryption" in the "Configuring and Running xfServerPlus" chapter of the Developing Distributed Synergy Applications manual for details on this feature. [tr#31374]
- We added a new utility, genCert, to assist you in setting up your xfNetLink Java machine for encryption. [tr#32009]
- We added two utility methods to the generated classes, getPoolName() and getSynergyWebProxy(). getPoolName() returns the pool ID that was used in the call to the usePool() method. getSynergyWebProxy() returns the internal instance of the SynergyWebProxy. [tr#32150]
- We added two additional getInstance() methods to the SWPManager class to enable you to use a non-default pooling properties file. One passes the full path and filename of the pooling properties file as a String; the other passes the pooling properties file as a java.util.Properties object. [tr#32150]
- xfNetLink .NET Edition
- We added a new option to gencs, -w, which causes the assembly to be generated to use WCF contracts. This enables the assembly to be hostable. In addition, the -w option changes the way ArrayList and structure collection parameters are handled: they are generated as List parameters (where is the data type of the elements) instead of ArrayLists. Consequently, in your client code, you must use a List class for a parameter that is defined as an ArrayList or structure collection in the SMC. THIS CHANGE MAY BREAK YOUR CODE if you regenerate classes for an existing application with the -w option. [tr#31542]
- The gencs -w option is currently not available from the Component Information dialog in Workbench. However, there is a workaround for Workbench users: From within a .NET Component project, select Project > Project Properties. Go to the Tools tab and select Generate C# Classes from the list of Tools. At the end of the command line, add a space followed by "-w". [tr#31812]
- xfNetLink .NET now sends the IP address to the xfServerPlus log file in the correct format. Previously, the IP was in reverse order. [tr#31702]
- If the Synergy routine being called has a STOP statement in it, a fatal error occurs. The .NET client now gives a more meaningful message in the exception: Program aborted with STOP statement at line ###. [tr#32149]
- Synergy Language [Expand All Synergy Language | Collapse All Synergy Language]
- Synergy/DE 9.5.1 [Expand All | Collapse All]
- Synergy Language [Expand All Synergy Language | Collapse All Synergy Language]
- Analysis engine
- Previously, calling a subroutine in the global namespace from
within a class that has a subroutine of the same signature wasn't
possible. We added the ability to specify "^global" as part of
the subroutine name path to allow specifying the global namespace.
For example,
xcall ^global.sub1()
[tr#31179] - The // operator incorrectly had a lower precedence than the * and / operators. This has been fixed. [tr#31344]
- In versions 9.3.1 and 9.3.1a, the amount of memory allocated for the internal parse trees was four times higher than required. This has been fixed. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#30614]
- The analysis engine no longer generates a segmentation fault when an error occurs on a line that has a macro expansion and involves string concatenation. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31057]
- Previously, if an I/O error occurred during the reading of a source file, it caused a segmentation fault. A valid error is now generated. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31065]
- When a boxed integer is assigned to an array of boxed integers (without giving the element index), a segmentation fault no longer occurs. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31127]
- A circular nested class previously caused the analysis engine to loop until a segmentation fault occurred. Now a "Circular base class not allowed" error (CIRCBASE) is correctly generated. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31133]
- Providing an invalid modifier on a property returning type i no longer causes a segmentation fault. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31150]
- Previously, calling a subroutine in the global namespace from
within a class that has a subroutine of the same signature wasn't
possible. We added the ability to specify "^global" as part of
the subroutine name path to allow specifying the global namespace.
For example,
- Compiler
- Because the analysis engine is a core component of the compiler, see the "Analysis engine" section above for additional features and fixes.
- We added support for .NET, including the dblnet compiler, which enables Synergy code to be run under the Common Language Runtime (CLR). Refer to the Synergy/DE Online Manuals for details. For information about the differences between traditional Synergy and Synergy .NET, see the "Moving Your Synergy Application to .NET" chapter in the Portability Guide.
- Methods whose signatures only differ by rank on fixed arrays are not allowed in .NET. We added the DUPMRNK -qnet warning to catch these. [tr#31322]
- We added the OVRCASE -qnet warning for instances when the case of an override method or property name differs from the case of the abstract method being overridden. [tr#31409]
- The compiler now issues warnings for USING and USING-RANGE statements when a label is hidden or unreachable due to a preceding "()" null label. [tr#30795]
- The USING-RANGE statement now correctly supports implied values (without rounding or truncation) when compiled with -qnoargnopt. [tr#31253]
- Compiling a class with -qcheck that overrides another class not compiled with -qcheck previously caused a NOOVR error on overridden methods and properties. This has been fixed. [tr#31512]
- ^NULL used improperly in certain Language statements (USING, FOR-FROM, SORT, MERGE, and DISPLAY) now generates an appropriate error. [tr#30244]
- Attempting to use ^NULL in a simple arithmetic expression (^NULL+^NULL) no longer results in the value 0. An $ERR_NOOPER error is now correctly generated. [tr#30245]
- An IVBAD error is now reported if a structfield that contains an object has an initial value. [tr#30529]
- An OUTPARM error no longer occurs when using an input parameter as an index value on a relative range, absolute range, or index of an output parameter. [tr#31233]
- We removed the NOTALLOWED restriction that prevented MISMATCH n parameters on non-unique methods. [tr#31278]
- To prevent issues when migrating code to .NET, use ^VAL instead of BYVAL on a parameter. If BYVAL is used, a NOBYVAL error is reported. [tr#31523]
- An IVBAD initial value error is now correctly reported, even for a declaration that comes after its initial value usage. [tr#31547]
- Calling a constructor in a new statement using a class name no longer resolves. [tr#24711]
- Object parameters can be optional in traditional Synergy. A -qnet warning, NETALLOW, occurs if an object parameter is declared as optional in Synergy .NET. [tr#30866]
- For compatibility with other object-oriented languages, an equality or inequality comparison (==,!=,.EQ.,.EQS.,.NE.,.NES) of base types (@*) or explicit boxed types (@d, @i, @a, or @struct) no longer automatically unboxes a boxed object. It now compares the reference (instance), not the contents. THIS MODIFICATION MAY BREAK YOUR CODE. Also, a "No operator" error is now generated at compile time when any built-in operator other than the "equal to" or "not equal to" operator is used with these types. In addition, a level 4 W_REFCOMPARE warning (959) is generated when either a base or boxed type equality or inequality comparison previously resulted in unboxing. If you suspect that automatic unboxing previously occurred, enable level 4 warnings by compiling with the -W4 option, check the warning occurrences, and explicitly cast where boxing is the desired behavior. To suppress the warning where instance comparison is the desired behavior, compile with the -WD=959 option. [tr#31299]
- A FOREACH statement using an empty dynamic array handle now generates a NOOBJ error. [tr#31316]
- (OpenVMS) The .ALIGN PAGE compiler directive has been changed to align on a 4096 boundary on OpenVMS I64 and an 8192 boundary on OpenVMS Alpha. All other platforms will still align on a 512-byte boundary. [tr#31407]
- A CRC error at link time on a structure with unnamed fields has been fixed. This fix requires that files with global structures be recompiled. [tr#31426]
- When SYNUSERDEF is set and the program is compiled in debug mode, the line number displayed as the current line is now correct. [tr#31544]
- A TYPMISMCH error is now reported when an alpha is passed to an n argument that's not marked as MISMATCH. Using -qrelaxed:local disables the detection of this error. [tr#31549]
- Passing an i to a MISMATCH a should not have been allowed. This has been fixed. [tr#31552]
- The compiler now gives a BADRNG error when -qcheck or -qstrict is specified, a ^M structure variable is accessed with a relative range, and the range is specified with a literal that is larger than the size of the structure variable. [tr#30545]
- In previous versions, an inappropriate range error could occur when compiling with -qcheck in the context of a ^M. This has been fixed. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#30641]
- Data areas that contain object handles can no longer be used in DISPLAY, STORE, WRITE, WRITES, PUT, and PUTS statements. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#30965]
- Passing ^NULL to an overloaded method previously picked the first overload. Now it correctly gives an AMBSYM error. You must cast ^NULL to the desired type to get the correct overload. THIS MODIFICATION MAY BREAK YOUR CODE. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#30969]
- Structures, objects, and strings are no longer allowed to be specified as types for group declarations. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#30980]
- When writing to a path, the path cannot contain property get methods that return intermediate structures. A NOWRITE2 error is reported if this occurs. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#30996]
- Instance arrays can now be passed as arguments and accessed as arrays in the called program. NOTE: Programs built with this change must be run in at least the same version of Synergy due to a required runtime change in conjunction with the compiler change. [tr#31033]
- Previously, when trying to include a structure in a namespace and then including that namespace in another .dbl file that referenced the included structure, if xfMethod was being used, the compiler didn't recognize that the included structure was there. This has been fixed. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31053]
- The compiler no longer generates an INVNUMDIM error when a parameter with (*) syntax is used in an expression and the -qstrict compiler option is specified. In some cases, this also previously caused a segmentation fault, causing Workbench to crash. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31055]
- When source files that contain routines without END, ENDSUBROUTINE, ENDFUNCTION, or ENDMAIN keywords are compiled together, a level 3 warning is now generated instead of a NOSPECL error. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31061]
- The compiler no longer incorrectly resolves to a member of an enclosing class when that member matches the name of a member of the nested type (for example, an enumeration). (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31062]
- Casting type d to type @int now correctly generates an "Invalid cast operation" error (INVCAST) instead of causing a runtime segmentation fault. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31066]
- Trying to create an array of any nested type no longer causes an invalid NOTSTAT error to be reported. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31075]
- A prototype of a structure included from a repository previously failed the xfMethod attribute checks with a message that it wasn't from the repository. This has been fixed. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31122]
- We changed the magic number in the 64-bit binary prototype files (DBP) to be the same as the 32-bit magic number. This requires you to re-prototype all 64-bit files. [tr#31086]
- Previously, using a void type in a format statement did not generate a compiler error, which caused a runtime segmentation fault. This has been fixed so that an "Invalid use of type %s" error (INVTYP) is now reported. (This tracker was fixed in Windows and UNIX in version 9.3.1b.)[tr#31134]
- The librarian and linker now report errors when a 32-bit object file or object library is used on a 64-bit system or when a 64-bit object file or object library is used on a 32-bit system. This only happens when the object files and object libraries are re-created with this new compiler or librarian. Older object files and object libraries will not necessarily give errors when they are invalid. [tr#31142]
- Previously, when a nested structure contained an object field, attempting to write to the field directly caused a segmentation fault. A NOWRITE error is now reported. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31143]
- Previously, a prototype file created with the -out option that was in the second directory specified by SYNIMPDIR was not being loaded. We discovered the include guard processing was preventing the file from loading, so we added a flag to the prototype file that indicates when the include guard should be ignored so that it mimics the include guard processing of the old .dbh files. To pick up this change, prototypes must be regenerated. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31144]
- Assigning an object to a handle within the scope of another object has been corrected in some situations where the resulting scope was being set to the wrong object. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31149]
- Previously, attempting to box/unbox a local structure within the context of an IF statement caused a segmentation fault. The compiler now correctly generates a BOXLCLSTR error. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31189]
- The compiler no longer allows string as an argument type for ^ADDR. [tr#31197]
- The compiler has been fixed to signal a NOTALLOWED error if the fields or groups within a parameter group are specified on an INIT statement. [tr#31203]
- A call outside of a TRY block was incorrectly allowed. This has been fixed and a LBLSCOPE error is now correctly reported. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31206]
- When a field in a group is an object handle, the traditional Synergy compiler generates a warning with the -qnet option, and the Synergy .NET compiler generates an error. [tr#31229]
- Previously, if a member of a demand-loaded type couldn't have its type resolved, a PRTLOAD error was reported. We now delay reporting the error until the unresolved type is used. [tr#31354]
- Passing an object field as an argument whose specification included any dimensions, index, or ranging previously failed. This has been fixed. [tr#31368]
- Using a literal field in an expression previously caused a NOTCEXP error. This has been fixed. [tr#31369]
- Placing a static operator method outside a declared class no longer generates a segmentation violation. It now generates an error $ERR_MTHOUTCLS, "Cannot declare method outside of a class/interface". [tr#31317]
- If you try to do a set on a property that only has a get method, a NOPRPSET error is now generated. [tr#31613]
- Debugger
- We added two new options to the SET command:
- SET STOP ON causes a break in the debugger when a STOP statement is executed. This break is after any destructors are executed.
- SET STOP OFF turns off breaking at a STOP statement.
- We added a new option to the SHOW command. SHOW STOP displays the current state of breaking at a STOP statement. [tr#31320]
- (Windows) We fixed a segmentation violation that previously occurred when using watchpoints on a class handle. [tr#31398]
- The compiler has been fixed to output the correct information for the debugger when processing an inner class where the outer class references the inner class. [tr#31247]
- Previously, the debugger display of static class fields when a record or group was specified was shifted by several bytes. The contents of the record or group are now displayed correctly. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31124]
- We added two new options to the SET command:
- Installation
- Microsoft .NET Framework version 2.0 or 3.5 must be installed
before you can install Synergy/DE version 9.5.1. This is required
for the Synergy .NET assembly API and for synrnt, which is the
runtime support library used by Synergy .NET. If you are running
a Synergy .NET application that targets Framework version 4, you
will also need Framework version 4 installed; however, it is not
a prerequisite.
If you install Framework version 4 after installing Synergy/DE 9.5.1, you will need to do a Repair on your Synergy/DE installation to install the .NET files that go with Framework 4. (To "repair" the installation, locate Synergy/DE in the list of installed programs in Programs and Features [or Add/Remove Programs on Windows XP], right click on it, and select Repair.) [tr#31250] - If you have Synergy/DE Data Provider for .NET (SDP) version 9.3.1b or earlier installed, YOU MUST UNINSTALL OR UPGRADE IT TO 9.5.1 BEFORE YOU UPGRADE/INSTALL 32-bit Synergy/DE 9.5.1. (This is because of a registry entry that used to be installed by SDP but is now installed by Synergy/DE.) Upgrading/installing 32-bit Synergy/DE 9.5.1 first will result in a missing registry entry after uninstalling/upgrading SDP. If this happens, you will need to uninstall and reinstall Synergy/DE.
- Synergy/DE Client can now be uninstalled without having the host machine available. Note, however, that the registry entries for the SPR32X?.ocx and tkgrid?.ocx files will not be uninstalled, as there is no access to the uninstall methods of controls that reside on the host machine. [tr#30703]
- (Windows) When using a 64-bit machine on which both 32- and 64-bit Synergy/DE are installed, if you previously tried to run Composer from Workbench, you got a "composer.dbr not found" error, because SYNBIN was set to the path for the 64-bit directory and Composer is always 32-bit. The SDE installation now sets SYNBIN to SYNERGYDE32 when installing on a 64-bit machine. Make sure the SYNBIN setting in your own synergy.ini files points to the 32-bit installation directory. [tr#31079]
- The syncksys.exe utility has been removed from the installation because it is no longer applicable to the operating systems supported by Synergy/DE. [tr#31215]
- (Windows) The cabinet file is now external to the MSI package to reduce the size of the archived package. If you are copying product installation files, be sure to include the cab file, or the installation will not work. [tr#31308]
- (OpenVMS) The synssllib.exe and httpslib.exe files are now built with SSL 1.4. Two new files, synssllib_v13.exe and httpslib_v13.exe, have been built with SSL 1.3 and are now distributed in SYNERGYDE$ROOT:[DBL.BIN]. If SSL 1.3 functionality is required, copy synssllib_v13.exe to synssllib.exe and copy httpslib_v13.exe to httpslib.exe. Then replace them in the installation tables by executing the SYS$MANAGER:synergy_startup.com file or the appropriate INSTALL REPLACE commands therein. [tr#31330]
- (Windows) The 32-bit Synergy/DE Client installation now sets the SYNERGYDE32 environment variable; the 64-bit Synergy/DE Client installation sets SYNERGYDE64. [tr#31340]
- (Windows) Before installing Synergy Language Integration for Visual Studio, a matching version of Synergy/DE 32-bit must already be installed on a 32-bit operating system. On a 64-bit operating system, both Synergy/DE 32-bit and Synergy/DE 64-bit must be installed and must match the product version of the Synergy Language Integration for .NET product being installed. Also, Synergy/DE installations must be upgraded prior to upgrading Synergy Language Integration for .NET. [tr#31360]
- Previously, no error was generated if you attempted to install a 64-bit SDE client alongside a 32-bit SDE client. This has been fixed, and installing both clients on the same machine is no longer allowed. [tr#31370]
- Windows 2003 Server now requires a minimum of Service Pack 2 to support Synergy products. [tr#31175]
- Microsoft .NET Framework version 2.0 or 3.5 must be installed
before you can install Synergy/DE version 9.5.1. This is required
for the Synergy .NET assembly API and for synrnt, which is the
runtime support library used by Synergy .NET. If you are running
a Synergy .NET application that targets Framework version 4, you
will also need Framework version 4 installed; however, it is not
a prerequisite.
- Linker
- (Windows, UNIX) The linker has been fixed to correctly process the -WD switch when it is immediately followed by another switch on the command line. [tr#31243]
- Runtime
- Select now includes "From" class constructors that take a filename and optionally an open_option string. By default, a specified filename with the extension .ism is opened I:I. A filename that does not end in .ism is opened I:S. The open_option string argument can be used to override these defaults, as well as specify any of the options supported by the OPTIONS modifier in the OPEN statement. [tr#31272]
- The Select class now includes a Delete method that deletes all records matching a selection. When using xfServer, all I/O is performed on the server. [tr#31282]
- We added a SparseUpdate method to the Synergex.SynergyDE.Select.AlphaEnumerator class. It works in conjunction with SparseRecord to limit the amount of data transferred to xfServer when updating a record. [tr#31307]
- Using Select to a remote server requires the version of both the xfServer and the client runtimes to be a minimum of 9.5.1.
- The RFA returned in the onLock method of the Select.Event class now includes the CRC portion for GRFA use. [tr#31279]
- (.NET) We added the ^VARARGARRAY data reference operation to access and pass VARARGS undeclared arguments at runtime.
- (Windows, UNIX) New xfServer transmission counters can be
retrieved by using one of four new GETFA keywords:
- XFT Return total number of bytes sent and received on a channel opened to a remote file.
- XFS Return total number of bytes sent only on a channel opened to a remote file.
- XFR Return total number of bytes received only on a channel opened to a remote file.
- XFP Return total number of round-trip packets issued on a channel opened to a remote file. The statistics returned are the total accumulated, from the time of the OPEN to the time of the GETFA call.
- An ANSI FOR statement with an implied increment value has been fixed to correctly add the increment value when the value is between 1 and 2. [tr#31227]
- When converting an alpha descriptor to an int, an $ERR_ARGDIG is no longer generated when the alpha descriptor contains only a zero followed by spaces. [tr#31389]
- When an untrapped W_ error occurs, the event log entry now shows the Synergy routine and line number. [tr#31434]
- The Select.Delete method is not valid with a Select object created with OrderBy and now generates an $ERR_OPTINV error. The AlphaEnumerator.Count property now returns the correct number of records in a selection when the Select object was created with OrderBy. Following a Select.Reset on a Select object created with OrderBy, the number of records in the selection matches those from the first iteration. [tr#31517]
- Passing a value to an alpha argument that is then passed to a string argument with -qcheck no longer causes the value to become corrupted. [tr#31545]
- MemberWiseClone no longer fails with a segmentation fault when cloning a class extending the ArrayList object. However, it now operates similarly to how the same operation in Synergy .NET and C# behaves. Use of MemberWiseClone in this manner may not be the desired effect. Count and Capacity are copied to the new object. The reference to the collection object is also copied; thus, a change to the contents of one may be reflected in the other, while a change in the Count and Capacity is not. For this reason, we recommend that you not use MemberWiseClone on an ArrayList object without fully understanding its behavior. [tr#31538]
- (Windows) Some transient licensing popups have been suppressed and will only be logged in the system logging facility. [tr#31444]
- When using Select, an $ERR_INVOPER error ("Invalid operation: From channel has changed") is now generated if you attempt to create a new Selection AlphaEnumerator (either on a FOREACH or GetEnumerator() call) if the channel associated with the From class object has been closed and reopened. [tr#31271]
- The Select.AlphaEnumerator Count property no longer generates an $ERR_INVOPER error after a Reset or prior use of Count on the same enumerator. [tr#31280]
- Using an overloaded Select onLock method that requests a retry of an operation on a locked record now correctly retries the operation and reissues the onLock method if still locked, instead of generating an $ERR_LOCKED error. [tr#31315]
- FOR statement processing now goes through the correct number of iterations for integers where the start value is less than -1073741824 and the end value is greater than 1073741824. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31123]
- A THROW with an uninitialized or NULL object handle now generates an "Invalid use of NULL object" error ($ERR_NULLREF) and is mapped to System.SystemException.NullReferenceException when caught. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31125]
- Attempting to assign an object contained within another object to the only existing handle referencing the containing object no longer causes an "Invalid class handle" error (INVCLSHND) or segmentation fault. Example: HND1 = HND1.HND2 (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31140]
- The System.Array static methods IndexOf and LastIndexOf now both allow a ^NULL target value object handle to return the index of the first or last ^NULL entry in an array. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31151]
- STOP <nnn> (where <nnn> is a number), called from within a TRY-CATCH block whose scope includes a FINALLY block, no longer generates a segmentation fault. Additionally, a STOP <prog> (where <prog> is the name of a program to chain to), also called from within a TRY-CATCH block whose scope includes a FINALLY block, now executes the FINALLY block prior to chaining, as expected. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31172]
- The QueryString Select class method now reports field offsets as one-based instead of zero-based, and it also shows KEYNUM() and PORTABLE() when they are specified and used. [tr#31181]
- Using the Select.AlphaEnumerator Current Get property following use of the Set property (prior to making another iteration or Movenext) no longer generates an $ERR_NOCURR error. [tr#31190]
- The OPEN statement has been modified such that if the channel number is passed in a writable variable with a zero value, the next free channel number will be used and the channel number variable will be updated with the channel number value. The variable must be able to contain a four-digit number; otherwise, a BIGNUM error will occur. The search for an unused channel number will begin with the maximum channel number of 1024 and descend to 1 until one is found. [tr#31205]
- (Windows) The runtime now catches some instances of passing an array to QSORT that is not as large as the number of elements specified, and an $ERR_OUTRNG error will be issued, with the additional text "Array passed to QSORT not writable for specified number of elements." Note that we are not able to catch all cases of this user-caused error, which can result in a segmentation fault or Windows shutting down the process. [tr#31218]
- An $ERR_HNDCORUPT or $ERR_NOOBJ error no longer occurs when a destructor attempts to call a class method. [tr#31228]
- (OpenVMS) We fixed READ ^LAST on a variable-length indexed file with duplicates when the maximum record size is zero. [tr#31237]
- A $ERR_NOOBJ error instead of a segmentation fault now results when calling String and other System methods using a null string handle. [tr#31238]
- (Windows) With system option #22 set, an LPQUE using LPNUM=# (where # is a numeric expression, not an alpha expression) fails with either an $ERR_FILSPC or $ERR_ALPHARG error or just passes the wrong filename to dblpq.bat, depending on the other qualifiers and their order. [tr#31240]
- A USING-RANGE statement with a control value of 0 no longer selects the %OUTRANGE label when 0 is included in the specified range. [tr#31252]
- In versions 9.3.1 through 9.3.1b, an implied division using an implied temp that was the result of another implied operation would overrun the stack and corrupt data and/or the result of the operation. This has been fixed. [tr#31264]
- In 9.3.1 through 9.3.1b, an alpha field larger than 10 characters with leading zeros generated a BIGNUM error when used in a place that needed an int (for example, the record number of the READ statement). We have improved the overflow error checking so that it does not report an error when leading 0s are causing the overflow. [tr#31268]
- (OpenVMS) In versions 9.1.1 through 9.3.1b, when ^B(), ^O(), and ^X() were used as the initial value to automatically size an integer field, the field was not sized to i4 as documented. This has been fixed. [tr#31269]
- Attempting to use the Synergy HTTP document transport API using HTTPS with DATA_ENCRYPT or DATA_DECRYPT no longer causes an HTTP "Error creating ctxfactory" error. [tr#31274]
- (OpenVMS) SYN_SETDIR() has been fixed to return zero on error instead of signaling the error. The system error code can be retrieved using %SYSERR. [tr#31306]
- A segmentation violation no longer occurs when a THROW (rethrow) is issued following an I/O statement with an error list, which, due to an I/O error, is trapped to a label (all within a CATCH block). Also, a THROW of a new exception that follows a nested TRY block and is caught in the nested CATCH now correctly rethrows the exception in the current catch context. [tr#31312]
- Doing an absolute range on a string while it's being passed as an argument to a routine that takes a string parameter no longer causes a subscripting violation. [tr#31361]
- When processing a null argument into an implied-decimal return variable, XCALL SIZE now correctly gives a value of -1.0 instead of 1.0. [tr#31379]
- An $ERR_NOOBJ error instead of a segmentation fault now occurs when attempting to initialize a dynamic array using an initial value specification that results in a null handle. [tr#31219]
- Attempting to use the same Select.Where class object in multiple Selects no longer generates an $ERR_OPTINV error. [tr#31338]
- Select.Orderby static methods Ascending() and Descending() are now supported for all fields within the Select record. [tr#31346]
- Using d fields in a Select.Where expression with values that exceed d10 no longer causes an $ERR_BIGNUM error to be generated on the Select statement. [tr#31384]
- Using Select to a remote server with SCSPREFETCH no longer generates an $ERR_INTISM error. [tr#31612]
- Synergy ActiveX API
- In previous versions of UI Toolkit on Windows, when using AX_INPUT on an ActiveX container window that was not created by AX_TKSINGLE, three errors were added to the Windows Event log. We have corrected this, which also applied to processing the ActiveX list with L_SELECT, L_INPUT, L_INPFLD, or L_CHR. [tr#31293]
- Synergy Configuration Program (SynConfig)
- The Licensing tab now displays the backup server name when SynConfig is run on the primary server. [tr#31395]
- The "Server name" field in the Advanced License Manager dialog is now disabled if the "Be a backup server" check box is checked. This is to prevent accidentally becoming a backup server to another primary server when you meant to become a client of a new server only. To become a backup server of a different primary server, you must uncheck "Be a backup server," OK the dialog, re-access the dialog, change the server name, and then recheck "Be a backup server." [tr#31381]
- Clearing the "Be a backup server" check box in the Advanced dialog of the Licensing tab and then clicking OK in that dialog now correctly removes the backup license server status. [tr#30711]
- In previous versions of SynConfig, when both 64-bit and 32-bit Synergy/DE were installed on a system that was a license server and also had a backup server, the 64-bit version of SynConfig reported that the system was a client to itself instead of a server. It now correctly reports that it is a license server. [tr#31391]
- Since a 32-bit Synergy/DE on 64-bit Windows cannot be a backup license server, we have disabled the "Be a backup server" check box on machines running that configuration. [tr#31432]
- The backup server information that displays on the Licensing tab when viewed from a license client machine is now properly updated when the backup server is changed. [tr#31525]
- Synergy DBMS
- (Windows) We added a retry loop when reopening a temporary file to prevent a timing problem with scanning by malware tools. [tr#31209)
- (Windows, UNIX) Read caching is now enabled for relative and sequential files opened for input. [tr#30912]
- (Windows, UNIX) Using the FIND statement on a non-ISAM file with the LOCK:Q_AUTO_LOCK qualifier (or the compiler option -F) now locks the record as documented in the Synergy Language Reference Manual. [tr#31259]
- Synergy HTTP document transport API
- Previously, the system error text was not appended when a "Gethostbyname failed" error occurred. In addition, on UNIX, the error code returned was SS_ENULL instead of the correct error code. These have been fixed. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31196]
- (OpenVMS) HP has updated SSL to version 1.4. Now HTTPSLIB.EXE and SYNSSLLIB.EXE in version 9.5.1 and 9.3.1# both require SSL version 1.4 instead of 1.3. [tr#31273]
- Attempting to use the Synergy HTTP document transport API using HTTPS with DATA_ENCRYPT or DATA_DECRYPT no longer causes an HTTP "Error creating ctxfactory" error. [tr#31274]
- Synergy .NET assembly API
- The default value for SYNNET_CLR is now v4.0.30319 (Framework version 4). [tr#31118]
- Passing an array of length zero to a Synergy .NET assembly API routine no longer causes a segmentation fault. [tr#31225]
- Previously, when an array was passed from .NET to Synergy, the first element was placed as the last element, and the elements that followed were moved one position forward. This has been fixed. [tr#31246]
- If a class created by the gennet utility was returned from a generated property, its events were not initialized. This has been fixed. [tr#31314]
- Previously, gennet incorrectly output a class with the name "Byte*" in certain situations. Prior to 9.5.1, the compiler didn't catch this error, and the code would compile and run. Because this error is not caught by the compiler, when recompiling code in 9.5.1 (and higher) that was previously generated by the gennet utility, you must re-run gennet, or many errors will be generated. [tr#31352]
- An incorrect "Both source and destination must be object handles error" ($ERR_NOTOHND) was previously generated in some high-activity interop scenarios. This has been fixed. [tr#31359]
- Synergy routine call block API
- The second argument to RCB_SETFNC() is now optional when the third argument is specified as a non-alpha type for the ^XADDR of the function. [tr#31334]
- Synergy windowing API
- (Windows) In previous versions, if windows existed when W_EXIT was called, an "unexpected zero value" error occasionally occurred. This has been fixed. [tr#31213]
- Synergy Windows printing API
- In previous versions, calling %WPR_GETDEVICE to retrieve DWP_COPIES, DWP_COLLATION, or DWP_SPECS always resulted in 1 for copies and 0 for collation on certain printers, even if other values were selected. This has been fixed. [tr#31424]
- In previous versions, if you printed to a device that required a "Save As" dialog (such as the Microsoft XPS Document printer) and then canceled that dialog, a system error 6 or 122 was generated. We have corrected this to signal an IOFAIL error with the subtext "user aborted spool." [tr#31531]
- We improved error reporting in the Windows printing API. %SYSERR now reports errors for some cases that were previously returned as 0. [tr#31261]
- We fixed a problem with copies and collation in which the number of copies was sometimes squared and only some of the copies were collated. [tr#31313]
- Synergy XML API
- We added a PARSER option to %XML_OPTION that enables you to
keep leading spaces in element text instead of stripping them
when calling %XML_ELEM_GETTEXT and %XML_ELEM_GETTEXTHANDLE.
Before parsing the XML file with either %XML_PARSER_PARSEFILE
or %XML_PARSER_PARSESTRING, call
%XML_OPTION("PARSER", SYNPARSER_KEEP_LEADING_SPACE)To strip the leading spaces, use the default parser option:%XML_OPTION("PARSER", SYNPARSER_DEFAULT)[tr#31290] - In 9.1.5 through 9.3.1a, %XML_ATTR_COPY truncated the length of an attribute's name to be the length of the attribute. This has been fixed. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31132]
- We added a PARSER option to %XML_OPTION that enables you to
keep leading spaces in element text instead of stripping them
when calling %XML_ELEM_GETTEXT and %XML_ELEM_GETTEXTHANDLE.
Before parsing the XML file with either %XML_PARSER_PARSEFILE
or %XML_PARSER_PARSESTRING, call
- Utilities
- Synckusr -p now indicates if the user being checked is part of the administrators group. [tr#31427]
- The dblproto utility now displays a warning message (for example, "%DBLPROTO-W-SKIP: Error on Method: skipping MyClassMethod") when it skips processing part of a file when dblproto encounters an error. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31087]
- The dblproto utility now processes partial classes correctly. [tr#31275]
- The dblproto and dbl2xml utilities now correctly handle command line processing errors. [tr#31239]
- (Windows) We changed the processing of input file wildcards for dblproto, dbl2xml, and dblnet2xml to process a filename based on its long name and not the long name's short 8.3 version. [tr#31052]
- We added command line redirection to dbl2xml to enable you to
specify a list of command lines in a single file. For example,
dbl2xml <file.lst
ordbl2xml -T <file.lst
Note that -T is only supported on Windows and UNIX. [tr#31054] - The dbl2xml utility now supports .INCLUDEd group arguments, which are processed as a single alpha field with the size taken from the repository. [tr#31342]
- The size of boolean in dbl2xml has been changed from 1 to 4. [tr#31513]
- The dbl2xml utility no longer takes the dimension property from a prior argument when the argument is a group. [tr#31267]
- The dbl2xml utility no longer generates a segmentation fault on a structure reference when a prototype file is imported with a structure that was included from a repository. The repository structure name is correctly retrieved. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31156]
- The dbl2xml utility no longer causes a segmentation fault in the C++ runtime. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31174]
- Analysis engine
- UI Toolkit [Expand All UI Toolkit | Collapse All UI Toolkit]
- ActiveX Processing
- (Windows) In previous versions, if you used AX_INPUT on an ActiveX container window that was not created by %AX_TKSINGLE, three errors were added to the Windows Event Log. This has been corrected. (See related entry for tr#31293 in "List Processing" below.) [tr#31293]
- Input Processing
- (Windows) In previous versions, if a selection field contained two entries that were identical up to the length of the shorter entry, selecting the shorter entry resulted in the longer entry being chosen if it occurred before the shorter entry in the list. We corrected this and made the selection of items in a selection field more consistent throughout. When a selection field is empty (initialized), an entry is no longer selected until a value is displayed into the field or until the user moves focus to it. This is consistent with the behavior on UNIX and OpenVMS systems. [tr#31558]
- (UNIX, OpenVMS) In previous versions, if I_FORCE was used to force invalid data to a selection window field, the default selection would be chosen. We corrected this to instead beep and await user selection, as documented. [tr#31423]
- List Processing
- (Windows) In previous versions of the ActiveX list control, if you processed an ActiveX list with L_SELECT, L_INPUT, L_INPFLD, or L_CHR, three errors were added to the Windows Event log. This has been corrected. (See related entry for tr#31293 in "ActiveX Processing" above.) [tr#31293]
- (Windows) In previous versions of the ActiveX list control, deleting an item could cause unpredictable results, including a segmentation fault. This has been corrected. [tr#31553]
- (Windows) In 9.3 versions of the ActiveX list control, if D_VALSTCHG was enabled and a check box field had a change method that signaled a menu entry, the checked/cleared state of the field could not be changed. This has been corrected. [tr#31339]
- (UNIX, OpenVMS) In previous versions, if L_RESIZE was called on a list that was not placed, the component windows of the list would be placed. This has been corrected. [tr#31396]
- Script Processing
- In previous versions of Script, some errors caused Script to return an incorrect exit status. Using -o with a bad path, using -c or -l with more than one argument, and using -i with more than 256 arguments all returned a successful exit status even though they caused errors. This has been corrected. [tr#31353]
- Tab Set Processing
- (Windows) In previous versions, if some tabs in a tab set had tooltips, but others didn't, some tooltips would not work in some cases. This has been corrected. [tr#31200]
- Utility Routines
- (Windows) In previous versions, repeated calls to U_RESIZE or W_PROC(WP_RESIZE) that specified the same number of rows would cause the application window to grow vertically with each call. This has been corrected. [tr#31416]
- ActiveX Processing
- Composer
- Connectivity Series [Expand All Connectivity Series | Collapse All Connectivity Series]
- SQL Connection
- (Windows) We increased the number of channels that can be open concurrently to 100.
- (Windows) In previous versions, a segmentation fault would occur if you used %SSC_EXECIO with VTX11, VTX12_ODBC or VTX12_SQLNATIVE for a stored procedure that used a path reference for the stored procedure name (e.g., do.mydb.procedure). This has been corrected. [tr#31185]
- In previous versions, if an i1 or i2 INOUT variable was used with %SSC_EXECIO, the variable was not correctly updated when control returned from the stored procedure. Additionally, the input variable would sometimes be incorrectly described as null rather than the input value. This has been corrected. [tr#31327]
- (Windows) In previous versions, when using VTX12_ODBC or VTX12_SQLNATIVE, using an IN or INOUT argument for a SQL Server column with null caused a segmentation fault. This has been corrected. [tr#31326]
- (Windows) In previous versions, memory corruption would sometimes occur if a SQL Server database column (e.g., a temporary sum column) had a precision that was greater than 22 digits. This has been corrected. [tr#31216]
- (Windows) In previous versions, if a SQL Server stored procedure or a statement passed to %SSC_EXECUTE used batch commands, %SSC_EXECIO or %SSC_EXECUTE would sometimes return before all commands were completed when using VTX12_ODBC or VTX12_SQLNATIVE. Additionally, the row count would sometimes be incorrect for completed batch commands. This has been corrected. [tr#31187]
- (Windows) In rare cases when using VTX12_SQLNATIVE, if the "Executing SQL directly" warning was returned along with another error, the other error would be incorrect. This has been corrected. [tr#31600]
- xfODBC
- We updated xfODBC so that you can now use CAST and CONVERT as arguments to other ODBC functions. In previous versions, attempting this caused a "Function 30 not implemented yet" error. [tr#31162]
- We added support for subqueries in INSERT statements and in
SET clauses for UPDATE statements. For example, for INSERT:
INSERT INTO orders (or_number, or_item, or_price) SELECT 12, in_itemid, in_price FROM plants WHERE in_name = 'Wedelia' For UPDATE: UPDATE orders SET or_vendor = (SELECT DISTINCT vend_key FROM vendors WHERE vend_name = 'Border Imports'), (or_item, or_price) = (SELECT DISTINCT in_itemid, in_price FROM plants WHERE in_name = 'Wedelia') WHERE or_number = 3[tr#25523] - Views are read-only, so we updated xfODBC to fail with an error if you attempt to use UPDATE, INSERT, or DELETE with a view. [tr#31191]
- (Windows) We removed the CPTimeout setting, which we added with Connectivity Series 9.3.1. This setting enabled ADO.NET connection pooling. When the CPTimeout was in effect, ADO.NET connections were returned to a pool of connections and remained open for a specified time (instead of being immediately destroyed). This could improve performance, especially for web- based applications. However, due to a Microsoft bug, pooled connections were not always closed, which sometimes resulted in undesirable behavior, such as incorrectly generated "file in use" errors. [tr#31266]
- SQL Connection
- License Manager
- (Windows) When using a backup license server to a primary license server that is running Vista/Server 2008 or higher, and neither is part of a trusted domain, the following change must be made to the Local Security Policy on the machine running the primary server: "Network access: Let Everyone permissions apply to anonymous users" must be enabled. If this Policy is not enabled, the backup license server will never detect the status of the primary server. This requirement is due to a security change in Windows. [tr#24874]
- (Windows) We added a new option to lmu, -xb, which is used to remove a Backup License Server configuration. It can be run from either the backup server or the primary server. [tr#31390]
- (Windows) The backup license server no longer fails to start because of "Duplicate license invalid - shutting down" event. [tr#31524]
- Repository
- Repository now uses unique temporary filenames constructed using %DATETIME and prefixed with "RPS_". [tr#31193]
- As required by the corresponding Synergy Language change in
version 9.5.1, the size of Boolean fields and templates is now 4
instead of 1. THIS MODIFICATION COULD BREAK YOUR CODE if you have
written Boolean data to a file or if you .INCLUDE Repository
structures containing Booleans as named records. You must update
your repository by doing one of the following. (You should update
your repository even if you are not using Booleans as described
above.)
- Change the size of Booleans to 4. To do this, generate your repository to schema, then do a Search and Replace of "Type BOOLEAN Size 1" with "Type BOOLEAN Size 4". (Note that there are three spaces before "Size".)
- Change Booleans to Integers, leaving the size at 1. To do this, generate your repository to schema, and then do a Search and Replace of " Type BOOLEAN" with " Type INTEGER". (Note that there are two spaces before "Type". This is so that you don't accidentally replace "Type BOOLEAN" in "Coerced Type BOOLEAN".)
- In versions 9.3.1 through 9.3.1b, pressing F7 to obtain a list of global and local formats for a field displayed only global formats. This has been corrected. [tr#31223]
- Field validation now correctly detects if the maximum number of template references has been exceeded. (The fix for tracker 21638 was not implemented completely.) Also, the Print Repository Definitions utility now correctly prints out the reference information for a template when the references exceed 3000. [tr#31276]
- Loading fields from a definition file when the file contains overlay fields within a group no longer causes an error. Additionally, we fixed a bug where group overlays (,X) were not loaded unless the comma immediately followed the type/size. For example, this wouldn't work: ,A30 ,X But this would: ,A30, X (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#22867]
- (Windows, UNIX) In versions 9.3.1 through 9.3.1b, the cross- reference file generated by the rpsxref utility would sometimes be empty. This has been fixed. [tr#31638]
- ReportWriter
- Professional Series Workbench [Expand All Professional Series Workbench | Collapse All Professional Series Workbench]
- COM, Java, and .NET projects
- To avoid confusion with support for .NET in Synergy Language, the "Synergy .NET Configuration" utility in the Synergy/DE > Utilities menu has been renamed to "xfNetLink .NET Configuration". [tr#31415]
- The .NET Component project in Workbench supports the new -nr option for gencs (tr#31385). The dialog now contains a field labeled "Generate output parameters as". Selecting the "Ref" radio button is the same as the current behavior: out parameters will be generated as ref types in the C# code. Selecting the "Out" radio button will pass the new -nr parameter to gencs, which will cause the parameters to be generated as out types. [tr#31420]
- Previously, when opening a workspace where the active project was a .NET Component project with a read-only .VPJ file, Workbench would incorrectly prompt the user to make the project file writable. This has been fixed. [tr#31008]
- Previously, if you closed Workbench with a .NET Component project left open, the next time you opened Workbench, the Build Assembly command for the project did not function correctly. This has been fixed. [tr#31221]
- Synergy/DE Options dialog
- On the Compile tab, the "Disable the specified warnings (-WD)" field now includes a drilldown button that enables you to select which warnings should be disabled with the -WD compiler option. [tr#30696]
- The two -qvariant fields in the Synergy/DE Options dialog are
now in sync. When you change the value for either the Prototype
(-qvariant) field or the Compile (-qvariant) field, the value for
the other will change as well. This should prevent errors that
may arise from having a mismatch between the two fields.
NOTE: If the values for these two fields are currently different, the value from the Compile (-qvariant) field will replace that of the Prototype (-qvariant) field the next time you open the Synergy/DE Options dialog. [tr#31301] - When opening the Synergy/DE Options dialog for different projects within the same workspace, Workbench now uses the project type of the selected project to determine what fields to display. Previously, Workbench was using the type of the active project, which, if different from the selected project, could result in the dialog not displaying the correct fields or possibly an error message. [tr#31309]
- Previosuly, when using certain SlickEdit command line variables on the Synergy/DE Options dialog, it was possible to cause a hang during Workbench's SynBuild command. This has been fixed. [tr#31510]
- Synergy/DE projects
- Workbench now executes project open commands when switching
project configurations. This allows more fine-tuned control of
your environment when working in Synergy/DE projects. To go
along with this change, Workbench also offers a SYNBITSIZE
environment variable that will indicate either 32 or 64
depending on the current configuration in Synergy/DE, Synergy/DE
Application, Synergy/DE Executable Library, and Synergy/DE Object
Library projects. Use the SYNBITSIZE variable when defining
Synergy logicals to keep your 32-bit and 64-bit build
environments separate.
For Workbench users who set PATH in the project open tab, Workbench now resets the PATH environment variable to the value of PATH from when the project was opened, whenever the active project or configuration is changed. This helps to prevent PATH from growing too large from recurring set statements. [tr#31158] - We significantly improved the error checking in the project build system. [tr#31226]
- When working in a 64-bit configuration in Workbench, launching Composer no longer generates an error. [tr#31376]
- If a project was open the last time the editor was open, and then Workbench was upgraded, it was possible to encounter an "Invalid XMLCFG handle" error, accompanied by a Slick-C stack-trace, when opening Workbench after the upgrade. This has been fixed. [tr#31211]
- When executing SynBuild, with the generated batch file feature enabled, it was possible to trigger a null-string error when approaching the point where Workbench automatically generates redirected input files. This has been fixed. [tr#31262]
- Workbench no longer disallows usage or generates an error when you run the Variable Usage Utility in a 9.3.1 project type. [tr#31325]
- We fixed a problem in syn_set_global that allowed incorrect items in the base environment to be overwritten under certain conditions. (The "syn_set_global" command is used to modify the base environment that is stored off when the editor is opened.) [tr#31350]
- Workbench now executes project open commands when switching
project configurations. This allows more fine-tuned control of
your environment when working in Synergy/DE projects. To go
along with this change, Workbench also offers a SYNBITSIZE
environment variable that will indicate either 32 or 64
depending on the current configuration in Synergy/DE, Synergy/DE
Application, Synergy/DE Executable Library, and Synergy/DE Object
Library projects. Use the SYNBITSIZE variable when defining
Synergy logicals to keep your 32-bit and 64-bit build
environments separate.
- Tagging
- Workbench's Context Tagging feature includes an optimization to control the number of times that tagging can occur in a short span of time. The presets for this optimization are designed to work well for most users' computers. More frequent tag operations may be desirable for faster computers to ensure tagging is always accurate. By default, a retag will not occur until one of the following conditions is met: either 10 seconds have passed or 10 characters have been typed. There are now two environment variables that may be set to modify this behavior. WBTAGDELAY changes the number of seconds, and WBTAGCOUNT changes the number of characters. Setting both to 0 turns off tag optimization. [tr#31397]
- A performance problem in Workbench was causing the Repository cache to be reset after each tag cycle. In situations with repository-intensive source code, tagging time should be greatly improved. [tr#31405]
- We fixed a problem that causes Workbench to render unnamed fields by their internal identifiers in tag field lists. [tr#31311]
- You can now list the members of a private or protected record in a method within the correct context. In addition, you can list the members of a protected record in a method within a class extending the parent that has the correct context. [tr#31235]
- Visual editor
- Workbench now has support for XMLdoc comments for Synergy Language. When documentation comments have been written for a routine, calling the routine or performing a mouseover of the routine name will show a parsed view of the doc comments. To ease the documenting of routines, typing ";;;" on the line prior to a routine will generate a documentation comment template containing "summary" and "returns" regions, as well as a region for each parameter, if there are any. [tr#30206]
- We improved support for .REGION/.ENDREGION. When you press
Enter after typing ".ENDREGION", Workbench will automatically
detect the .REGION/.ENDREGION pair and add a selective display
control (a box with +/-) in the margin next to ".REGION".
Workbench will now remember the state of your regions (expanded or collapsed) and maintain that view the next time you open the file. You no longer need to use show_code_block and hide_code_block to trigger a region to collapse. You can use the default key binding (Ctrl+\) to expand and collapse views, or bind your own key to "plusminus".
To collapse all of the .REGION/.ENDREGION blocks in the document, use View > Hide #region Blocks, or enter "hide_dotnet_regions" from the command line. Note that selecting View > Show All expands all regions and removes the +/- control. The next time you open the file, all regions will be collapsed and the +/- control will be displayed again. [tr#31207, tr#31428] - Workbench no longer generates an unnecessary END statement when you press return on a BEGIN statement of a block containing lines that are commented at the left margin. [tr#31305]
- We fixed a problem that caused incorrect indentation when pressing Enter on the "until" statement in a for-do-until loop. [tr#31394]
- Using the Alt+Semicolon keybinding on a line where the line length passes the comment column caused the code line to be split, with everything past the comment column becoming a part of the comment. This has been fixed, and the comment is now properly inserted at the end of the line. [tr#31543]
- COM, Java, and .NET projects
- xfServer
- Registering an xfServer service with encryption and a cipher file that exceeds 32 characters no longer causes problems. [tr#31514]
- A second Select on the same remote channel as a prior Select no longer generates the error $ERR_INVOPER "MOVENEXT not initialized". [tr#31286]
- (OpenVMS) We fixed a problem that caused an EOF or KEYNOT (key not same) error when using integer keys of different sizes and reading from one channel then the other channel on a big endian client to an OpenVMS server. [tr#31146]
- (OpenVMS) SYNSSLLIB.EXE (used by the client/server encryption feature) requires SSL version 1.4 now instead of SSL version 1.3. However, we still distribute files for 1.3, which you can use if necessary. For details, see "OpenSSL Requirements" in the "Requirements and Considerations" chapter of the "Installation Configuration Guide". [tr#31273, tr#31330]
- We fixed a boundary condition in xfServer that could cause memory corruption when SCS_PREFETCH was used. In addition, we fixed a problem in which an "out of memory" error caused xfServer to crash in certain cases. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31114]
- xfServerPlus [Expand All xfServerPlus | Collapse All xfServerPlus]
- xfServerPlus
- Attribute support (dbl2xml) now supports group arguments .INCLUDEd from the repository. A group argument is processed as a single alpha field, with the size taken from the repository. [tr#31342]
- (Windows, UNIX) We added some new error reporting by
xfServerPlus to handle problems with ELBs. Previously, these
conditions would simply result in a "routine not found" error.
The new errors are more specific:
- 2020, Old ELB file format detected - relink.
- 2021, Bad ELB detected.
- 2022, ELB file built with opposite 'endian'.
- 2023, ELB file built with opposite bit size.
- The 32-bit SMC/ELB utility now supports both 32-bit and 64-bit ELBs. [tr#31220]
- Registering an xfServerPlus service with encryption and a cipher file that exceeds 32 characters no longer causes problems. [tr#31514]
- (Windows) The DEBUGPORT setting is no longer added to the
global Default key when an xfServerPlus service requesting
remote debugging (-rd) is registered. In prior versions,
this was causing remote debugging to remain turned on even
after unregistering and reregistering a service without remote
debugging.
NOTE: If DEBUGPORT is set in your global Default key and you don't want new services to inherit that setting, you must use the Registry Editor to remove it from HKEY_LOCAL_MACHINE\SOFTWARE\Synergex\Synergy xfServer\Default. [tr#31406] - (Windows) Due to a Microsoft bug, in rare cases on a busy system, the error "The remote procedure call failed and did not execute" (1727) could be generated. This has been corrected. [tr#31550]
- (OpenVMS) SYNSSLLIB.EXE (used by the client/server encryption feature) requires SSL version 1.4 now instead of SSL version 1.3. However, we still distribute files for 1.3, which you can use if necessary. For details, see "OpenSSL Requirements" in the "Requirements and Considerations" chapter of the "Installation Configuration Guide". [tr#31273, tr#31330]
- (OpenVMS) Rsynd has been enhanced to allow it to be restarted while a client still has a connection open on the specified port. [tr#31265]
- (OpenVMS) XFPL_SINGLELOGFILE is no longer added to the xfpl.ini file installed on VMS. (This setting is valid only on Windows and UNIX.) [tr#25376]
- (OpenVMS) We fixed a problem that was causing an infinite loop when an error occurred during the shutdown of the xfServerPlus server. [tr#30902]
- (OpenVMS) Rsynd now kills all running xfpl processes when shut down with /SHUTDOWN=ALL. [tr#31236]
- (OpenVMS) The /SHUTDOWN switch is no longer ignored when rsynd is started as a detached program. [tr#31336]
- (OpenVMS) Sending and receiving packets larger than 65k now works properly. [tr#31270]
- (OpenVMS) Running a port scanner on the xfServerPlus port no longer causes rsynd to enter an infinite loop. [tr#31304]
- We fixed a problem in which xfServerPlus with a Synergy client did not retry on an EINTR signal when performing a select operation, causing a premature failure that would otherwise result in a successful operation. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31129]
- Method Definition Utility
- As required by the corresponding Synergy Language change in version 9.5.1, the default length of Boolean coerced types is now 4 instead of 1 for both return values and parameters. [tr#31518]
- We fixed the error message that displays when an invalid enumeration name is selected in the "Find Repository Enumeration" dialog. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31017]
- The menu entry "Select Enumeration" is now correctly disabled when the "Description" drilldown is selected. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31019]
- Previously, you could import a single method when there was a duplicate method name in the same interface already in the SMC. This now correctly generates an error. This problem was caused by the fix in tr#22066 in 9.3.1, which has now been backed out and deemed a restriction. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31040]
- We corrected a problem that caused the MDU to generated errors when importing by method name that didn't appear when importing the same methods by interface. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31077]
- A GUI import done by method name permitted the import of a method without an interface name from an XML file generated by dbl2xml. This has been fixed. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31078]
- Error messages generated on import now always include the name of the interface being imported. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31080]
- We fixed a problem that caused corrupt log messages in the xfServerPlus log and the Windows event log when encryption was enabled. (This tracker was fixed in Windows and UNIX in version 9.3.1b.) [tr#31188]
- xfServerPlus
- xfNetLink Java Edition
- xfNetLink .NET Edition
- The Synergy .NET Configuration utility has been renamed the xfNetLink .NET Configuration utility to avoid confusion with the support for .NET in Synergy Language. You'll see the new name on the Start menu and in the application and help windows. [tr#31413]
- We added a new option to gencs, -nr, which causes output parameters to be generated as "out" rather than "ref" in the C# code. This option is also available in the Component Information dialog in Workbench. [tr#31385]
- Encryption and compression can be used at the same time now without causing a connection timeout error. [tr#31260]
- Gencs now throws an exception and returns an error status, which can be caught in a batch or build file, when it encounters an interface without a name in the XML file. [tr#31303]
- Synergy/DE Data Provider for .NET
- We updated the installation for the Synergy/DE Data Provider for .NET to require Service Pack 2 for Windows Server 2003. [tr#31175]
- The Synergy/DE Data Provider for .NET no longer supports Visual Studio 2008 or .NET Framework 3.5. (It now supports only Visual Studio 2010 and .NET Framework 4.) [tr#31245]
- Synergy Language [Expand All Synergy Language | Collapse All Synergy Language]
- Synergy/DE 9.3.1b (Windows) [Expand All | Collapse All]
- Synergy Language [Expand All Synergy Language | Collapse All Synergy Language]
- Analysis engine
- The analysis engine no longer generates a segmentation fault when an error occurs on a line that has a macro expansion and involves string concatenation. [tr#31057]
- A circular nested class previously caused the analysis engine to loop until a segmentation fault occurred. Now a "Circular base class not allowed" error (CIRCBASE) is correctly generated. [tr#31133]
- Previously, if an I/O error occurred during the reading of a source file, it caused a segmentation fault. A valid error is now generated. [tr#31065]
- When a boxed integer is assigned to an array of boxed integers (without giving the element index), a segmentation fault no longer occurs. [tr#31127]
- Previously, a prototype file created with the -out option that was in the second directory specified by SYNIMPDIR was not being loaded. We discovered the include guard processing was preventing the file from loading, so we added a flag to the prototype file that indicates when the include guard should be ignored so that it mimics the include guard processing of the old .dbh files. To pick up this change, prototypes must be regenerated. [tr#31144]
- Providing an invalid modifier on a property returning type i no longer causes a segmentation fault. [tr#31150]
- Compiler
- In previous versions, an inappropriate range error could occur when compiling with -qcheck in the context of a ^M. This has been fixed. [tr#30641]
- Passing ^NULL to an overloaded method previously picked the first overload. Now it correctly gives an "Ambiguous symbol" error (AMBSYM). You must cast ^NULL to the desired type to get the correct overload. THIS MODIFICATION MAY BREAK YOUR CODE. [tr#30969]
- The compiler no longer generates an "Incorrect number of dimensions for {%s}" error (INVNUMDIM) when a parameter with (*) syntax is used in an expression and the -qstrict compiler option is specified. In some cases, this also previously caused a segmentation fault, causing Workbench to crash. [tr#31055]
- When source files that contain routines without END, ENDSUBROUTINE, ENDFUNCTION, or ENDMAIN keywords are compiled together, a level 3 warning is now generated instead of a NOSPECL error. [tr#31061]
- Trying to create an array of any nested type no longer causes an invalid NOTSTAT error to be reported. [tr#31075]
- In versions 9.3.1 and 9.3.1a, four times the amount of memory required was being allocated for the internal parse trees. This has been fixed. [tr#30614]
- Using data areas that contain object handles is no longer allowed in DISPLAY, STORE, WRITE, WRITES, PUT, and PUTS statements. [tr#30965]
- Structures, objects, and strings are no longer allowed to be specified as types for group declarations. [tr#30980]
- When writing to a path, the path cannot contain property get methods that return intermediate structures. A "Cannot write to this entity" error (NOWRITE) is reported if this occurs. [tr#30996]
- Previously, when trying to include a structure in a namespace and then including that namespace in another .dbl file that referenced the included structure, if xfMethod was being used, the compiler didn't recognize that the included structure was there. This has been fixed. [tr#31053]
- The compiler no longer incorrectly resolves to a member of an enclosing class when that member matches the name of a member of the nested type (for example, an enumeration). [tr#31062]
- Casting type d to type @int now correctly generates an "Invalid cast operation" error (INVCAST) instead of causing a runtime segmentation fault. [tr#31066]
- A prototype of a structure included from a repository previously failed the xfMethod attribute checks with a message that it wasn't from the repository. This has been fixed. [tr#31122]
- Previously, using a void type in a format statement did not generate a compiler error, which caused a runtime segmentation fault. This has been fixed so that an "Invalid use of type %s" error (INVTYP) is now reported. [tr#31134]
- Previously, when a nested structure contained an object field, attempting to write to the field directly caused a segmentation fault. A "Cannot write to this entity" error (NOWRITE) is now reported. [tr#31143]
- Assigning an object to a handle within the scope of another object has been corrected in some situations where the resulting scope was being set to the wrong object. [tr#31149]
- Previously, attempting to box/unbox a local structure within the context of an IF statement caused a segmentation fault. The compiler now correctly generates a BOXLCLSTR error. [tr#31189]
- A call outside of a TRY block was incorrectly allowed. This has been fixed and a "Label %s out of scope" error (LBLSCOPE) is now correctly reported. [tr#31206]
- Installation
- The web-distributable release of 64-bit Synergy/DE now unpacks its files to a different default location than 32-bit Synergy/DE so the installation files will not be overwritten. [tr#31167]
- Linker
- We fixed dblink to verify that the read of the header in a DBR file does not have an error. Previously a segmentation fault could occur. [tr#31065]
- Windows, UNIX) The linker was modified to detect and report when a referenced ELB was built with the wrong endian type or the wrong bit size (32-bit vs. 64-bit). [tr#31141]
- Runtime
- (Windows) In versions 9.3.1 and 9.3.1a, a problem existed where ONERROR code execution was being directed to the wrong label. If an I/O statement containing an I/O error list generated an EOF, the next error that occurred while an ONERROR was in effect would erroneously cause the previous I/O error list to be processed, instead of the ONERROR label(s). [tr#31214]
- (Windows) Previously, the service runtime dbssvc destroyed objects before calling the on-exit routine. This has been fixed to destroy objects after the exit routine has been called. [tr#31060]
- FOR statement processing now goes through the correct number of iterations for integers where the start value is less than -1073741824 and the end value is greater than 1073741824. [tr#31123]
- Previously, the debugger display of static class fields when a record or group was specified was shifted by several bytes. The contents of the record or group are now displayed correctly. [tr#31124]
- A THROW with an uninitialized or NULL object handle now generates an "Invalid use of NULL object" error ($ERR_NULLREF) and is mapped to System.SystemException.NullReferenceException when caught. [tr#31125]
- A condition where an ISAM file cache was not being flushed to disk, resulting in file corruption, has been resolved. The condition occurred when a DELETE/READS/CLOSE operation occurred on an ISAM file opened with exclusive access with system option #36 (file flushing) set. Additionally, a process being killed or a system crash with system option #36 set still corrupted the index of the ISAM file. [tr#31131]
- (Windows) On a 64-bit operating system, an SQL Connection program failed unless dblvars32 or dblvars64 was run. This has been fixed. [tr#31137]
- Attempting to assign an object contained within another object to the only existing handle referencing the containing object no longer causes an "Invalid class handle" error (INVCLSHND) or segmentation fault. Example: HND1 = HND1.HND2 [tr#31140]
- (Windows) We changed how LPQUE locates its printer when printing via xfServer. This should allow more uses of LPQUE without a user profile being loaded. [tr#31147]
- (Windows, UNIX) The runtime was modified to detect and report when a referenced ELB was built with the wrong endian type or the wrong bit size (32-bit vs. 64-bit). [tr#31141]
- The System.Array static methods IndexOf and LastIndexOf now both allow a ^NULL target value object handle to return the index of the first or last ^NULL entry in an array. [tr#31151]
- An ISAM index caching problem that occurred when 65535 operations occurred on another channel or process before the current channel update operation was executed and that caused random segmentation faults or index incongruity errors has been resolved. [tr#31160]
- (Windows, UNIX) A READ/READS of a locked ISAM file record using the WAIT qualifier no longer generates an "Unexpected system locking error" ($ERR_INTLCK) instead of a "Record is locked" error ($ERR_LOCKED) when the WAIT period expires before the record becomes unlocked. On UNIX, successive polling attempts to read a locked ISAM file record using READ/READS (without using the WAIT qualifier or SLEEP statement between attempts) no longer generates $ERR_INTLCK (303) instead of $ERR_LOCKED (40) after 12 retries. [tr#31164]
- STOP <nnn> (where <nnn> is a number), called from within a TRY-CATCH block whose scope includes a FINALLY block, no longer generates a segmentation fault. Additionally, a STOP <prog> (where <prog> is the name of a program to chain to), also called from within a TRY-CATCH block whose scope includes a FINALLY block, now executes the FINALLY block prior to chaining, as expected. [tr#31172]
- (Windows 64-bit) A segmentation fault could previously occur when an external DLL called back into the runtime and then the callback routine issued a STOP statement. This has been fixed. [tr#31180]
- (Windows) Windows 7 and all 64-bit Windows platforms now prevent exceptions from being thrown across the kernel (user32.dll) boundary. This means that a Windows callback--for example, a .NET assembly API delegate called from a WinForm or an ActiveX event called from a UI control--cannot perform a STOP chain or throw an exception that could be caught in a routine on the other side of the callback without causing random hangs and crashes. We have updated the Synergy runtime to generate an $ERR_NOCHAIN error if a Windows callback attempts to perform a STOP chain. (We cannot, however, prevent the callback from throwing an exception that could be caught in a routine on the other side.) THIS ISSUE MAY BREAK YOUR CODE. [tr#31201]
- Synergy ActiveX API
- In versions 9.3.1 through 9.3.1a, returning a double parameter via the ActiveX API after an integer parameter sometimes resulted in a BIGNUM error. This has been fixed. [tr#31198]
- Synergy Configuration Program (SynConfig)
- In 9.3.1a, if you created an xfServer or xfServerPlus service that had encryption enabled but you cleared the certificate file field, an error occurred when registering the service. The default certificate file is now used in this situation. [tr#3105
- Synergy HTTP document transport API
- Previously, the system error text was not appended when a "Gethostbyname failed" error occurred. In addition, on UNIX, the error code returned was SS_ENULL instead of the correct error code. These have been fixed. [tr#31196]
- Synergy .NET assembly API
- We added a second version of gennet.exe, gennet40.exe (with an accompanying gennet40.exe.config), which can load both 4.0 and 2.0 CLR assemblies. (Gennet.exe can only load 2.0 CLR assemblies.) [tr#30778]
- We added an environment variable, SYNNET_CLR, to control the CLR version. If SYNNET_CLR is not explicitly set to 2 or 4, the Synergy .NET assembly API will default to the 2.0 CLR. (Note that in version 9.5, the default value for SYNNET_CLR will change to 4.0.) [tr#31117]
- In 9.3.1a, a Windows Presentation Foundation (WPF) control sometimes doubled some keyboard input. This has been fixed. [tr#31145]
- Gennet cannot support classes outside a namespace. We have modified gennet to detect this condition and output an appropriate error. [tr#31161]
- Previously, specifying a path or logical that contained 8.3 syntax (such as c:\progra~1\...) on the gennet command line caused errors when prototying a generated file or when using -s xmlfile. 8.3 file specification are no longer allowed in the .NET assembly API. [tr#31153]
- Previously, passing a Boolean or integer literal to a .NET assembly API method triggered a segmentation violation. This has been fixed. [tr#31204]
- Synergy Windows printing API
- In previous versions, if a report was printed to the Microsoft XPS Document Writer but the user canceled the subsequent "Save as" dialog, a Windows error 1223 or 122 was signaled. A trappable $ERR_IOFAIL error with the informational text "user aborted spool" is now correctly generated instead. [tr#30188]
- In previous versions, a multi-monitor configuration could cause the print preview window's contents to be sized improperly. This has been fixed. [tr#30925]
- In 9.3.1 through 9.3.1a, setting a property for the default printer (such as orientation) was not reflected in the printer selection dialog box. This has been fixed. [tr#31195]
- Synergy XML API
- In 9.1.5 through 9.3.1a, %XML_ATTR_COPY truncated the length of an attribute's name to be the length of the attribute. This has been fixed. [tr#31132]
- Utilities
- We fixed listdbr to verify that the read of the header in an ELB file does not have an error. [tr#31065]
- The dblproto utility now displays a warning message (for example, "%DBLPROTO-W-SKIP: Error on Method: skipping MyClassMethod") when it skips processing part of a file when dblproto encounters an error. [tr#31087]
- (Windows, UNIX) The listelb and SMC/ELB Comparison utilities were modified to detect and report when a referenced ELB was built with the wrong endian type or the wrong bit size (32-bit vs. 64-bit). [tr#31141]
- The dbl2xml utility no longer generates a segmentation fault on a structure reference when a prototype file is imported with a structure that was included from a repository. The repository structure name is correctly retrieved. [tr#31156]
- Dbl2xml and dblnet2xml no longer cause a segmentation fault in the C++ runtime. [tr#31174]
- Analysis engine
- UI Toolkit [Expand All UI Toolkit | Collapse All UI Toolkit]
- List Processing
- (Windows) In previous versions, Toolkit would sometimes fail to process a D_LMOVEDN (L_PROCESS) request on the last visible item of a resizable list with buttons when there were more items below the last visible one. Instead, the last visible item appeared to be deleted, and Toolkit marked the end of the list at that point. This affected the "Reorder fields" function of Synergy/DE Repository. This has been corrected. [tr#30991]
- (Windows) In previous versions of the ActiveX Toolkit list control, if a user modified a field by entering a value with fewer characters than the maximum allowed for the field, and if the program subsequently displayed a longer value into the same field, Toolkit would sometimes truncate the longer value to the number of characters the user had entered. This has been corrected. [tr#31183]
- (Windows) In 9.3.1 and 9.3.1a, loading a large ActiveX Toolkit list would sometimes cause a resource error (either during list processing or later during the creation of a window.) This has been corrected. [tr#31076]
- Miscellaneous
- (Windows) Windows 7 and all 64-bit Windows platforms now prevent exceptions from being thrown across the kernel (user32.dll) boundary. This means that a Windows callback--for example, a close method invoked by clicking the close box (x) for a container--cannot perform a STOP chain or throw an exception that could be caught in a routine on the other side of the callback without causing random hangs and crashes. We have updated the Synergy runtime to generate an $ERR_NOCHAIN error if a Windows callback attempts to perform a STOP chain. (We cannot, however, prevent the callback from throwing an exception that could be caught in a routine on the other side.) NOTE THAT THIS ISSUE MAY BREAK YOUR CODE. [tr#31201]
- List Processing
- Repository
- Loading fields from a definition file when the file contains overlay fields within a group no longer causes an error. Additionally, we fixed a bug where group overlays (,X) were not loaded unless the comma immediately followed the type/size. For example, this wouldn't work: ,A30 ,X But this would: ,A30, X[tr#22867]
- Professional Series Workbench [Expand All Professional Series Workbench | Collapse All Professional Series Workbench]
- COM, Java, and .NET projects
- wWorkbench no longer provides a Target .NET Framework version combo box on the .NET Environment configuration dialog. The target version is controlled by the version of the C# Compiler that is executed (csc.exe). When you select a vsvars32.bat or sdkvars.bat file to be used, you are effectively determining the version of the .NET Framework that you would like to target. The first Framework referenced by the environment PATH variable is the version that will be used. [tr#31163]
- Synergy/DE Options dialog
- When inserting a path (not a logical) into the object path field of the Compile tab on the Synergy/DE Options dialog, omitting a trailing slash previously caused undefined behavior. This has been fixed. [tr#31036]
- The Synergy/DE Options dialog is no longer resizable. [tr#31039]
- The tab order on the Compile tab has been fixed. [tr#31084]
- Other options on the Compile tab are now refreshed correctly when the state of the debug field changes. [tr#31092]
- In 9.3.1a, a problem in the save logic of the Synergy/DE Options dialog was handling changes to an individual configuration the same as a change to All Configurations. This has been fixed. [tr#31126]
- Workbench now provides better support for paths containing spaces when they are inserted into the -expdir field on the Prototype tab. [tr#31130]
- Synergy/DE projects
- When using the %rn token in the Synergy/DE Options dialog, Workbench will no longer replace it with a lowercase variant of your project name. The actual case is now preserved. [tr#31042]
- When dealing with projects with large file counts that did not use the "Compile sources into a single object named" feature, Workbench took too long generating the build batch files. This performance issue has been fixed. [tr#31056]
- Previously, When using the object path field on the Compile tab of the Synergy/DE Options dialog with "Compile sources into single object named" field unchecked, it was possible to get duplicate items in the link command line based on the object path. This has been fixed. [tr#31058]
- The generate batch file feature no longer halts the build process when the file is read-only but the user opts to make it writable. [tr#31083]
- Visual editor
- The *.* file selection in the Smart Open dialog now works correctly. [tr#30979]
- In 9.3.1 and 9.3.1a, the Find dialog sometimes remained open after a successful search. This has been fixed. [tr#31115]
- COM, Java, and .NET projects
- xfServer
- We fixed a boundary condition in xfServer that could cause memory corruption when SCS_PREFETCH was used. In addition, we fixed a problem in which an "out of memory" error caused xfServer to crash in certain cases. [tr#31114]
- (Windows) Concurrent select operations to a Windows xfServer could cause data corruption or a segmentation fault. This has been fixed. [tr#31208]
- xfServerPlus [Expand All xfServerPlus | Collapse All xfServerPlus]
- xfServerPlus
- We fixed a problem in which xfServerPlus with a Synergy client did not retry on an EINTR signal when performing a select operation, causing a premature failure that would othewise result in a successful operation. [tr#31129]
- Method Definition Utility
- Previously, you could import a single method when there was a duplicate method name in the same interface already in the SMC. This now correctly generates an error. This problem was caused by the fix in tr#22066 in 9.3.1, which has now been backed out and deemed a restriction. [tr#31040]
- We corrected a problem that caused the MDU to generated errors when importing by method name, which didn't appear when importing the same methods by interface. [tr#31077]
- A GUI import done by method name permitted the import of a method without an interface name from an XML file generated by dbl2xml. This has been fixed. [tr#31078]
- Import error messages now always include the name of the interface being imported. [tr#31080]
- We fixed the error message that displays when an invalid enumeration name is selected in the "Find Repository Enumeration" dialog. [tr#31017]
- The menu entry "Select Enumeration" is now correctly disabled when the "Description" drilldown is selected. [tr#31019]
- We fixed a problem that caused corrupt log messages in the xfServerPlus log and the Windows event log when encryption was enabled. [tr#31188]
- xfServerPlus
- xfNetLink .NET Edition
- We now support Visual Studio 2010 and Framework version 4.0.
- The "Original" property (new in 9.3.1; see tr#30422 below) is now generated only when you use the gencs -r option. [tr#31136]
- We corrected a problem introduced in 9.1.3 that prevented "ClickOnce deployment" with xfnlnet.dll. Note that ClickOnce deployment is not supported. [tr#31071]
- We corrected a problem in gencs that caused a C# compiler error when a repository structure was used as a group within multiple structures and as a parameter. [tr#31165]
- Previously, when a structure contained a group with a binary field, and the SMC indicated that the parameter should be created as an ArrayList of structures and a DataTable, gencs was not correctly converting the binary field to a byte array and would generate an error. We corrected this problem. [tr#31094]
- Previously, when encryption was enabled, the client was not sending the shutdown message over the encrypted socket, and so an "OpenSSL error" was written to the Windows event log. We corrected this problem. [tr#31194]
- Synergy/DE Data Provider for .NET
- The Synergy/DE Data Provider for .NET now supports Visual Studio 2010. See the "Important Notes and Warnings" section of the Synergy/DE Data Provider for .NET release notes for information on moving from Visual Studio 2008 to Visual Studio 2010, and see "Documentation Corrections and Additions" section for information on accessing help in Visual Studio 2010.
- In previous versions, with Visual Studio 2008 it was difficult to clear the Modify Connection window's Password field if it had a password when the window opened. This has been corrected.[tr#30123]
- Synergy Language [Expand All Synergy Language | Collapse All Synergy Language]
- Synergy/DE 9.3.1a [Expand All | Collapse All]
- Synergy Language [Expand All Synergy Language | Collapse All Synergy Language]
- Analysis engine
- We now prevent type resolution of a data type specified as NULL or @NULL. [tr#30246]
- If a local field had the same name as the namespace of a class being instantiated with a new statement that had a fully qualified path, the analysis engine gave an invalid NOTCALLABL error. This has been fixed.
- Compiler
- The prototype for L_SELECT has been fixed to allow the second argument to both pass and receive a request flag. [tr#25685]
- In 9.3.1, PROTOMISMCH and BSTMTCH errors were sometimes generated incorrectly when compiling with -qcheck (bounds checking) and using prototyping. Linker errors also occured. This has been fixed. [tr#30955, 30944]
- In 9.3.1, record with user-defined fields that were .INCLUDEd from a repository no longer included type and size. This has been fixed. [tr#30954]
- Comparing a non-object type to ^NULL in an IF statement now correctly generates a compilation error. [tr#30929]
- (OpenVMS) Sometimes dblproto creates filenames whose length is greater than 39 characters when the namespace and class names are added. OpenVMS disks with ODS-2 structure cannot rename the temporary filename to a name greater than 39 characters in length. The blproto program informs the user of the problem when it cannot create the file. [tr#30993]
- In 9.3.1, when prototypes with the same name existed in multiple directories specified by SYNIMPDIR, a TOKUDF error was generated. We now prevent the second prototype from being imported. [tr#31003]
- The seventh argument to DD_ALIAS in the Repository subroutine library has been changed from type a to type n. THIS MODIFICATION MAY BREAK YOUR CODE. [tr#31005]
- Debugger
- The debugger has been fixed to correctly break in a CATCH after an error occurs in an intrinsic function in a TRY block. [tr#30947]
- (Windows) In 9.3.1, if you ran an application in debug mode, when it was waiting for normal application input, hovering the mouse cursor over the debug window caused the debug window to flicker, and you could not bring the debug window in front of the application window. This has been fixed. [tr#31048]
- Installation
- (OpenVMS) The OpenVMS installation script now asks about encryption when installing xfServer/xfServerPlus and appropriately modifies the synergy_server command line in the SYS$MANAGER:synergy_startup.com file. [tr#30325]
- Runtime
- We improved the performance of the QSORT routine. [tr#30987]
- We added a new ^VAL function called %GETCRC to retrieve the internal CRC value from a GRFA. See "Documentation Corrections and Additions" below for syntax. [tr#31020]
- Data encryption using overlapping buffers that exceed 4K and don't start at the same offset now decrypts properly. [tr#30985]
- (OpenVMS) In 9.3.1, a WRITE to a non-ISAM/non-relative file no longer generates an $ERR_RECNUM error ("Illegal record number specified") when the record number argument is not present. This behavior is specific to OpenVMS and equivalent to the behavior in prior versions of Synergy/DE on OpenVMS, but it is illegal on all non-VMS platforms. [tr#30983]
- The XCALL GETFA keywords SLE and SLC no longer fail with an $ERR_OUTRNG error ("Value out of range"). [tr#30982]
- Previously, when the %SYN_UNESCAPE_HANDLE function was used either directly or via the XML API, memory was sometimes accessed incorrectly, causing a segmentation fault. This has been fixed. [tr#30978]
- A SELECT statement to an OpenVMS server when a record is locked now returns the locked record's contents (read regardless of lock) instead of giving an $ERR_LOCKED error ("Record is locked"). [tr#30972]
- A SELECT statement between big- and little-endian machines that used integer keys and/or fields previously sent the integer value for comparison in the wrong endian order. This has been fixed. [tr#30968]
- In 9.3.1, passing an implied temporary variable (for example, the result of a numeric expression of %IMPLIED) to FP_FROM_NUM previously resulted in a segmentation fault. This has been fixed. [tr#30957]
- (UNIX) Using LPNUM with system option #22 failed in 9.3.1. This has been fixed. [tr#30956]
- (OpenVMS) In 9.3.1, when system option #22 was not set, the LPQUE statement processed the COPIES, DELETE, and FORM options incorrectly. This has been fixed. [tr#30998]
- The runtime now traps segmentation faults on Windows Vista and subsequent platforms, instead of using Windows Error Reporting. This enables you to see the Synergy stack trace. [tr#31007]
- (SCO OpenServer) An "Unexpected system locking error" ($ERR_INTLCK) is no longer generated on a read that occurs at the same time that a child process terminates. [tr#31016]
- (Windows, UNIX) When sorting a file using the SORT statement, a file with 8-bit character keys now sorts correctly when the sort key is type /a (alpha). [tr#31018]
- (Windows, UNIX) Previously, when an RTNNF error was generated, the called from name and the routine name were reversed. In addition, the name of the routine in error was not unmangled. This has been fixed. [tr#31022]
- (Linux) Using gcc to link with xclapi, httpslib, or synssl objects no longer generates a _fast_intel_memset or _fast_intel_memcpy not defined error. [tr#30964]
- (Windows 64-bit) In 9.3.1, due to a build issue, performance was reduced because of internal memory debug tracking being enabled. This has been fixed.
- Synergy Configuration Program (SynConfig)
- SynConfig now allows DBLDIR to be changed when creating an xfServer or xfServerPlus service. Due to a regression made in version 9.3.1, DBLDIR was always being reset, and this was not apparent until you attempted to start the service or restart SynConfig. [tr#30975]
- In previous versions of SynConfig, the value used for DBLDIR in newly created services was based on the value of the SYNERGDE environment variable. However, this variable is not set on 64-bit systems. We have corrected SynConfig so that it now uses SYNERGYDE64 if the 64-bit version of SynConfig is being executed. On 32-bit systems, SynConfig will use SYNERGYDE32 if it is set; otherwise, it will use SYNERGYDE. [tr#30967]
- SynConfig no longer generates an error "rsynd.pem, {No such file or directory}" when creating an xfServer or xfServerPlus service with encryption and using the default location "DBLDIR:rsynd.pem" for the PEM file. [tr#30934]
- (Windows) When Enable encryption is checked for the Default service, a new xfServerPlus service no longer inherits this setting if its Enable encryption setting is unset. [tr#30933]
- In previous versions of SynConfig, if you created an xfServer or xfServerPlus service or made changes to one, and before clicking Apply, you clicked Modify Service but then made no changes and OK'd the dialog, clicking OK or Apply on SynConfig's main panel did not apply the previous changes or create the service. This has been fixed. [tr#30935]
- SynConfig now correctly uses SYNERGYDE/SYNERGYDE32 or SYNERGYDE64 (for 64-bit) to locate rsynd.exe. [tr#30999]
- Synergy HTTP document transport API
- We have enabled support for the parameter for HTTPS requests in %HTTP_CLIENT_GET and %HTTP_SERVER_RECEIVE. [tr#30977]
- A small memory leak for every HTTPS operation has been fixed. Over time, this could have caused a process to run out of memory. [tr#30976]
- (Linux) Using gcc to link with xclapi, httpslib, or synssl objects no longer generates a _fast_intel_memset or _fast_intel_memcpy not defined error. [tr#30964]
- Synergy Language C interface
- (Linux) Using gcc to link with xclapi, httpslib, or synssl objects no longer generates a _fast_intel_memset or _fast_intel_memcpy not defined error. [tr#30964]
- Synergy .NET assembly API
- We now call Form.Dispose on a .NET form if the version of .NET being used provides it. [tr#30994]
- Utilities
- In 9.3.1, when prototyping and compiling files individually, a comment on something that would appear in the prototype could cause a PROTOMISMCH error. This has been fixed. [tr#30988]
- The error displayed when an old format SMC file is specified has been updated and consolidated to not mention a version. [tr#30931]
- The dbl2xml utility now handles group arguments correctly. They are processed as a single field of the type and size specified in either the parameter definition or with the xfParameter attribute. [tr#30910]
- Analysis engine
- UI Toolkit [Expand All UI Toolkit | Collapse All UI Toolkit]
- Environment Processing
- We updated %E_INFO so that it returns 0 whenever it is called with D_ENV_LEVEL while Toolkit is inactive. In previous versions, if you called %E_INFO with D_ENV_LEVEL, it would return 0 if Toolkit had never been initialized (with U_START) in the current session, and it would return 1 if it had been initialized and subsequently terminated (with U_FINISH). Now it returns 0 in both cases. [tr#30959]
- (Windows) In version 9.3.1, if a call to E_SECT or E_EXIT resulted in the elimination of a centered or right-justified portion of text in an information or footer line, that text would not be erased until something else was displayed in its place. This has been corrected. [tr#30963]
- Input Processing
- (Windows) We added the and arguments (previously implemented for B_BUTTON) to IB_BUTTON. [tr#30958]
- (Windows) In previous versions, if a field was right-justified or center-justified and used a fixed-pitch font, the position of the caret would sometimes be off by a character. This has been corrected. [tr#30973]
- In previous versions, if you entered a value in an i8 field that was less than the lowest negative value that can be represented in an i8 field, Toolkit would bit-truncate the value without an error message. This has been corrected. Toolkit now reports a "Value too large for field" error in this case. [tr#30986]
- (Windows) In previous versions, signaling the I_CANCEL menu entry would not cause Toolkit to reset the contents of a multi-line field to its previous contents. This has been corrected. [tr#30950]
- List Processing
- (Windows) We now distribute version 8.0.0.9 of the FarPoint Spread ActiveX control, which is the control we use for ActiveX Toolkit lists. [tr#31025]
- The prototype for L_SELECT has been fixed to allow the second argument to both pass and receive a request flag. [tr#30961]
- In previous versions, double-clicking on an ActiveX list would in rare cases cause a segmentation fault. This has been corrected. [tr#30997, tr#31023]
- .NET Processing
- (Windows) In previous versions, some .NET controls would fail to see some keyboard input. For example, in one case, a DevExpress text box did not recognize lowercase characters. This has been corrected. [tr#30932]
- Tab Set Processing
- (Windows) We added the and arguments (previously implemented for B_BUTTON) to the DTS_BUTTON subfunction of %TS_TABSET. [tr#30958]
- Utility Routines
- In previous versions, if a window failed to load from a window library and an error argument (e.g., the argument for U_LDWND) was passed to prevent an abort, a subsequent call to %U_GETWNDERR would not return the text of the trapped error. This has been corrected. %U_GETWNDERR now returns the error text that would have been reported by U_ABORT had the error not been trapped. [tr#30951]
- Miscellaneous
- In previous versions, if a method could not be loaded because it was in an ELB that was opened at runtime and it referenced a global data section that was uninitialized, the resulting error message indicated only that the routine (or a routine that it calls) could not be found. This has been corrected. The error message now says " (or a routine it calls) missing, or GDS uninitialized," where is the name of the method. [tr#30970]
- Environment Processing
- Connectivity Series [Expand All Connectivity Series | Collapse All Connectivity Series]
- xfODBC
- We added a field, Signed, to the Column window of the xfODBC Database Administrator (the DBA program). This field indicates whether a numeric column in the system catalog is signed or unsigned (which is determined by whether "Negative allowed" or a positive range of values is selected for the corresponding field in the repository). [tr#31041]
- If a SQL statement has a FROM clause and a WHERE clause, and the FROM clause has an inline view with a join, xfODBC now correctly applies the criteria for the outer WHERE clause to the legs of the inline view, improving performance. [tr#31032]
- In previous versions, if you used dbcreate with a conversion setup file (-i) in which a table had been marked as OUT, dbcreate would sometimes attempt to create a table twice. This resulted in a "is already defined" caution and prevented remaining tables from being generated. This has been corrected. [tr#31047]
- In previous versions, SQLColumns would sometimes report incorrect lengths for decimal fields. This has been corrected. [tr#31031]
- xfODBC
- Repository
- The data type of the seventh argument to DD_ALIAS has been changed from alpha to numeric. THIS CHANGE MAY BREAK YOUR CODE. [tr#31005]
- Pressing F7 to select a format for a date or time field, and then switching back to the Field Definition tab, no longer causes a "no field set defined for window" fatal error. [tr#30966]
- Professional Series Workbench [Expand All Professional Series Workbench | Collapse All Professional Series Workbench]
- COM, Java, and .NET projects
- The .NET Environment Configuration dialog was meant to be modal but was non-modal in the 9.3.1 release. This allowed for incorrect interaction with the Component Information Dialog or editor buffers while the .NET Environment Configuration dialog was open. This has been fixed. [tr#30930]
- We improved the error message that is displayed when creating a Java, .NET or COM Component project with a project name that is an invalid component name. [tr#25314]
- Component Information dialog
- Several text boxes in the Component Information Dialog had right-arrow key press behavior that was not uniform to most text boxes throughout the editor. Namely, a right key press at the end of the text box would not continue one space past the end of the line. This behavior has been changed to match other text boxes. [tr#25252]
- Synergy/DE projects
- By request, Debug32 is now the default configuration in new Synergy/DE, Synergy/DE Application, Synergy/DE Executable Library (ELB) and Synergy/DE Object Library (OLB) projects. [tr#30942]
- When certain tools in Workbench (for example, Generate C# Classes) encounter an error, the error output will now be slightly more verbose to hasten discovery of the problem (for example, licensing errors). [tr#24092]
- We fixed an issue that caused compile error markers not to display on the first compile after opening Workbench. [tr#30992]
- The generated batch file feature now supports SlickEdit variables in the Open commands of the project. The following variables are supported: %w, %wp, %wn, %r, %rp, %rw, %rn, %b and %bn. [tr#31010]
- Workbench no longer performs bad token replacement for the link command on Build when the output file contains an %n token. [tr#31011]
- When appending libraries to the lists on the Synergy/DE Options dialog, if a library extension is not provided, Workbench now fills one in for you. [tr#31013]
- Workbench now handles non-logical object paths correctly. [tr#31024]
- Switching between two projects in the same workspace that both have 64-bit configurations active previously resulted in the 64-bit environment settings being lost. This has been fixed. A side effect is that a user without a valid 64-bit installation may encounter additional error messages when opening a project currently in a 64-bit configuration. [tr#31028]
- The Workbench build system now includes default extensions for the compile, link, and librarian output files. [tr#31030]
- When working with large projects and the generate batch file feature in Workbench's build system, Workbench creates redirected input files to accommodate command lines that exceed Windows' limits. However, it incorrectly used DOS-style environment variables instead of Synergy logical syntax within file paths, causing the build to fail when run from the batch file. This has been fixed. [tr#31043]
- Synergy/DE Options dialog
- We now offer a switch for the command that opens the Synergy/DE Options dialog. By adding "-ac" as a parameter, the command will open the Synergy/DE Options dialog to the active configuration, rather than to "All Configurations." [tr#31029]
- The Synergy/DE Options dialog now defaults to the "All Configurations" configuration. [tr#31001]
- The Command line preview field on the Compile tab now refreshes correctly when the "Compile sources into a single object named" field is changed. [tr#31009]
- Under certain circumstances, a bug in Workbench caused the Synergy/DE Options dialog to render data that did not belong to the selected configuration. This has been fixed. [tr#31035]
- Tagging
- The default language settings for Workbench did not contain the "$" character in the string of valid identifier characters for Synergy Language. This has been fixed. [tr#31004]
- Under certain circumstances, Workbench could not provide tag information for the contents of an implicit main routine. This has been fixed. [tr#31034]
- User interface
- The Launch Composer dialog now has a slightly larger viewable area. The list box on the dialog offers a horizontal scrollbar for viewing of long filenames. [tr#23080]
- Visual editor
- SlickEdit had an issue in which a toolbar customization could freeze the editor. This has been fixed. [tr#30949]
- Workbench 9.3 introduced a regression of tracker #25333 where launching an external application from a custom build tool would show a build window. This has been fixed. [tr#30941]
- COM, Java, and .NET projects
- xfServer
- xfServerPlus
- Enumeration member names now have an initial cap (e.g., Green) instead of being all caps (e.g., GREEN) in the generated code. THIS CHANGE MAY BREAK YOUR CODE. [tr#31014]
- A cached read of the CMPDT record for a method no longer aborts the XFPL process unexpectedly causing a network connection lost error on the client. [tr#30974]
- Attribute support (dbl2xml) now correctly handles group arguments. They are processed as a single field of the type and size specified in either the parameter definition or with the xfParameter attribute. Note that if you wish to preserve fields in group arguments on the client side, you should use a structure defined in the Repository. [tr#30910]
- We fixed a boundary case where debug logging could cause a segmentation fault. [tr#31006]
- We fixed a data packet parsing error that occurred when passing a method with two in-only parameters that were both ArrayLists of structures, and the first ArrayList was not initialized but the second contained members. [tr#31045]
- xfNetLink .NET Edition
- Enumeration member names now have an initial cap (e.g., Green) instead of being all caps (e.g., GREEN) in the generated code. THIS CHANGE MAY BREAK YOUR CODE. [tr#31014]
- We fixed a problem that was causing the initial connection to be very slow when it was made by calling the connect() method with a host and port. [tr#30984]
- An integer parsing connection exception no longer occurs when a connection is made on a machine that only returns an IPv6 address and not an IPv4 address. [tr#30981]
- When using COM+ pooling, component settings from the dllhost.exe.config file are now used, if set. Previously, the default settings were being used. [tr#30952]
- Synergy Language [Expand All Synergy Language | Collapse All Synergy Language]
- Synergy/DE 9.1.5b [Expand All | Collapse All]
- Synergy Language [Expand All Synergy Language | Collapse All Synergy Language]
- Analysis engine
- A missing type on a property was causing the compiler to generate an incorrect INTCMPERR2 error. This has been fixed. [tr#25735]
- A function or subroutine without a name no longer causes a segmentation fault in the compiler or Workbench. [tr#30046]
- A missing expression on the right side of a += operation was causing a segmentation fault in the Compiler and Workbench. This has been fixed. [tr#30094]
- A misplaced ", REENTRANT" at the beginning of a get method declaration on a property was causing the compiler and Workbench to crash. This has been fixed. [tr#30142]
- Attributes on get/set methods within a property no longer generate a PROPPARM error as long as you include an ENDPARAMS statement before adding the first attribute on the property's get/set method. [tr#30155]
- If a class has conversions to both boxed and unboxed types, the compiler no longer selects the unboxed type conversion and generates a TYPMISMCH error. [tr#30180]
- (Windows) Previously, when .INCLUDEing from a remote repository accessed via an xfServer file specification, repository caching was disabled. xfServer-provided repository files are now treated as if they are permanently cached, and no changes are seen until the analysis engine (or Workbench) is restarted. [tr#30187]
- Compiler/Linker/Librarian
- (OpenVMS) In versions 9.1 through 9.1.5a, using an integer FOR loop on OpenVMS could cause an alignment fault. On Itanium systems, alignment faults are very expensive and can cause significant performance degradation. This has been fixed. You must recompile your code to take advantage of this fix. [tr#30239]
- Warnings on method call arguments no longer appear twice. [tr#30205]
- If a line that had an error was immediately preceded by a compiler directive and there was at least one other preceding error, the compiler reported the error against the first line of the source code. This has been fixed. [tr#30185]
- A cast of an object defined as NEW caused an unexpected NFND error. This has been fixed. [tr#30168]
- When an external function didn't match a prototype (thus causing a PROTOMISMC error) because one was declared as i while the other was declared as a ^VAL return type, the -W4 extra information displayed both of them as having an "i" return type. Now the ^VAL is displayed with a return type of "v", so it's evident they are different. [tr#30146]
- Properties are now re-entrant. [tr#30137]
- (Windows, OpenVMS) The compiler has been modified to detect when no memory is available to it. [tr#30138]
- In versions 9.1.1 through 9.1.5a, .DEFINEs lasted across sources when those sources were compiled in one compilation unit. The scope of a .DEFINE now ends with each source. This ensures that compiling routines in a multi-module compilation unit operates the same as compiling the files individually. If you need .DEFINEs to last across source files, .INCLUDE the second source file in the first source file instead of using a multi-file compilation unit. THIS MODIFICATION MAY BREAK YOUR CODE. [tr#30068]
- An invalid VALIDXP error no longer occurs when doing an alpha box cast on ^M. [tr#30004]
- A class with a property that is also of that class type and that is missing a get method was not generating an expected NOPRPMTH error at compile time, which caused a later runtime segmentation fault. This has been fixed. [tr#30003]
- A static modifier is no longer allowed on an enumeration declaration. [tr#25736]
- The compiler was fixed to correctly output the line control information for local DATA statements so that the debugger will step through the code and display the proper source lines. [tr#25530]
- Previously it was possible to get corrupted local data using a call outside of a scope to another scope with local data. This has been fixed. [tr#25714]
- A segmentation fault no longer occurs When compiling source code that contains an INIT of a field of a local structure. [tr#25718]
- Var += 0.1 was incorrectly optimized to increment by 1 instead of 0.1. This has been fixed to give the correct result. [tr#25719]
- A segmentation fault no longer occurs when accessing a static structfield that itself contains a reference back to the class that has the static structfield. [tr#25729]
- The compiler now checks to prevent type demotion on variables passed to properties. For example, you can no longer pass a decimal variable to an integer property. [tr#25738]
- The compiler has been fixed to properly process the .IDENT string. [tr#30000]
- Previously, if you attempted to assign to a value parameter within a set method, the compiler allowed it, but it caused asegmentation fault in the runtime. The compiler now generates a READONLY error to prevent this. [tr#30008]
- If the type of an initial value specified on a DATA statement doesn't match the type of the field to which the initial value applies, an IVBAD error is now generated. [tr#30018]
- The NUMSEGS warning is no longer incorrectly reported when compiling in debug mode and importing prototypes for more than 255 classes. [tr#30023]
- The dbl8 compiler was fixed to allow the .NODEBUG compiler directive before a .SUBROUTINE or .FUNCTION directive instead of only within the subroutine or function. The dbl compiler was fixed to process the .NODEBUG compiler directive. [tr#30031]
- When compiling with the -qrelaxed:interop option, the W_NUMREQ warning is now disabled. [tr#30092]
- (Windows, UNIX) We added a new option to the linker, -wd or -w 0, to disable warning error messages. [tr#30116]
- Debugger
- We added two new debugger commands, SET UNINITIALIZED ON|OFF|BREAK and SHOW UNINITIALIZED, as "experimental features." See tr#25730 in the "Runtime" section below for more information.[tr#25730]
- The debugger has been enhanced to allow the following:
- Stack record variables to be accessed by @index - EXAMINE of object fields by @objidx.@index (but EXAMINE of @objidx is not allowed) - EXAMINE of ^m(@strfldidx,@hndidx)
[tr#25617] - The debugger no longer generates a segmentation fault when it has a problem finding the source line. [tr#30022]
- The debugger no longer allows nonaccessible memory to beaccessed by the EXAMINE command. [tr#30089]
- Installation
- (Windows Vista 64-bit) If you have Synergy/DE version 9.1.1 installed on a 64-bit machine, you must UNINSTALL before installing 9.1.5b. DO NOT UPGRADE. If you upgrade, you will lose the Visual C++ runtime libraries and will have to install them manually. This problem is caused by a bug in the Microsoft Installer service. [tr#24685]
- (Windows) If you are currently running a shared installation
and your clients are version 8.1 or higher, YOU MUST UPGRADE
OR UNINSTALL/REINSTALL THE CLIENTS for version 9.1.5b after
upgrading (or uninstalling/reinstalling) the shared machine.*
This will install vcredist, which contains the Visual C++
runtime libraries required by 9.1.5b. Optionally,
you can download vcredist from the Microsoft website and
install it on each client machine (see Microsoft KB article
259403 for details and a link to the download). [tr#30027]
*If your clients are version 7.5.1, you must uninstall them BEFORE upgrading the shared machine to 9.1.5b. If you do not, you will be required to specify the location of the original (v7.5.1) sdeclient.msi file that was used for the original installation. This file can be found on the version 7.5.1 CD. - If you are currently running a shared installation of version 7.5 *with* Connectivity Series, and you choose to download and install vcredist instead of upgrading the client machines, you must also manually set the VORTEX_HOME environment variable (added in version 8.1) on each client. Note that it may be easier to just upgrade the clients to 9.1.5b than to make these changes manually.
- (Linux) The install_lm and config_lm scripts now display correctly. [tr#25723]
- Runtime
- We added uninitialized memory checking to the runtime as an
"experimental feature." ("Experimental features" are features
that are under evaluation. They are for early adopters to use
and provide feedback on. They will be supported, but they may
be modified or even removed in subsequent releases.) This
uninitialized memory checking occurs when running in debug mode
and will help detect where your application is accessing
uninitialized memory before writing to it (in assignment
statements and "IF" tests).
This functionality is controlled via the new debugger command SET UNINITIALIZED ON|OFF|BREAK. ON turns on debugger messages when uninitialized memory is accessed. BREAK causes the debugger to break on the next statement after uninitialized memory is accessed. OFF turns the debugger messages and breaking off. We also added the debugger command SHOW UNINITIALIZED to show the current state of the UNINITIALIZED debugger settings. [tr#25730] - The Synergy symbol table API now allows associated data to be longer than 100 bytes. [tr#30095]
- (OpenVMS) When using an implied-decimal or decimal array that was not subscripted, certain operations on that value and another field of the other type (for example, a STORE operation from a decimal array to an implied-decimal array) resulted in incorrect data. The problem was exacerbated in 9.1 through 9.1.5a, because the compiler removed the index when all of the index values were literal ones. (For example, it optimized "a[1] = b[1]" to "a = b".) We have fixed the descriptor type comparison so this problem no longer occurs. [tr#30259]
- (OpenVMS) In versions 9.1 through 9.1.5a, some integer FOR loops could cause an alignment fault due to misalignment of the dynamic control space in the runtime. This has been fixed. [tr#30239]
- (Windows) In previous versions, calling %TTSTS after an ACCEPT statement would not account for any additional keystrokes that had preceded the ACCEPT. This has been fixed. [tr#25337]
- The runtime comparison of boxed types (via op_Equality, the boxed type comparison operator) now returns a FALSE condition when comparing a boxed alpha type with a boxed numeric type, instead of generating an "Operands must be both alpha or both numeric" error ($ERR_SAMOP). The boxed type comparison operator is used in (obj.eq.obj, obj.Equals(obj), Object.Equals(obj,obj), as well as the IndexOf and LastIndexOf methods in Array and ArrayList classes. [tr#25722]
- The Object.ReferenceEquals method no longer returns TRUE if objA and objB are different object instances and both are boxed types containing equal values. Object.ReferenceEquals only returns TRUE if objA is the same instance as objB or if both are ^NULL. [tr#25725]
- (Windows, UNIX) When copying to a remote system (via xfServer) with different line terminators (CR/LF, LF), the COPY routine now correctly copies files when using the unspecified default mode (binary) following a previous call to COPY where text mode was explicitly specified. [tr#30009]
- (Windows, UNIX) In 9.1.5 and 9.1.5a, the RFA returned after a WRITES to a sequential or relative file that was opened for output was sometimes incorrect. This has been fixed. [tr#30045]
- (Windows, UNIX) Using the rounding operator on an i8 variable or expression that was stored directly into an i type variable caused data corruption when compiled under version 9. This has been fixed. [tr#30085]
- (UNIX) In version 9.1.5a, the DETACH statement incorrectly closed all open files. This has been fixed. [tr#30090]
- The error "DBR-F-RUNERR, Internal runtime failure: Undefined virtual method" no longer occurs when calling a built-in virtual method (like SynException.Message). [tr#30096]
- When internal maximum error message buffers are exceeded, the message that indicates the replacement text is too big no longer removes the remaining message buffer text that can be displayed. [tr#30177]
- We added uninitialized memory checking to the runtime as an
"experimental feature." ("Experimental features" are features
that are under evaluation. They are for early adopters to use
and provide feedback on. They will be supported, but they may
be modified or even removed in subsequent releases.) This
uninitialized memory checking occurs when running in debug mode
and will help detect where your application is accessing
uninitialized memory before writing to it (in assignment
statements and "IF" tests).
- Synergy ActiveX API
- In certain cases a segmentation fault occurred while shutting down the runtime after an ActiveX control had been loaded, if the shutdown occurred while processing the ActiveX control (such as closing the app from the ActiveX X box). This has been fixed. [tr#30117]
- Synergy Configuration Program (synconfig)
- We have added two new options to the Connectivity Series tab for Oracle 11 and SQL Server (Native Client). [tr#25684]
- When attempting to start an xfServer or xfServerPlus service from the Synergy Configuration Program, an appropriate error message is now displayed if the service fails to start, and the "Started" status now remains set to "No" as a result of the failure. When attempting to start an xfServer or xfServerPlus service from the command line using "net start", a more appropriate error number (other than always 1067) is displayed when the result is a failed system call during service startup. [tr#23197]
- In previous v9 versions of the Synergy Configuration Program, clicking Help would sometimes pop up a message "The window name 'second' passed to HH_GET_WIN_TYPE has not been specified." This has been fixed. [tr#30057]
- Synergy DBMS
- (Linux) Dbr.cis (C-ISAM) now adds trailing and leading compression automatically for keys defined over 14 bytes long. [tr#25737]
- (UNIX) An $ERR_NOTDBR error (" is not a DBR file") no longer occurs when attempting to STOP to another program after ISAMC is used on a file that is currently open on another channel when INTRAFILELOCKS=0 or DBLOPT=33 is set. [tr#30224]
- Synergy HTTP document transport API
- Certain servers give a 404 Not Found error when sending a soap request to a web service, because the port is part of the default host header. If the port causes trouble with the server you're using, you can now override the default host header by adding your own host header via %HTTP_CLIENT_GET or %HTTP_CLIENT_POST. [tr#30064]
- Synergy .NET assembly API
- We added a new option to the gennet utility as an
"experimental feature." ("Experimental features" are features
that are under evaluation. They are for early adopters to use
and provide feedback on. They will be supported, but they may
be modified or even removed in subsequent releases.) The new
-s option handles subsets of a DLL and allows you to specify
only the assemblies you want to build wrappers for, instead of
creating a large number of unused classes.
To use the -s option, you must first create an XML file that specifies the assemblies for which wrappers need to be built. The new gennet syntax isgennet -output -log [...] [-nodep] [-impdir ] [-s ]
[tr#30119] - Properties created by gennet no longer return malformed objects instead of ^NULL. [tr#25721]
- The gennet -output command line argument now works correctly instead of causing an error. [tr#30010]
- In certain cases, when a delegate called a routine that generated and trapped errors, it caused a corruption resulting in random errors on return from the delegate. This has been fixed. [tr#30106]
- Tabbing inside of a Windows Presentation Foundation (WPF) control now works correctly. [tr#30113]
- Types that are duplicated by name (but don't have the same hash) no longer cause duplicate types to be generated. [tr#30160]
- To correspond with .NET Framework behavior, it is now possible to convert from a DotNetDelegate to a DotNetObject. [tr#30166]
- To correspond with .NET Framework behavior, it is now possible to convert from a DotNetObject to a DotNetAssembly. [tr#30167]
- We added a new option to the gennet utility as an
"experimental feature." ("Experimental features" are features
that are under evaluation. They are for early adopters to use
and provide feedback on. They will be supported, but they may
be modified or even removed in subsequent releases.) The new
-s option handles subsets of a DLL and allows you to specify
only the assemblies you want to build wrappers for, instead of
creating a large number of unused classes.
- Utilities
- (Linux) The chklock utility now generates output similar to that generated on other UNIX machines when operating on non-ISAM files. Only the first byte offset of a record lock is displayed instead of the offset of each byte that is locked. [tr#30186]
- A mix of single and double quotes on initial values for CONST fields in a class caused bad prototypes to be generated in dblproto, which later caused import errors. This has been fixed to properly generate the prototype. [tr#30114]
- Analysis engine
- License Manager
- UI Toolkit [Expand All UI Toolkit | Collapse All UI Toolkit]
- List Processing
- (Windows) We upgraded to the following versions of the FarPoint Spread ActiveX control, which is the control we use for ActiveX Toolkit lists:
- We upgraded to FarPoint Spread 8.0.0.6 for the version of the ActiveX Toolkit list control that runs on 64-bit Windows operating systems and that runs on 32-bit Windows operating systems when the DTK_NEWGRID environment variable is set.
- We upgraded to FarPoint Spread 7.0.0.51 for the default 32-bit version of the ActiveX Toolkit list control (i.e., the version used when DTK_NEWGRID is not set).[tr#30158, 30111]
- (Windows) We added OK and Cancel buttons to the default Find window for L_SELECT, and we set OK as the default button. This solves a problem with previous versions where it was impossible for the user to exit the default Find window normally when the D_RETURNBTN state was enabled and the list was in a composite window that had buttons. Now pressing ENTER activates the OK button in this situation. Note that THIS MODIFICATION MAY CHANGE BEHAVIOR. See related entry in "Important Notes and Warnings" above. [tr#25709]
- (Windows) In previous versions of the ActiveX list control, a "window number N is invalid" error would sometimes randomly occur during L_CREATE processing. This has been corrected. [tr#25740]
- (Windows) In previous versions of the ActiveX list control, when terminating input (using L_INPUT or L_INPFLD) to a cell by navigating up or down to another item, the contents that were just entered would sometimes be duplicated into the cell that you navigated to. This has been corrected. [tr#30063]
- (Windows) In previous versions of the ActiveX list control, if a field was updated by a call to L_DATA with D_LWRITE, and a view length was specified for the field, it would not be updated. This has been corrected. [tr#30107]
- (Windows) In previous versions of the 32-bit ActiveX list control, if the user pressed CTRL+END before all items had been loaded, and the number of actual items was less than the original or default estimate for the list, the entire last row would be highlighted. We corrected this to highlight the last column in the last row instead. [tr#30130]
- (Windows) In previous versions of the ActiveX list control, calling L_INPFLD could result in strange behavior or error messages when the field was redisplayed. This has been corrected. [tr#30194]
- .NET Processing
- (Windows) In previous 9.1 versions, a .NET form embedded in a Toolkit window (with %DOTNET_TKWIN) would sometimes fail to establish focus on its first control when it was initially activated. This has been corrected. [tr#25720]
- Utility Routines
- (Windows) In previous versions, palette changes would not always be saved to a scheme if you used U_EDITREND, U_MODREND, or the "Renditions" menu entries in Synctl or Proto to save the scheme. This has been corrected. [tr#25710]
- List Processing
- Connectivity Series [Expand All Connectivity Series | Collapse All Connectivity Series]
- SQL OpenNet
- In previous versions, if an error occurred as VTXNETD or VTXNET2 was starting and attaching to the listening port, the program would enter a loop, logging each failed attempt to the log file until the disk was filled. This has been corrected. [tr#30079]
- (OpenVMS) We updated the comments in STARTNET.COM to include troubleshooting information for failed connections. [tr#30193]
- SQL Connection
- (Windows) We added a database driver (VTX0_11) for Oracle 11. [tr#30153]
- (Windows) We updated VTX12_SQLNATIVE to support SQL Server 2008 connections using the second version of the Microsoft SQL Native Client API (known as SQL Native Client 10, SQLNCLI10, or SNAC10). (Support for the first version, SNAC9, was added in Synergy/DE 9.1.3.) [tr#30048]
- (Windows) We added support to VTX12_SQLNATIVE for the four new SQL Server 2008 and SQL Native Client 10 data types: DATE, TIME, DATETIME2, and DATETIMEOFFSET. See related entry in "Documentation Corrections and Additions" below. [tr#30028]
- (Windows, UNIX) In versions 9.1.3 through 9.1.5a, a small memory leak would occur on an %SSC_EXECUTE call that reused a cursor if the host variable was an array and the final %SSC_EXECUTE used a row count of 1. This has been corrected. [tr#25715]
- SQL Server warnings are now correctly appended to the log created by SQL Connection logging (SSQLLOG=1) on a call to %SSC_CONNECT. [tr#25728]
- In previous versions, a connect/disconnect sequence for Oracle 10 or higher would sometimes cause the client Synergy program to crash with a segmentation fault. This has been corrected. [tr#30110]
- (OpenVMS) In 9.1.5 and 9.1.5a, using a System.String variable with a routine (such as %SSC_MOVE) that should have supported String variables, caused a segmentation fault. This has been corrected. [tr#30136]
- (OpenVMS) In versions 9.1.3 through 9.1.5a, using %SSQL_LARGECOL would cause a linker error. This has been corrected. [tr#30154]
- xfODBC
- We added a new option (4) to SODBC_NONULL. If you set SODBC_NONULL=4, dbcreate sets the first key (except segments that are date fields) to "no nulls allowed." All other fields are set to "nulls allowed." See related entry in "Documentation Corrections and Additions." [tr#30159]
- xfODBC now supports multiple functions within a CASE
statement. For example, the following CASE statement, which uses
the CONVERT function twice, now works:
CASE WHEN ( CONVERT( O.OR_QTY, SQL_INTEGER)) < 10 THEN '- order 20 more!' WHEN ( CONVERT( O.OR_QTY, SQL_INTEGER)) < 20 THEN '- order 10 more!' ELSE ' ' END
[tr#25716] - CAST now supports aggregate functions. For example, the following now works: CAST(SUM(or_qty) AS integer). [tr#30157]
- xfODBC no longer supports SQL_REAL for the CAST and CONVERT functions. Use SQL_FLOAT instead.
- In previous versions, xfODBC didn't always generate an error for an invalid use of GROUP BY. This has been corrected. [tr#25623]
- In previous versions, a select statement would fail to return data and would cause a ZEXMOVE error if the statement queried a view with a date column. This has been corrected. Note that this fix applies only to views re-created with this (or a later) version of Connectivity Series. [tr#25674]
- In previous versions, using TOP in conjunction with an inline view would cause a "ZPOMAIN unknown node (type: 99)" error. This has been corrected. [tr#25717]
- We corrected DROP TABLE so that it now deletes relations that use the dropped table. [tr#30012]
- DROP TABLE no longer deletes the physical file for the table. [tr#30012]
- In previous versions, the TAGVALUES column of GENESIS_TABLES and the FORMAT column of GENESIS_COLUMNS were incorrectly set to SQL_NO_NULLS. This has been corrected. [tr#30026]
- (Windows) In previous versions, statements that sent the question mark (?) parameter marker to the database would sometimes cause SQL_NEED_DATA errors. This has been corrected. [tr#30030]
- SQL OpenNet
- Data Provider for .NET
- Repository
- The "Load fields from Include" feature now sets the size of Boolean fields to 1 rather than 4. (In version 9.1.5a, the compiler was changed to set the size of Boolean fields to 1 rather than 4.) [tr#30191]
- Schemas of repositories that contain multiple levels of structure references are now generated in the proper reference order. Previously, they were not always generated properly, which caused reloading of the schema to fail. [tr#30040]
- Previously, if a repository contained four structures (a, b, c, d), and structure b contained a group that referenceed structure d, so that it output them in the order a, d, b, c, and structure d had a group that referenced structure c, the schema could not be loaded. Now, it can. [tr#24921]
- Professional Series Workbench [Expand All Professional Series Workbench | Collapse All Professional Series Workbench]
- Bug Fixes
- In Component projects, certain conditions could cause Workbench to store off a conflicting interface name and never clear it for the remainder of the running session. This conflicting name would cause an incorrect error when trying to change the alternate interface name for SMC interfaces in the Component Information Dialog. This has been fixed. [tr#25669]
- When initiating a tag operation for the first time after an upgrade, Workbench should now properly tag new distributed class built-in files. [tr#30055]
- Trying to find the definition of a local data field previously resulted in the cursor moving to the beginning of the file. The cursor now correctly moves to the line on which the symbol was defined. [tr#30165]
- Previously, when .INCLUDEing from a remote repository, repository caching was disabled, which made Workbench very slow. Remote repository files are now treated as if they are permanently cached, and no file changes are seen until Workbench is restarted. [tr#30187]
- Bug Fixes
- xfServer
- xfServerPlus [Expand All xfServerPlus | Collapse All xfServerPlus]
- xfServerPlus
- (Windows) When attempting to start an xfServerPlus service from the command line using "net start", a more specific error number (other than always 1067) will now be displayed when the result is a failed system call during service startup. [tr#23197]
- (Windows) Stopping and restarting an xfServerPlus service, while one or more clients is still connected, no longer generates a bind failure on the attempt to restart the service. [tr#25707]
- (OpenVMS) You can now use a rooted logical to specify the location of the SMC files when running genxml. Previously, doing so would cause genxml to issue an error stating that it could not open the files, even though they were in the specified location. [tr#30216]
- (OpenVMS) We have fixed a problem that was causing logicals to not be translated correctly when running genxml if the logicals were not terminated by a colon or bracket. [tr#30235]
- Method Definition Utility
- (OpenVMS) We have fixed a problem that was causing logicals to not be translated correctly when they were not terminated by a colon or bracket. [tr#30233]
- xfServerPlus
- xfNetLink .NET Edition
- A field in a structure that is marked as a binary data type in the repository will now be converted to a byte array in the generated C# code. Formerly, it was converted to a string. To continue to use the old behavior, run gencs with the -nb option. THIS CHANGE MAY BREAK YOUR CODE if you regenerate classes for an existing application. [tr#30075]
- When client-side logging is turned on and a method includes an "in-only" parameter of type string with a null value, we now write it to the log as " = null". Previously, this scenario was causing a logging exception to be thrown. [tr#30179]
- When a method contains multiple ArrayList out-only parameters, and the Synergy routine declares the ArrayLists but does not add any elements to them, they are now set to null. Previously, such an empty ArrayList parameter was causing the error "Input string was not in the correct format". [tr#30073]
- Synergy Language [Expand All Synergy Language | Collapse All Synergy Language]
- Synergy/DE 9.1.5a [Expand All | Collapse All]
- Synergy Language [Expand All Synergy Language | Collapse All Synergy Language]
- Analysis engine
- We now support bitwise operations within an enumeration. [tr#25041]
- A segmentation fault no longer occurs when a function FRETURNs a new class that has not been defined. [tr#25597]
- When processing a ^PASSED call without an argument, an "Invalid number of arguments" error (E_ARGNUM) is now generated instead of a segmentation fault. [tr#25592]
- BEGINCASE followed by a colon within a CASE statement no longer causes a segmentation violation. [tr#25527]
- An invalid syntax within the body of the USING statement caused the parser to crash. This has been fixed. [tr#25503]
- An open parenthesis followed by end of line in the body of a USING statement no longer causes a segmentation fault. [tr#25502]
- Typing .END followed by the MAIN keyword no longer causes a segmentation fault. [tr#25498]
- (Windows, UNIX) The compiler now correctly reports an error (instead of crashing) if ^XTRNL or %XTRNL is used in an initial value expression in the data division. [tr#25477]
- When compiling multiple files, the presence of an IMPORT statement at the beginning of subsequent files caused an "Import must precede all declarations" error (IMPREC). This has been fixed, and this error no longer exists. Imports are now allowed to occur between namespace declarations, not just at the top of the compilation unit. [tr#25057]
- Calling a constructor using "NEW" on a line by itself no longer generates an error. [tr#24908]
- Compiler/Linker/Librarian
- We removed a -qnet restriction that prevented parameter groups from being used in .NET. Parameter groups are now supported. [tr#25547]
- We added new -qnet restrictions for non-Synergy types
(i.e., object handles and .NET value types). The following are
not allowed:
- A non-Synergy type in a group within a structure - A non-Synergy type in a group where dimensioned group access is done - A non-Synergy type in a parameter group - An object handle in a structure that is used in a real array - A non-Synergy type in a structure used in a ^M routine
[tr#25543] - We separated .NET warnings for APIs into their own warning, "Routine %s not supported in .NET" (NETAPI), so you can selectively disable it if you don't want to display .NET support warnings for API calls when compiling with the -qnet option. [tr#25534]
- We changed the size of the Boolean type from 4 to 1. Boolean is now treated as its own separate, non-integer type. THIS MODIFICATION MAY BREAK YOUR CODE. [tr#25524]
- A new level 4 warning, "Routine hides data reference operation %s" (HIDEHAT), is now generated when a routine declaration hides a data reference operation. [tr#25520]
- We modified the compiler output of debug information for group arguments to allow the expanded fields to be displayed when the group argument name is examined in the debugger. [tr#25507]
- Method overloads that only differ by optional parameters now report a new error: "Class %s already defines a method %s that differs only by optional parameters" (DUPOPTS). This error is also reported if more than one method overload per ID has trailing optional parameters (including parameters defined explicitly and methods marked with VARARGS). [tr#25408]
- An MRETURN or FRETURN statement is no longer required in a typed routine that includes a THROW statement. [tr#25164]
- When compiling with the compiler distributed as dbl8, a single file containing multiple routines whose first 26 characters (27 on OpenVMS) are identical and that contain static records, the compiler now generates a unique global name for the data area. (This is not, and never has been, a problem on HP OpenVMS Alpha in dbl8.) [tr#25645]
- When cascaded namespaces were used (for example, Synergex.Synergyde.Collections), only the top-level namespace was freed in a multi-module compile, which later caused a segmentation fault. This has been fixed. [tr#25700]
- Specifying a range on a class structure within an ^M call when the literal bounds are greater than the size of the structure no longer generates a "Bad range value" error (BADRNG). [tr#25695]
- For a timed license, the compiler does not display a warning message specifying the number of days left to register until the last seven days of the evaluation period. (Previously it displayed the message throughout the entire evaluation period.) [tr#25673]
- A "Not a compile-time expression" error (NOTCEXP) no longer occurs if you use a structure reference in ^SIZE that is then used in the definition of another field. [tr#25667]
- The compiler no longer generates inappropriate errors when multiple assignments between string variables are performed (for example, string = string = string). [tr#25662]
- A structure that is both local and prototyped no longer causes a "Type mismatch for parameter %s in routine %s" error (TYPPARM) when used as a parameter to a prototyped routine. [tr#25635]
- The compiler now correctly reports a "%s required to access non-static member %s" error (NOTSTAT) when an instance method of an inner class tries to access an instance member of its outer class. [tr#25611]
- The compiler no longer causes a segmentation fault if an I/O statement is the only statement in a USING label. [tr#25610]
- If the number of macro arguments is incorrect, the compiler no longer reports the "Wrong argument count in define reference" error (WRODEFARG) on the wrong line. [tr#25605]
- The compiler no longer reports errors in imported namespaces on the wrong line. [tr#25603]
- If neither OPTIONAL nor REQUIRED is specified for an object, boxed object, or dynamic array parameter, the parameter now defaults to REQUIRED instead of generating a "REQUIRED modifier must be used on object parameters" error (OPTOBJ). This error is still generated if you explicitly specify OPTIONAL for one of those parameters. [tr#25563]
- If the declaration of an exception class comes after it is used in a CATCH variable, the compiler no longer generates an "Invalid exception type" error (INVEXC). [tr#25557]
- Using the [] syntax on a class field no longer causes an "Invalid usage of STRUCTURE field" error (SFLDINV). [tr#25553]
- Looping initializer calls no longer cause the compiler to hang. [tr#25535]
- A UDIMEN opcode (instead of a CDIMEN opcode) is now correctly emitted when a structure in a ^M routine that has a range, index, or dimension is used with -qstrict. [tr#25526]
- A class, structure, or global routine declaration that is dependent on a type declaration that comes after it no longer causes a "%s %s does not match prototype" error (PROTOMISMC). [tr#25518]
- Specifying a range on a class structure no longer generates an "Invalid subscript specified" error (SUBSCR) at runtime. [tr#25514]
- A "%s not found" error (NFND) is now generated as expected when a dynamic array parameter is accessed without a bracketed dimension. Previously, failure to provide the bracketed dimension caused a segmentation fault at runtime. [tr#25512]
- Using ^A for an enumeration name now correctly generates an "Invalid use of type %s" error (INVTYP). [tr#25499]
- Using a binary operation, such as .EQ., with an alpha variable on one side and a numeric literal on the other now generates an "Operands must be both alpha or both numeric (%s)" error (SAMXP) as expected. [tr#25493]
- When debugging a program that contains a USING statement (where at least one label contains an expression or complex array), the correct line number and line after the ENDUSING are now displayed. [tr#25491]
- A structure parameter now initializes correctly When the INIT statement is used. [tr#25490]
- The compiler now correctly outputs debug information for group arguments that contain pseudo-arrays. [tr#25489]
- A syntax error in the WRITES statement no longer generates an incomplete "%s qualifier is incompatible with %s" error (INVQUAL). [tr#25487]
- An "Internal runtime failure: Undefined destructor" error (RUNERR) no longer occurs when attempting to call a static class method. You must recompile and relink your code to take advantage of this fix. [tr#25486]
- When an array argument being referenced with [1] is encapsulated by %DESCR, the compiler no longer strips off the [1]. [tr#25478]
- A missing ENDSTRUCTURE statement for a structure declared globally now generates a level 3 compiler warning, "ENDSTRUCTURE on global structure expected" (NOSPECL). [tr#25472]
- When calling a function as a subroutine, an error was not being generated if an incorrect number of arguments was passed. This has been fixed. [tr#25471]
- Instantiating an object using "new @" without parentheses no longer causes a runtime fault. [tr#25446]
- Attempting to CLEAR an enumeration or set it to a value caused a segmentation fault at runtime. Now the compiler reports a "Cannot write to this entity" error (NOWRITE). [tr#25432]
- Assigning an enumeration type within a %STRING call generated a "Type mismatch between %s and %s" error (TYPMISMCH). This has been fixed. [tr#25429]
- The compiler now correctly generates references to ENUM fields so that routines will have the fields in their debug tables. [tr#25427]
- The compiler previously allowed non-object loop variables in FOREACH statements for collections other than arrays, such as array lists. These variables now cause a new error: "Incompatible loop variable type %s in FOREACH" (LVARTYP). [tr#25425]
- Previously, when a class had two methods with the same name and one was defined as VARARGS while the other had optional trailing parameters, the VARARGS method could get picked over the method with the closer match. This has been fixed. [tr#25407]
- The ADDHANDLER statement now correctly supports static methods. [tr#25402]
- A CASE statement followed by a .INCLUDE of a file containing a blank line or comment was generating an "Invalid statement at or near {%s}" error (INVSTMT). This has been fixed. [tr#25396]
- The compiler correctly declares groups defined as implied-decimal types without losing the precision. [tr#25393]
- The compiler no longer allows ^ARGDIM to be used on object parameters. If this can be determined at compile time, an "^ARGDIM not allowed on objects; use method to get length" error (INVARGOBJ) is generated. [tr#25392]
- We fixed compilation errors in myooprogram.dbl in the dbl\examples directory. [tr#25385]
- Previously the compiler allowed but ignored a record overlay (,X) on the first record in a class. Now the compiler reports this as an "Overlay not allowed" error (OLYBD). [tr#25384]
- The compiler now reports a "REQUIRED modifier must be used on object parameters" error (OPTOBJ) if you specify the OPTIONAL modifier on parameters declared as a boxed type. (Parameters declared as a boxed type cannot be optional, because they are really object handles.) [tr#25383]
- A duplicate nested local namespace name no longer causes a "%s not found" error (NFND) on a non-fully qualified member. [tr#25373]
- Winprint.def can now be .INCLUDEd without a preceding .MAIN, .SUBROUTINE, or .FUNCTION. [tr#25368]
- A DO FOREVER statement enclosed within a FOR statement without a DO clause no longer causes an "Invalid statement at or near {%s}" error (INVSTMT) on the DO FOREVER. [tr#25357]
- If compiling in debug mode, the compiler now signals a warning when the number of include files exceeds 256 or the source line offset exceeds 16777215 bytes on any one module. [tr#25330]
- The compiler no longer allows access to private and protected fields in structures. [tr#25068]
- When a CLSCRC error is issued by the linker ("Class CRC mismatch: class %s in module %s"), the class name and the routine name are no longer mangled. [tr#25677]
- The linker will now correctly determine the debug directory size. Previously, an error 601 could occur when linking a module compiled with the -d option. [tr#25660]
- We improved linker performance when linking programs with ELBs. [tr#25495]
- The linker now generates a warning when a GLOBAL DATA SECTION with ",INIT" is smaller than a referencing GLOBAL DATA SECTION by the same name. [tr#25488]
- Debugger
- Using EXAMINE on a field in a structfield that is a member of a class has been fixed. [tr#25702]
- If an enclosing class had method overloads, garbage was displayed when examining a nested type (i.e., a structure). This has been fixed. In addition, an ambiguous symbol is no longer displayed when examining a structfield when the structure is declared locally and then imported and referenced. [tr#25689]
- The debugger now displays the message "Argument field is unaccessible" when the data being requested is outside the scope of the passed argument's data. This only applies to the display of fields within a group argument. [tr#25511]
- When SET TRAP is on, the SHOW ERROR command now correctly displays the error that has been trapped. [tr#25492]
- A SHOW DYNMEM command no longer causes a segmentation fault if the pen_specs structure has been loaded by the Synergy Windows printing API. [tr#25620]
- Installation
- (Windows) We added 32- and 64-bit UI Toolkit spread controls to the distribution. The following new files are added to the dbl\bin directory upon installation: tkgrid8.ocx, tkgrid8.pdb, and spr32d80.dll or spr64d80.dll (respectively). Tkgrid8.ocx is automatically registered. [tr#25589, tr#25555]
- (Windows) We replaced the gdiplus.dll file in the distribution to include a critical security fix from Microsoft. See http://www.microsoft.com/technet/security/Bulletin/MS08-052.mspx for more information. [tr#25552]
- (Windows) We fixed an issue in which an upgrade of Synergy/DE Client removed Caspol security settings. [tr#25456]
- (Windows) We fixed an issue in which Synergy/DE could not add features on Vista and Server 2008 platforms. [tr#25428]
- Runtime
- We fixed processing of the OPEN statement so that a segmentation violation no longer occurs when the open mode is specified as a string (literal or System.String). [tr#25688]
- A FOREACH iteration over a gennet-generated enumeration previously gave inconsistent results, sometimes returning just the first row and then failing, and other times generating an "Invalid class handle" error (INVCLSHND). This has been fixed. [tr#25679]
- (Windows, UNIX) When applying 9.1.5a to a previously installed version, "Bad ELB detected: %s" errors ($ERR_BADELB) are no longer displayed unless the program or any of the prior modules in the call stack at the time the ELB is loaded have been recompiled with 9.1.5 or higher. Running the program with dbr -d still shows the errors in the debug window. [tr#25647]
- (OpenVMS) %RDLEN, %RSIZE, and %RECNUM now return the correct value following a READ or READS that results in a trapped $ERR_TOOBIG error. %RDLEN and %RSIZE now return the actual length of the record, not the length of the read buffer. %RECNUM now returns the record number of the record just read, not the number of the previous record read. [tr#25639]
- In versions 9.1 through 9.1.5, running a program that was compiled in debug mode and whose source code contained a blank or comment line above an .INCLUDE from a repository could result in a segmentation fault. This has been fixed. [tr#25560]
- (Windows) In rare cases (most commonly when an application shut down while an ActiveX or .NET control was being processed), the runtime got a segmentation fault on shutdown. This has been fixed. [tr#25556]
- (Windows) A segmentation fault no longer occurs if the LPNUM option is used in LPQUE. [tr#25544]
- When an exception was thrown while a call was in progress either within a TRY block or within a block with a DATA statement that declares an object, a "%s cannot have a return type" error (NORETURN) was incorrectly generated. This has been fixed. [tr#25540]
- When stepping over a trapped error with the SET STEP OVER debugger command set, the runtime now correctly breaks back into the debugger. This problem was introduced in version 9. [tr#25525]
- (UNIX) The FORK subroutine and the %HTTP_SERVER_RECEIVE function with the optional argument no longer cause random I/O failures ($ERR_RTNNF and $ERR_IOFAIL ELOAD errors). As a result of this fix, both routines now close all open files in the forked child process. Therefore, files needed by the child must be reopened. We made this change because UNIX file descriptors are shared between child and parent processes, and if one of the processes does a READ or some other operation that changes the file position, it could cause unexpected results for the other processes. THIS MODIFICATION MAY BREAK YOUR CODE. [tr#25517]
- (OpenVMS) When re-entering a routine that contains objects, the runtime now prevents allocation of memory that was previously allocated. [tr#25455]
- A segmentation violation no longer occurs on the first iteration of a FOREACH loop when the first element of the array contains a ^NULL handle. [tr#25415]
- In certain cases, gennet-generated string indexers failed with a .NET exception (System.ApplicationException). This has been fixed. [tr#25400]
- Calling ^ARGDIM on an object parameter (including dynamic arrays) now correctly generates an error instead of returning 1. [tr#25397]
- Synergy ActiveX API
- In previous versions of the ActiveX API on 64-bit systems, passing an integer value to a property or method could result in a random value being passed instead. This has been fixed. [tr#25533]
- Synergy Configuration Program (synconfig)
- In previous versions of synconfig on Windows Server 2008 or Vista with Windows Classic theme, if a secondary dialog was displayed and the user pressed F1 for help and then closed the Help window, focus did not return correctly to the secondary dialog. This has been fixed. [tr#24020]
- Synergy DBMS
- (Windows, UNIX) We temporarily added the READ_CACHE
environment variable to enable experimental support for read
caching for files opened in I, I:S, and I:R mode in conjunction
with the OPTIONS:"/sequential" qualifier. This behavior will
become the default with 9.3, but you can enable it in 9.1.5 by
setting READ_CACHE to any value. Read caching is disabled by
any I/O statement except READS.
According to our tests, performance improves by the following factor with read caching enabled:System Improvement ----------------------------------- ----------- UNIX 2 times Windows XP and Vista (using a Vista non-system disk) 3 times Windows Vista/Server 2008 (using the system disk) 10 times Windows mapped drives 35 times
When using xfServer, set READ_CACHE on the server. [tr#25601] - An ISAM READS on the same channel following a READ or READS operation that encountered a "Record is locked" error ($ERR_LOCKED) now continues to attempt to read the record that was locked instead of reading the previous record read, after an update occurs on the file between the time of the two reads. [tr#25608]
- (Windows, UNIX) We temporarily added the READ_CACHE
environment variable to enable experimental support for read
caching for files opened in I, I:S, and I:R mode in conjunction
with the OPTIONS:"/sequential" qualifier. This behavior will
become the default with 9.3, but you can enable it in 9.1.5 by
setting READ_CACHE to any value. Read caching is disabled by
any I/O statement except READS.
- Synergy HTTP document transport API
- A blank URI no longer causes a segmentation fault on %HTTP_CLIENT_GET and %HTTP_CLIENT_POST. [tr#25596]
- We fixed some memory leaks and overruns. [tr#25516]
- Previously, if a proxy server required authentication, an HTTP error (407 Proxy Authentication Required) would be generated. Now if you provide a proxy-authorization header, this header is added to the tunneling CONNECT request given to the proxy server. [tr#25619]
- Synergy .NET assembly API
- Strongly typed DotNetDelegates can now be correctly cast to System.Delegate. [tr#25701]
- In cases where a property with the same name exists in a base class and returns a different type than the inherited property, an ambiguous match no longer generates an error. [tr#25690]
- The mimimum supported version of the Infragistics controls for use with the .NET assembly API is 8.2, with a minimum build of 8.2.20082.2027. If this revision or higher is not used, certain control effects such as drop-down menus will not work correctly. [tr#25648]
- Attempting to store off a strongly typed argument from inside a delegate no longer results in an "Incompatible classes" error ($ERR_INCPTCLS) being generated. [tr#25636]
- Delegate creation no longer fails with a "Method/Delegate not found" error ($ERR_MISSMETH) if you attempt to register a method that was defined on an inherited class. [tr#25614]
- (Windows) We created a workaround solution to a Microsoft bug in which redraw issues were experienced when running a UI Toolkit application with an embedded .NET WinForm inside of a Terminal Services RemoteApp session. [tr#25585]
- Windows Forms Buttons with mnemonics assigned to them are now triggered correctly when the associated keys are pressed. [tr#25558]
- Input to controls contained within a control and embedded in a UI Toolkit application are no longer misdirected. [tr#25521]
- Accessing an indexer with a parameter of type int no longer yields unexpected results in the code generated by gennet. [tr#25401]
- The gennet utility now supports indexers with multiple arguments. [tr#25637]
- We improved the error message that gennet generates when an assembly fails to load properly. Instead of a generic message, we now state the specific assemblies that aren't loading. [tr#25643]
- The gennet utility now correctly runs as a 32-bit application when installed with 32-bit Synergy/DE. [tr#25663]
- Synergy Prototype utility
- We significantly reduced memory usage when dblproto is run on large projects. [tr#25496]
- When the -out namespace was "%SYNDEFNS% -single *.dbl" and multiple source files existed for that wildcard, it was possible to get errors on the prototype keyword because partially completed prototype files were being imported. This has been fixed. [tr#25422]
- Synergy XML API
- In versions 9.1.1 through 9.1.5, %XML_STRING_DELETE did not clear the passed string handle as it did in previous versions. This has been fixed. [tr#25640]
- (OpenVMS) The file created by %XML_DOC_TOFILE is now created as a stream file. [tr#25052]
- In version 9.1.5, %XML_STRING_CLEAR destroyed the string record type, causing an "Invalid external function data type" error (INVEXFTYP). This has been fixed. [tr#25424]
- Utilities
- The synbackup utility now supports relative files. [tr#25591]
- Analysis engine
- License Manager
- (Windows) Previously, running lmu -f or using the Synergy Configuration Program to configure licenses from a corrupted .skf file caused a buffer overflow. Now it will return the error "lmu: Synergy Key File is invalid". [tr#25671]
- (UNIX) Previously, running lmu -f to configure licenses from a corrupted .skf file caused a segmentation fault. Now it will return the error "lmu: Synergy Key File is invalid". [tr#25671]
- (UNIX) Synergy licensing now works on Solaris Containers (Zones). [tr#25531]
- (UNIX) Processing a .skf file that contains CR/LF line terminators no longer generates the error "Producer file not found". [tr#25394]
- UI Toolkit [Expand All UI Toolkit | Collapse All UI Toolkit]
- Button Processing
- (Windows) In previous 9.1 versions, a segmentation violation would sometimes occur when adding a button to an existing window. This has been corrected. [tr#25515]
- Input Processing
- (UNIX, OpenVMS) In previous versions, if you attempted to display a value to a numeric selection field that had selections consisting of numeric values followed by other characters, nothing would be displayed in the field. This has been corrected. [tr#25040]
- List Processing
- (Windows) We enabled support for the ActiveX list control on 64-bit Windows systems by implementing a new version of the FarPoint Spread control. The ActiveX list control on 64-bit Windows is identical to the ActiveX list control on 32-bit Windows with the following exceptions. With the new list control,
- text assigned to headers and footers is trimmed, and if a header or footer is divided into columns, the text for each column is trimmed. If the header or footer is non-static, text is then centered in the column by default. (If they're static, text defaults to left-justified as it does on 32-bit Windows.)
- there's an additional published property, Border, which is a true/false property that determines whether the border of the control is visible. By default, this is set to true (1), which makes the border visible.
- when you click in the blank area to the right of list
columns (but to the left of the vertical scroll bar),
Toolkit reports the column number to the click method as 0,
rather than the number of the right-most column (which is
what Toolkit reports for the current implementation of the
32-bit ActiveX list control). Note that THIS MODIFICATION
MAY BREAK YOUR CODE.
With 9.3.1, we will adopt the new implementation of the FarPoint Spread control for 32-bit Windows systems as well, and you can try the new implementation out now on 32-bit systems by setting the DTK_NEWGRID environment variable to any value. With the new implementation you may see slightly improved performance and reduced flicker in some cases. (To return to the current implementation, set DTK_NEWGRID to nothing.) [tr#25288, 25559, 25551] - (Windows) In previous versions of the ActiveX list control, L_INPFLD did not set the content of the input field in the associated input window, which sometimes resulted in a loss of entered data. This has been corrected. [tr#25522]
- (Windows) In previous versions of the ActiveX list control, if a window had a horizontal scroll bar, it would sometimes be hidden from view if placement of a list caused the window's border to be suppressed (because the window width or height was within one character of the application window size). This has been corrected. [tr#25616]
- (Windows) In previous versions of the ActiveX list control, calling L_PROCESS without passing its third argument sometimes resulted in a "value out of range" error. This has been corrected. [tr#25460]
- Selection Processing
- S_SELECTCB now accepts an alpha argument (as documented). [tr#25590]
- Utility Routines
- (Windows 64-bit) In previous versions, %U_PRINTQUERY did not return -1 when it reached the end of a list. This has been corrected. [tr#25656]
- (Windows) In previous versions, passing a blank argument or a zero argument to the D_SETFONT subfunction of %U_WNDFONT would cause unpredictable results. We corrected this so that passing these instructs Toolkit to use default values. In other words, a blank argument is equivalent to passing the name of the current default font, and a zero argument is equivalent to passing 10. [tr#25618]
- Miscellaneous
- Tools.def no longer defines TRUE or FALSE, except when used with the version 8 compiler. These defines are not needed for version 9. [tr#25622]
- Button Processing
- Composer
- Connectivity Series [Expand All Connectivity Series | Collapse All Connectivity Series]
- SQL Connection
- We updated sqlunixbld so that it now lists Oracle 11. [tr#25454]
- We increased the default setting for , the fourth argument for %SSC_INIT, to 32768 bytes. (The default was 4096 bytes.) This increase may dramatically reduce network overhead and latency when large result sets or large columns are retrieved using SQL OpenNet (i.e., with connect strings that begin with "net:"). We recommend testing with set to even higher values (e.g., 65536), which may further increase performance. [tr#25629]
- In previous versions, if bulk insert mode was used with VTX12_ODBC or VTX12_SQLNATIVE, null data was not inserted as null, and varchar data was not trimmed of trailing spaces. This has been corrected. [tr#25548]
- In previous versions, %SSC_EXECUTE did not insert a null value in a field if that field was part of an array used by the statement. Additionally, if the array's first element was null, subsequent elements were inserted as null values. This has been corrected. [tr#25536]
- In version 9.1.3 through 9.1.5, inserting a null value by putting a binary 0 in a decimal variable caused a "bad digit" error. This has been corrected. [tr#25513]
- We corrected the %SSC_OPEN option SSQL_ONECOL so that it now uses SSQL_SCROLL to disable the prefetch buffer. (Previously it used the BLOB hint, which could affect BLOB behavior.) [tr#25453]
- In previous versions, a segmentation fault (rather than $ERR_NOMEM) would occur in some rare cases if SQL Connection initialization caused an out-of-memory condition. This has been corrected. [tr#25448]
- In previous versions, a memory leak would occur when a call to %SSC_EXECIO failed. This has been corrected. [tr#25439]
- In previous versions, when a stored procedure returned an error on a call to %SSC_EXECIO while using VTX12_ODBC or VTX12_SQLNATIVE, the next statement for the same cursor would sometimes cause a segmentation fault. This has been corrected. [tr#25438]
- We corrected the stp__sqlsrv1.dbl stored procedure example by removing unnecessary declare statements in the stored procedure definition. [tr#25436]
- (Windows) In versions 9.1.3 through 9.1.5, VTX12_ODBC and VTX12_SQLNATIVE inserted a single null '\0' character for alpha fields that contained all spaces. We have corrected this so that a single space character is now inserted. [tr#25649]
- (Windows) In version 9.1.3 through 9.1.5 with VTX12_ODBC or
VTX12_SQLNATIVE, a call to %SSC_OPEN with SSQL_SELECT for a SQL
statement that included the EXEC command for a stored procedure
would not result in a server-side cursor when server-side
cursors were enabled. This sometimes incorrectly caused a
"multiple active result sets" error. This has been corrected.
NOTE: Do not use %SSC_OPEN with SSQL_SELECT with a server-side cursor for non-cursor related stored procedures, and do not use these if the SQL statement includes the EXEC SQL command for a stored procedure that returns no rows. (This may cause "No cursor" warnings.) Instead, use %SSC_OPEN with SSQL_NONSEL (and %SSC_EXECUTE). [tr#25664]
- xfODBC
- (Windows 64-bit) We updated xfODBC to support system catalog caching on 64-bit Windows operating systems. [tr#23819]
- We added support for UNION clauses in inline views. [tr#25412]
- We added support for NOT EXISTS with CASE statements. [tr#25414]
- We added support for nested subqueries (inline views) in a FROM clause. [tr#25369]
- We increased the number of table references (which includes inline views and table joins) that the xfODBC driver supports for a SQL statement. The xfODBC driver now supports up to 64 table references, including up to 32 inline views and 16 table joins. (Previously, the limit was 32 table references. Any more would cause a "ZBITAB too many table references" error.) [tr#25583]
- Dbcreate now creates a read-only table called GENESIS_DUAL (and its synonym, dual), which includes only one row and one column. This insures there will always be a table with a single row available for operations such as "SELECT CURDATE() FROM dual". [tr#25411]
- The xfODBC driver now allows columns of type SQL_BIT to be bound (SQLBindCol), which enables the driver to support ADO.NET boolean types. [tr#25413]
- The CAST function now supports the same data types as CREATE
TABLE. For example, the following is now supported. (Note that
the precision for varchar, which is 1 in the example below, is
ignored.)
CAST(or_number AS varchar(1))
[tr#25417] - xfODBC now supports a GROUP BY clause in a statement that has
an inline view and an aggregate function in the column list. For
example:
SELECT or_item, AVG(or_number) FROM (SELECT or_item, or_number FROM orders) GROUP BY or_item
In previous versions, this caused a "Non aggregates require a GROUP BY expression" error. [tr#25545] - The xfODBC driver now supports SQL statements that are preceded by blank lines. (Previously, these would cause a "ZPASQL" error.) [tr#25418]
- We updated the TRANSLATE() function so that the source field no longer has to be as large as the maximum translated field. [tr#25480]
- (Windows) We increased the limit to the length of the command line generated from the Generate System Catalog window of the xfODBC Database Administrator (DBA) program. Previously, this was 256 characters. Now it is 1024 characters. [tr#25682]
- (Windows) For compatibility with Windows Vista, the error log file (ConvErrs.log) generated by the xfODBC Database Administrator (DBA) program is now created in the user's TEMP directory on Vista and higher machines. [tr#25682]
- In previous versions, the column names for the result set of a query with a UNION did not default to the names of the first leg (as they would with other databases). This has been corrected. [tr#25606]
- In previous versions, if a left join had an inline view that contained literal columns, the statement would incorrectly return the literal values instead of NULL when there was no match in the right-hand table. This has been corrected. [tr#25600]
- We corrected xfODBC so that it now describes i1 integer fields and d1 and d2 decimal fields as SQL_TINYINT. (Previously it described them as SQL_SMALLINT.) We also corrected the xfODBC Database Administrator (DBA) program so that the values in the "SQL type" field of the Column window reflect this. [tr#25576]
- We corrected the xfODBC Database Administrator (DBA) program so that the values displayed in the following are correct and consistent: the Type column in the Column List window, the type field in the "Synergy details" section of the Column window, and the Type field in the "Support details" section of the Column window. See the related entry in "Documentation Corrections and Additions" below.
- xfODBC now correctly describes a numeric literal of 1 as numeric (instead of a float). [tr#25546]
- In previous versions, if a statement had nested inline views and a sort was required for one or more of the inline views, the statement would cause a "ZGEMAIN too many sorts" error. This has been corrected. [tr#25575]
- In previous versions, xfODBC did not always use a key when a WHERE clause in a subquery used a data item outside the query. This has been corrected. [tr#25484]
- We updated dbcreate so that SODBC_COLLAPSE no longer collapses an arrayed field into a single column when the arrayed field is a group. [tr#25483]
- We corrected CAST and CONVERT to truncate fractional precision
when converting an implied value to a whole number type. For
example, the following now correctly returns 120. (In previous
versions, this would return 120.23.)
CAST(120.23, SQL_INTEGER)
[tr#25430] - (Windows 64-bit) In versions 9.1 through 9.1.5, SQLSpecialColumns would fail with a segmentation fault. This has been corrected. [tr#25378]
- In previous versions, a multi-threaded ODBC application could cause heap corruption for tod32.dll or tod64.dll, which would sometimes cause a segmentation fault. This has been corrected. [tr#25371]
- We corrected the column headings for functions and expressions returned by queries that use ORDER BY. [tr#25326]
- If the xfODBC driver encounters an invalid character in a decimal field, it now returns a 0 for the column value, or it returns an error if convert_error is set to yes in the connect file. The driver also returns an error now if it encounters a negative value in an unsigned column. Previously, the driver returned random values in these cases. [tr#25630]
- (Windows) In previous versions, multiple successive calls to ODBC API catalog functions (e.g., SQLGetTypeInfo) caused memory corruption, which would later result in random errors, including segmentation faults. This has been corrected. [tr#25646]
- SQL Connection
- Repository
- -- If the last field or comment line in a definition file being processed by the "Load fields from .INCLUDE file" feature contains an EOF character, it is now correctly loaded. [tr#25599]
- When loading a schema that includes a field or template that references a parent template with a coerced type, the coerced type information is now correctly inherited by the child field or template. [tr#25532]
- Professional Series Workbench [Expand All Professional Series Workbench | Collapse All Professional Series Workbench]
- Bug fixes
- When Extended Syntax Expansion was turned on, Workbench
generated invalid .ENDMAIN, .ENDSUBROUTINE, and .ENDFUNCTION
compiler directives when syntax expansion was triggered for
.MAIN, .SUBROUTINE, and .FUNCTION, respectively. This has
been fixed so that .MAIN, .SUBROUTINE, and .FUNCTION now expand
as though Extended Syntax Expansion were not turned on. For example,
.MAIN is expanded to
.main .proc .end
[tr#25528] - With Syntax Expansion enabled, an IF statement with parentheses that does not have a space between the THEN statement and the rest of the line now properly generates an ELSE statement when the spacebar or Enter key is pressed. [tr#25501]
- Workbench now correctly handles ENUM tag information. [tr#25500]
- SlickEdit fixed a bug in which a .INCLUDE statement could cause functions within the included file to appear on the Defs tab as members of a subroutine below the .INCLUDE statement. [tr#25416]
- If a file was read-only, pressing Alt+Period still showed the member list window. While this was not a problem, the editor still allowed you to type names of items in the list without a warning. This has been fixed by SlickEdit. [tr#25106]
- In Replace mode, pressing Enter on a line now correctly splits the existing line and moves the following text and the cursor to the next line at the correct indent level. [tr#24324]
- Certain situations caused the Build window in SlickEdit to become disabled after a message box prompt was displayed. This has been fixed. [tr#22739]
- When Extended Syntax Expansion was turned on, Workbench
generated invalid .ENDMAIN, .ENDSUBROUTINE, and .ENDFUNCTION
compiler directives when syntax expansion was triggered for
.MAIN, .SUBROUTINE, and .FUNCTION, respectively. This has
been fixed so that .MAIN, .SUBROUTINE, and .FUNCTION now expand
as though Extended Syntax Expansion were not turned on. For example,
.MAIN is expanded to
- Bug fixes
- xfServer
- We improved the performance of the ISAM operations STORE, WRITE, and DELETE to xfServer by 30 to 40 percent when synbackup is in use. [tr#25434]
- (Sun, HP-UX) We fixed the setruser utility on Sun (system codes 020, 320, and 420) and HP-UX (system codes 009, 309, and 509) to not truncate passwords longer than eight characters. [tr#25440]
- When using SCSPREFETCH on the client, a read using a record buffer that is smaller than one or more records in the prefetch cache no longer fills the remaining portions of those records with random data. Also, following a READS trapped with $ERR_TOOBIG, %RDLEN now correctly reflects the actual record size instead of the size of the record buffer. [tr#25634]
- When using SCSPREFETCH on the client, a read that comes from cache using a smaller record buffer than the actual record will now correctly generate an $ERR_TOOBIG error. Also, following a READS that traps $ERR_TOOBIG, a READS of subsequent records from the cache no longer continues to generate $ERR_TOOBIG even when the record buffer is big enough to contain the record. [tr#25633]
- xfServerPlus [Expand All xfServerPlus | Collapse All xfServerPlus]
- xfServerPlus
- When calling a method that has a return value and has an ArrayList parameter followed by another parameter, the returned packet was calculating the length of the ArrayList parameter incorrectly and issuing an "input string not in the correct format" message. This has been fixed. [tr#25505]
- xfServerPlus no longer fails and closes the socket when calling a Synergy function that returns a string that was never initialized. Now, it sends a null string as the function return value. [tr#25694]
- The dbs session no longer terminates with the error "An existing connection was forcibly closed by the remote host" when a method has an "out" parameter of type System.String that is larger than 30 bytes. [tr#25445]
- Genxml now supports the maximum number of repository fields in a structure (999). Previously, it failed when a structure had more than 500 fields. [tr#25691]
- The length of supported error messages for XFPL logging has been increased to a maximum of 900 characters. Previously, it was 90 characters, which could cause certain errors (e.g., RTNNF) to be truncated in some circumstances. [tr#25705]
- (Windows) When a file named "program" existed in C:, rsynd could not spawn commands to xfpl.dbr. This has been fixed. [tr#25386]
- Method Definition Utility
- The Array checkbox on the Parameter Definition window is now disabled when the parameter type is System.String. A System.String array is not a supported data type. [tr#25398]
- We fixed a problem that was causing an error when importing XML files into the MDU that have methods with coerced return values mixed with methods with non-coerced return values. The non-coerced methods were reporting the error "This data type cannot have a coerced type". [tr#25703]
- xfServerPlus
- xfNetLink COM Edition
- xfNetLink Java Edition
- (Windows) In certain cases, Windows Server 2003 with the Scalable Networking Pack (which is included in SP2) could cause 10060 (timeout) errors on connect. We now throw a SynProxyNetException in this situation. [tr#25587]
- The genjava utility now throws an exception (unsupported collection type) when a parameter is marked as "out" only, structure, ArrayList, and DataTable. (ArrayLists and DataTables are not supported on xfNetLink Java.) This case was previously not being caught, and so genjava produced source code that would not compile. [tr#25624]
- Genxml now supports the maximum number of repository fields in a structure (999). Previously, it failed when a structure had more than 500 fields. [tr#25691]
- xfNetLink .NET Edition
- The TableName property in a DataTable class is now set to just the structure name. Previously, it was set to "SynDataTable" plus the structure name. This change facilitates connecting to a data source. [tr#25642]
- The columns in a DataTable are now initialized when the table is instantiated. Previously, the column names were initialized when the call was made. This change enables you to see the column names in Visual Studio at design time. [tr#25642]
- After making the call to fill a DataTable, we now call the DataTable's AcceptChanges() method before returning the filled table to the client. This way, you can identify changes that are made to rows in the table. Previously, AcceptChanges() was not called, and consequently all rows appeared as added rows. [tr#25642]
- Genxml now supports the maximum number of repository fields in a structure (999). Previously, it failed when a structure had more than 500 fields. [tr#25691]
- We fixed a problem in gencs that was causing a null reference exception to be thrown when using a sub-structure as part of a DataTable, when the sub-structure is also used in another class where it is not part of a DataTable. [tr#25588]
- Nullable DateTime types in structures no longer have to be initialized before being used. Previously, in spite of being nullable, they did not accept a null value. To take advantage of this fix, you must regenerate classes with gencs and then run the batch file to rebuild the assembly. [tr#25586]
- The .NET DNS lookup on 64-bit operating systems now returns only IPv4 addresses. Previously, it was returning both IPv4 and IPv6 addresses. [tr#25494]
- Synergy Language [Expand All Synergy Language | Collapse All Synergy Language]
- Synergy/DE 9.1.5 [Expand All | Collapse All]
- Synergy Language [Expand All Synergy Language | Collapse All Synergy Language]
- >Analysis engine
- An invalid CATCH clause in a TRY-CATCH statement was causing Workbench to crash. This has been fixed. [tr#25358]
- A MAIN statement is no longer discarded if the subroutine that immediately precedes it is missing its END or ENDSUBROUTINE statement. [tr#25324]
- We fixed a problem in which specifying extremely long directories in an IMPORT statement caused the analysis engine to crash. [tr#25300]
- Repository record, structure, or literal .INCLUDEs in a class now terminate by default. Previously these .INCLUDEs were open-ended unless you specified an ", end" qualifier to terminate the construct. THIS MODIFICATION MAY BREAK YOUR CODE. [tr#25276]
- Invalid multiple ENUM declarations were causing Workbench to crash. This has been fixed. [tr#25258]
- The decimal size is now correctly checked when literal fields are used as a size within a fixed or pseudo array. [tr#25202]
- A segmentation fault no longer occurs when the SYNDEFNS environment variable is set to . [tr#25206]
- The analysis engine no longer leaks parser memory for repository streams. Over time this problem sometimes caused Workbench memory to grow during context tagging. [tr#25216]
- A conditional directive around the UNTIL clause in a DO-UNTIL statement no longer causes the analysis engine to fail internally. [tr#25204]
- A missing continuation character in a USING statement's SELECT list no longer causes all lines that follow to be invalid program entry errors. [tr#25150]
- An expression that contains a scope reference (or a dimensioned scope) followed by a range is now handled correctly. [tr#25149]
- The analysis engine no longer crashes if a statement of the form "if ^null = x" is processed. An error is now correctly reported. [tr#25139]
- It was previously possible to get into a recursive loop when encountering a NEW keyword. This has been fixed. [tr#25125]
- The analysis engine no longer allows objects to be passed to VARARGS, which caused runtime errors. [tr#25065]
- When compiling multiple files, the presence of the IMPORT statement at the beginning of subsequent files no longer causes an error. [tr#25057]
- Bitwise operations within an enumeration no longer cause an NFND error. [tr#25041]
- Parenthesized expressions in an IF-THEN-ELSE statement that appears on a single line no longer cause an error. [tr#24986]
- Calling a constructor using NEW on a line by itself no longer causes an error. [tr#24908]
- Compiler/Linker/Librarian
- We added a new statement, FOREACH, which iterates sequentially through elements in a collection. The syntax is
FOREACH in . . .
where is a loop variable whose value is set to each element in sequence as FOREACH iterates through them and is one of the following:- A dynamic system array of rank 1 - A real Synergy array of rank 1 - The System.Collections.ArrayList class or a descendant - The Synergex.SynergyDE.Collections.ArrayList class or a descendant - A class generated by gennet that inherits from DotNetObject and can be converted to IEnumerable
[tr#25237] - We added a new compiler option, -WD, to allow specific
warnings to be disabled. This option is especially useful if
you are encountering a lot of level 4 warnings. The syntax is
-WD=[,...]
where is the number of the error that you want to disable. You can specify multiple errors, separated by commas. For example,dbl -W4 -WD=885,777 filename.dbl
[tr#25169] - We added a new linker option:
-R
Use this option to create an ELB when not all of the routines in an OLB file are desired. Only the routines in the specified OLB that are necessary to resolve the routines in the ELB will be included. You can specify -R multiple times to specify more than one OLB file. For example,dblink -l test1.elb test1.dbo -R test2.olb -R test3.olb
[tr#25063] - We added the ability to specify the MISMATCH modifier on an alpha parameter for functions and subroutines, which allows passing a decimal or an implied-decimal argument to the alpha parameter. [tr#25241]
- An OLYBD error is now reported when a class field that is not in a record overlays another field. [tr#25345]
- The following routine parameters are now defined as MISMATCH alpha: INSTR's second and third arguments, GETLOG and SETLOG's second argument, and %XML_ELEM_SETATTRIBUTE's third argument. This allows decimal variables to be passed to the changed parameters without a compiler error or the use of the -qrelaxed:interop option. [tr#25253]
- The compiler now allows you to cast an alpha literal to a string when passing the literal to an object. [tr#25277]
- Complex paths for method arguments are now supported, which means an ITOPBAD error is no longer reported if a complex path is passed. [tr#25364]
- An invalid NOPRPMTH error no longer occurs on an indexer of type string that is set with an alpha value. [tr#25329]
- A BSTMTCH error is now reported instead of a NOPRPMTH error if an indexer exists but the arguments don't match. [tr#25334]
- A "Bad digit encountered" error is no longer generated at runtime when a method call with no return value assignment calls a method that returns an alpha. The module that contains the method call must be recompiled. [tr#25338]
- When compiling a single file containing multiple routines whose first 18 characters are identical and that contain static records, the compiler now generates a unique global name for the data area. (In version 9.1.3, due to tr#25021, a ONEINI linker warning was generated.) [tr#25321]
- (Windows) When a .dbr program performed a READS from the terminal and FLAGS(9) was not set, the workstation bell did not sound if a key other than Return was pressed after the field was full. This has been fixed. [tr#25310]
- Previously, if the directory specified in an IMPORT statement was '', a segmentation fault occurred. This has been fixed. [tr#25298]
- The compiler no longer silently allows access modifiers on routine data. A level 3 warning (ACCIGNORED) is now reported. [tr#25293]
- The compiler now reports the correct error if a constructor directly refers to itself as its initializer. [tr#25290]
- The compiler no longer generates a segmentation fault if you use a routine parameter that is a member of a parameter group in an INIT statement. A NOTALLOWED error is now reported instead. [tr#25273]
- You are no longer required to compile with the -qrelaxed:interop option when using the ADDHANDLER statement. [tr#25269]
- Enumeration on 64-bit big-endian platforms (IBM AIX 5L [304], HP-UX PA-RISC [309], Sun Solaris [320], and HP-UX Itanium [509]) no longer sets all ENUM fields to 0. [tr#25242]
- A class that has overloaded indexer properties no longer gives a MOREARGS error when the property is set. [tr#25265]
- An invalid PROTOMISMC error no longer occurs when you are compiling multiple files and a file gets compiled before its prototype is encountered in an import. [tr#25250]
- We fixed a problem in which multi-level arrays incorrectly reported an INVNUMDIM error when referencing intermediate levels. [tr#25239]
- We fixed the linker to add references to virtual methods and destructors to the list of external links, which allows external references to be pulled in when linking against an ELB. [tr#25278]
- The librarian no longer issues an RNXSTMD error ("Warning - Replacing non-existing module") when replacing a method name that is mangled to a length greater than 200 characters and the module does exist in the library. [tr#25263]
- You can now pass strings to %SSC_OPEN, %SSC_DEFINE, and %SSC_BIND as a value for a variable argument. Previously this generated a VARGOBJ error. [tr#25280]
- The compiler erroneously prohibited references to labels outside the current scope if any variable was defined with a DATA statement within the scope, but now references are only prohibited if a handle is defined with a DATA statement within the scope. [tr#25285]
- Casting as a class.property no longer causes a segmentation fault. [tr#25283]
- A cast in a complex path followed by a call to the object's property method no longer causes a NOPRPMTH error. [tr#25281]
- A continuation character immediately preceding a string that followed another string on the previous line created a string with an extra leading quotation mark. This has been fixed. [tr#25227]
- When casting the return of an object from a method, the compiler could generate code to not perform the cast and cause a crash at runtime. This has been fixed. [tr#25203]
- The compiler no longer reports an inappropriate OUTPARM error when an IN parameter is used as an index of an element being passed to an OUT parameter. [tr#25201]
- Compiling with the -qnooptimize option (or /NOOPT on VMS) no longer causes "Type mismatch" errors that aren't generated otherwise. [tr#25197]
- The compiler no longer generates an AMBSYM error if two fields (one in a structure and one in a local record) exist with the same name. [tr#25187]
- (Windows) The performance of certain file lookup operations when the file is on a network drive has been improved. This improvement is most noticeable when tagging fields in Workbench, especially when using a large SYNIMPDIR directory of files. [tr#25170]
- MRETURN or FRETURN is no longer required in typed routines that include THROW statements. [tr#25164]
- The compiler has been fixed so that an EXAMINE of data literals in the debugger displays correctly. [tr#25047]
- We improved the generation of several warnings. [tr#25156, tr#25155, tr#25126, tr#25130]
- An implied variable can now be passed to %STRING or the S_BLD routine when using the -W4 compiler option. [tr#25157]
- An INVCALL error is no longer generated when a TYPPARM error is expected. [tr#25154]
- We have made many fixes to the compiler for error detection,
code generation and segmentation faults related to Synergy
objects. Tracker numbers are as follows:
25179, 25136, 25129, 25128, 25120, 25118, 25110, 25109, 25035, 25022
We recommend that you recompile your code with 9.1.5 if you have used Synergy Objects. - We fixed a problem in which the compiler was not correctly tagging common and literal records when the -qvar option was used. [tr#25142]
- (OpenVMS) we fixed the emission of single-dimensioned external literal integer descriptors ([1]i4). [tr#25138]
- Passing a structure to a string constructor no longer causes a segmentation violation at runtime. Now, an INVTYP error is correctly generated. [tr#25135]
- In versions 9.1.1 through 9.1.3, the compiler added an XRETURN at the end of a subroutine by default. It now adds a STOP instead, as it did in prior versions. [tr#25126]
- Version 9.1.3 incorrectly allowed strings in READ, READS, GET, GETS, and ACCEPT statements. This is no longer the case. [tr#25124]
- The compiler no longer crashes if ^M is used in an INIT statement. [tr#25123]
- A more appropriate error (NOTINFUNC) is generated when an invalid expression is returned in a method that incorrectly uses FRETURN instead of MRETURN. [tr#25122]
- We added a compiler error, DECLORDER, that is generated when you attempt to use an ENUM value as an initial value before the ENUM is declared. [tr#25115]
- (OpenVMS) When accessing an external literal integer array variable, the correct value is now retrieved. [tr#25102]
- (OpenVMS) We fixed the emission of dimensioned external literal integer descriptors. [tr#25098]
- The compiler now correctly detects relative ranges that are too long if the length can be determined at compile time. [tr#25070]
- The compiler no longer generates inappropriate accessibility errors on structures that are referenced before they are declared. [tr#25069]
- The compiler no longer allows access to private and protected structure fields. [tr#25068]
- The ISAMC and S_BLD subroutines now have more than 10 initial arguments that are defined as input, instead of using the VARARGS parameter to allow string parameters to be converted to alpha. A VARGOBJ error is generated when you attempt to pass an object type to a VARARGS parameter. [tr#25065]
- Uninitialized data in a structure referenced via a dynamic array previously caused a segmentation fault when used with the -O compiler option (opcode listing). This has been fixed. [tr#25060]
- The compiler no longer allows decimal literals to be used where an alpha field or expression is required. [tr#25054]
- The compiler no longer allows ranging on objects that were cast as another type. A BADRNG error is now generated as expected. [tr#25036]
- The compiler now supports multiple labels preceding a statement that begins on a new line within a complex statement such as IF-THEN-ELSE. [tr#24923]
- The linker now processes debug information in 16K buffers instead of 1K buffers. This change speeds up the linker on mapped Windows drives. [tr#25147]
- The linker now adds references to virtual methods and destructors to the list of external links when creating an ELB. This allows the linker to pull in external references when linking against an ELB. We also enhanced the listelb utility to list the external link references in an ELB. [tr#25278]
- The linker has been fixed to correctly resolve references to ELBs linked against ELBs when the secondary ELBs are specified on the link line. [tr#25111]
- We fixed the librarian so that it properly handles functions and subroutines within a class when replacing the routine in an object library. [tr#25322]
- Previously the librarian could end up in an infinite loop when replacing modules in an object library that contained properties. This has been fixed. You must recompile your code to take advantage of this fix. [tr#25224]
- We added a new statement, FOREACH, which iterates sequentially through elements in a collection. The syntax is
- Debugger
- The compiler now correctly emits the debug information for a multi-part namespace. The runtime debugger now correctly interprets a cast when the rightmost component of the namespace is the same as the class name. [tr#25343]
- An EXAMINE of a static class field using a partial path no longer generates an "Invalid path" error. [tr#25251]
- The debugger has been fixed to correctly parse static fields in a class with the same name as the namespace. [tr#25067]
- The debugger once again allows the command "C W/A" as an abreviation for "CANCEL WATCH/ALL". [tr#25045]
- Installation
- (Windows) The SDE component "Files for shared installation" is now installed by default on server platforms. [tr#25274]
- (Windows) Connectivity Series is now installed by default. [tr#25272]
- The Report Writer release note icon now matches the appearance of the other release note icons. [tr#25099]
- Monitor utility
- The Monitor utility (synxfmon) now displays the port of each client properly When the -v option is used. [tr#25348]
- Runtime
- (Windows) We added a new function, %SET_PRIORITY_CLASS, to allow a program to change its priority class if privileges allow. [tr#25167]
- For interoperability with .NET and other languages, indexes
used by the System.Collections.ArrayList class are now 0-based
instead of 1-based. (This class was introduced in Synergy/DE 9.1.3
with 1-based indexes.)
To prompt your attention regarding this change, the 9.1.5 runtime generates a fatal ALCOMPAT error when System.Collections.ArrayList is used. This error will go away when you compile your code with 9.1.5. However, you must still perform one of two steps to resolve the issue, or your code may contain errors (where it is depending on the indexes to be 1-based).
1) If there's any chance that you will migrate your code to .NET in the future, you should convert all ArrayList index references to be 0-based. This will be a requirement for interoperability with other .NET languages. We recommend using the FOREACH statement with all FOR loops that reference ArrayLists.
2) If future interoperability with .NET is of no concern, you can simply change all references to ArrayList to Synergex.SynergyDE.Collections.ArrayList, which remains 1-based.
Typically, these references to ArrayList will appear in two places: on imports at the beginning of source files and on ArrayList handle declarations where you've specified @System.Collections.ArrayList (or @Collections.ArrayList if you've imported the System namespace).
If you're choosing step 2 above, you can change the IMPORT statement to use the Synergex.SynergyDE.Collections namespace instead, and if you have handles referencing System.Collections, you can change those to reference Synergex.SynergyDE.Collections instead. [tr#25222] - The IndexOf and LastIndexOf methods in both System.Array and System.Collections.ArrayList now use the array element's Equals method (instead of the target object's) to determine a match. This is to conform to a change by Microsoft to .NET version 2.0. This change has the potential for breaking existing code if the System.Object.Equals method is overridden by objects in the array or the target object and they are different types. [tr#25181]
- (Windows) We improved the performance of WRITES, FORMS, and DISPLAY to an O:S or O:R file. [tr#25158]
- (Windows, UNIX) In certain circumstances, when an error was signaled that had no replacement text in syntxt.is* and an ONERROR $ERR_CATCH was in effect, the runtime ended up in an infinite loop. This has been fixed. [tr#25247]
- You will no longer get an INCPTCLS error when assigning an object to an existing ArrayList element of a different type. [tr#25292]
- Some Synergy Runtime errors that are not documented as having a specific exception class mapping now throw a Synergex.SynergyDE.SynException object instead of System.Exception. [tr#25119]
- Passing a string object (even an empty string "") to the ArrayList IndexOf or LastIndexOf method will no longer match a nonstring object. [tr#25178]
- A segmentation fault no longer occurs when chaining to another program in debug mode. [tr#25148]
- A segmentation fault no longer occurs when either the System.Array or System.Collections.ArrayList methods IndexOf or LastIndexOf is used with @* handles to derived objects. A similar situation using the static System.Object.Equals(objA,objB) was also corrected when objA and objB are @* handles to derived objects. [tr#25137]
- (Windows Vista) Dbr and dbs no longer allow file virtualization. [tr#25082]
- The Synergy print API's DWP_BEGIN subfunction now reports protection errors as PROTEC instead of FINUSE. [tr#25011]
- Previously, passing a literal to an OUT or INOUT parameter on a subroutine or function could change the value of the literal if the routine was not strongly prototyped. This has been corrected. [tr#25370]
- Synergy ActiveX API
- We added the ability to send ActiveX debug information to an attached Windows debugger by setting the AXDEBUG environment variable to EXTERNAL. If AXDEBUG is set to YES on 64-bit Windows, it is interpreted as EXTERNAL. [tr#25308]
- Synergy DBMS
- The correct RFA is now always returned when both the RFA and GETRFA qualifiers are used on a FIND statement. [tr#25332]
- (Linux) The chklock utility now correctly reports all locks in a file. Due to a difference in behavior of a standard system routine on Linux, chklock (on Linux) now uses a techique similar to that used in chklock for Windows. As a result, chklock will run slower. [tr#25190]
- Synergy .NET assembly API
- Strongly typed parameters are now allowed on delegates when the ADDHANDLER statement is being used. [tr#25271]
- A "Possible heap corruption detected" error is no longer incorrectly generated when calling a delegate. [tr#25365]
- An object that was created using the supplied cast conversions had a lifetime that was tied to the original object. If the original object was deleted, the cast object ended up in an invalid state. This has been fixed. [tr#25307]
- Previously the .NET assembly API considered empty alphas to be null strings in .NET. Now it considers them to be empty strings. [tr#25306]
- Classes generated by the gennet utility now support an arbitrary indexer parameter. We also added this support for GetIndexer and SetIndexer. [tr#25257]
- Passing a null argument no longer causes a segmentation fault. [tr#25268]
- If the .NET-called routine returns a null object, a null is correctly returned by the .NET assembly API. [tr#25267]
- Delegates with an object return type no longer generate a MISSMETH error at runtime. [tr#25256]
- Previously, if an assembly was created, destroyed, and created again, the second loading of the assembly would fail. This has been fixed [tr#25226]
- Attempting to get or set an indexer that has no get or set method now gives the correct error message. [tr#25215]
- The indexer methods have been changed from 1-based access to 0-based access. [tr#25214]
- Previously, delegate calls were overwriting runtime handles when they operated on a "this" pointer. Oftentimes the "this" pointer was no longer valid and caused corruption to occur. This has been fixed. [tr#25112]
- The IntPtr type is now properly supported as an output type. [tr#25105]
- Indexers on objects that had more then one overload generated an "Ambiguous match found" error at runtime. This has been fixed, and these indexers now only resolve to the integer indexer. [tr#25101]
- DotNetException's NativeException property now works correctly. [tr#25100]
- Delegates without parameters can now be generated at runtime. [tr#25243]
- A ToString method is generated with the NEW modifier for all gennet classes. This method maps to the ToString of the object in the .NET common language runtime. [tr#25305]
- Gennet has a new command line option, -impdir ,
that enables you to specify a directory or logical for which
gennet will build an import list. The new gennet syntax is
gennet -output -log assembly [...] [-nodep] [-impdir ]
Gennet adds the specified directory or logical to the end of the generated IMPORT statement, as follows:IMPORT System DIRECTORY 'MYLOGICAL:'
[tr#25299] - When using code generated by gennet, you can now cast from an object property, a field, or a method return value to a strongly typed object. [tr#25270]
- The gennet utility no longer generates code that can cause an ambiguous method error at runtime if the target object has more than one indexer defined. [tr#25255]
- Undefined environment variables no longer cause the gennet utility to crash. [tr#25193]
- Gennet sometimes generated incorrect ENUM members, causing a TOKUDF error to be generated by the compiler. This has been fixed. [tr#25168]
- Gennet generated incorrect source for WPF assemblies, causing a READONLY error to be generated. This has been fixed. [tr#25166]
- Gennet no longer generates incorrect source from Infragistics controls, which resulted in unresolved types at compile time. [tr#25134]
- Gennet now creates temporary decimals that are the correct size. [tr#25114]
- We corrected the indentation of code generated by gennet. [tr#25061]
- Synergy Prototype utility
- Dblproto no longer produces incorrect source text for errors in a prototype file when the errors are reported from an imported namespace. [tr#25316]
- Compile-time functions, such as %CHAR, no longer cause invalid prototypes. [tr#25266]
- Previously, when the -out option was used, an include guard was created around each routine in the file. Now only a single include guard is created on the file, which allows the same namespace to be used across directories. (An "include guard" is the use of .IFDEF logic to prevent multiple inclusions of the same code.) [tr#25219]
- Dblproto no longer generates a segmentation fault when SYNDEFNS is set and the -single option is used with wildcards on multiple .dbl files. [tr#25200]
- Dblproto no longer produces invalid prototypes if a parameter is passed with "^VAL" (all uppercase). [tr#25196]
- Common records defined in multiple main routines generated "Symbol already uniquely defined" errors (TOKUDF) during global name checking. These errors have been suppressed. [tr#25192]
- Continuation characters in initial values no longer cause dblproto to generate prototype files that contain odd characters. [tr#25152]
- The parameter type now correctly appears in the prototype file even if it is unresolved. [tr#25116]
- Synergy XML API
- The Synergy XML API is less likely to run out of memory with large XML files, and it uses about the same memory footprint as commercially available DOM parsers. In addition, we improved performance in loading large XML files. [tr#24906]
- Utilities
- The Variable Usage utility now correctly reports unreferenced global variables. [tr#25143]
- (Windows, UNIX) The synbackup utility now displays descriptive usage information. In addition, you can now specify a wait time of -1 to indicate that synbackup should wait until the backup can be performed. [tr#25165]
- (UNIX) The synbackup utility now generates a unique shared memory key instead of a fixed "999" ID. The purpose of this change is to avoid conflicts with other non-Synergy programs using the same key. In addition, users without administrative privileges can now perform query operations (-q). [tr#25165]
- If the profiler was run on a program that had objects with unmangled names of 30 characters less, the mangled name was used instead of the unmangled name. This has been fixed. [tr#25367]
- >Analysis engine
- License Manager
- (Windows) We corrected a problem with client license generation that was causing an innocuous message box to occur at Synergy Runtime startup "INIT: lm_init Transient CreateFile error 52". Running "lmu -c -nc" on a machine afflicted with this type of license problem will correct the problem. [tr#25328
- UI Toolkit [Expand All UI Toolkit | Collapse All UI Toolkit]
- Button Processing
- In previous 9.1 versions, if you passed a button index that was less than 1 to %B_INFO, the error message would misstate the valid range as 1 to 0, rather than 1 to the actual number of buttons on the window. This has been corrected. [tr#25058]
- (UNIX) In previous versions, calling B_MODIFY would sometimes result in a "Function not found; Function code used was 3093 (0x0c15)" error. This has been corrected. [tr#25107]
- Composite Window Processing
- We updated composite window processing so that unplaced child windows are no longer included in the tabbing order or the C_NEXT/C_PREV order, and buttons on an unplaced child window are no longer included in the determination of the default button or of ALT+ button activation. THIS MODIFICATION MAY BREAK YOUR CODE. Previously, if you called C_PROCESS for a composite window that had no placed or enabled child windows or buttons, C_PROCESS would wait for input because it included the unplaced child in the tabbing order. Now C_PROCESS returns immediately. [tr#25103]
- (Windows) In previous 9.1 versions, if a user tabbed or pressed ENTER after modifying data in the last field of an input window in a composite window, Toolkit moved focus to the next child window (rather than staying on the input field) if the field had a change method that called %U_MSGBOX, or otherwise cleared g_select, and if the change method returned a failure status (such as D_EMITTEDERR). This has been corrected. [tr#25362]
- (Windows) In previous 9.1 versions, clicking from one input window to another within a composite window would sometimes result in unstable input set controls, which could cause errors such as "Input set not found." This has been corrected. [tr#25294]
- (Windows) In previous 9.1 versions, double-clicking a button on an input window in a composite window would sometimes cause unpredictable results--for example, a window manger error or a segmentation violation. This has been corrected. [tr#25234]
- List Processing
- (Windows) In previous versions of the ActiveX list control, if a field in a list defined a display length that was shorter than its input length, the field display would sometimes include characters from the next field. This has been corrected. [tr#25075]
- (Windows) In previous 9.1 versions of the ActiveX list control, if a scroll bar was suppressed and the user clicked the area where the scroll bar would otherwise have been displayed, Toolkit would call the click method for the list, but the and arguments would be passed as zero, and the argument would include the non-client flag (D_AREA_NONCLIENT). This has been corrected. Toolkit now passes the correct row and column values, and it passes the client flag (D_AREA_CLIENT). [tr#25066]
- Menu Processing
- In previous versions, the MB_ routines did not enforce the maximum number of entry lists, which is 9, or the maximum number of menu column rows, which is 20. Exceeding either of these causes unpredictable results for subsequent calls on the column, so we corrected Toolkit to enforce these as a column is constructed. THIS MODIFICATION MAY BREAK YOUR CODE. Toolkit now returns a fatal error ("Too many rows" or "Too many lists") when a column exceeds one of these maximums.
- .NET Processing
- (Windows) We added the ability to embed the following in Toolkit windows: .NET forms, .NET controls, and Windows Presentation Foundation (WPF) elements (i.e., System.Windows.Forms.Form objects, System.Windows.Forms.Control objects, and System.Windows.UIElement objects). To implement this feature, we added the following:
- The %DOTNET_TKWIN function, which enables you to embed a .NET form, .NET control, or WPF element in a Toolkit window.
- The DOTNET_TKADDCTL subroutine, which enables you to add a .NET form, .NET control, or WPF element to a previously embedded .NET form.
- The DOTNET_TKINPUT subroutine, which enables you to process an embedded .NET form.
- The DOTNET_TKFORM subroutine, which enables you to retrieve a .NET form object from a Toolkit container.
- The C_METHNET composite window processing method, which calls the new DOTNET_TKINPUT subroutine.
- The D_WTYPE_DOTNET value for the %E_INFO subfunction
D_WINDOW_TYPE.
Note that to run a Toolkit program with this functionality, you'll need .NET Framework (2.0 or later for .NET forms and controls, or 3.0 or later for WPF elements). You'll also need Windows XP or 2003 or later. [tr#25088, 25145, 25198]
- Button Processing
- Connectivity Series [Expand All Connectivity Series | Collapse All Connectivity Series]
- SQL Connection
- We corrected the Synergy compiler so that you can now pass strings to %SSC_OPEN, %SSC_DEFINE, and %SSC_BIND. Previously this caused a VARGOBJ error. (Note that we updated SQL Connection to support the String data type for these routines in 9.1.3. See the entry for tr#24738 below.) [tr#25280]
- (Windows) We corrected a small memory leak that occurred when a VTX11, VTX12_ODBC, or VTX12_SQLNATIVE connection failed. [tr#25238]
- (Windows) In 9.1.3, when VTX11, VTX12_ODBC, or VTX12_SQLNATIVE returned multiple ODBC warnings or errors, the main error number would sometimes be overwritten. This has been corrected. [tr#25229]
- xfODBC
- We added support for the CAST scalar function, which enables you to convert an expression or a null value to a specified data type. [tr#25295]
- We added support for the TOP and SKIP subclauses, which enable you to specify the number of rows to be returned for a query (TOP) and the number of rows to be trimmed from the beginning of a result set (SKIP). Together, these can be used for paging, which is particularly useful for creating cached result sets for web sites that use ADO.NET. [tr#25208, 25296]
- We added support for CASE clauses, which evaluate lists of conditions and return results for conditions that are true. [tr#25296]
- We updated dbcreate so that it generates a caution ("Table is already defined") when it encounters duplicate structures. Previously, dbcreate generated this as an informational message instead, so duplicate structures were reported only when -v was specified. [tr#25083]
- We corrected the xfODBC driver so that returned headings for scalar functions that accept a column name as an argument now have the form expr#, where # is the zero-based position of the column in the result set. (Previously, the driver would use the column name as the heading.) This makes the xfODBC driver more consistent with other database drivers. For a different column heading, use an alias. [tr#25185]
- (Windows) In previous versions, the xfODBC driver described a D20 field as SQL_BIGINT instead of SQL_DECIMAL, which caused truncation. This has been corrected. (Note that D18 is the largest size decimal field supported by the Synergy Language.) [tr#25071]
- SQL Connection
- ReportWriter
- Professional Series Workbench [Expand All Professional Series Workbench | Collapse All Professional Series Workbench]
- Visual editor
- Workbench supports syntax expansion and indentation for the new FOREACH statement. [tr#25359]
- The new synexceptions.dbl file (split off from synclasses.dbl) is automatically tagged in the DBL tag file. [tr#25160]
- Workbench no longer generate tags for imports. If you want tags for your imported classes and namespaces, you must either add the source files to your workspace or create a separate tag file for those sources. [tr#25199]
- Workbench tagging now includes System.Object and System.String classes and members. [tr#24954]
- Bug fixes
- When an external build command executes, a vsbuild.exe command window no longer launches in addition to the desired executable. [tr#25333]
- The key words "byval" and "byref" are now correctly colored. [tr#25209]
- Typing an ampersand in a comment is now handled correctly. [tr#25171]
- Function, subroutine, and method overloads with similar IN, OUT, and INOUT parameter information now correctly show context-sensitive routine help. [tr#25144]
- When using SmartPaste to paste a line after a line that only contained comments, there were circumstances where the pasted line would indent incorrectly (most notably, following an if/begin/end). This has been fixed. [tr#25024]
- Local tag information for property methods is now correctly displayed when using the list-members command (which is usually accessed with Alt+Period). [tr#24783]
- When processing includes, Workbench would mistakenly tag incorrect filename information causing the tag file to grow incrementally. This has been fixed. [tr#25131]
- Keywords with capital letters no longer cause incorrect indentation. [tr#25331]
- Due to a SlickEdit problem, when you moved the cursor in and out of a comment in the current buffer, the current selection in the Defs toolbar could move to a wrong element. This has been fixed. [tr#25342]
- Pressing Return after a RECORD statement within a method now indents correctly. [tr#25304]
- Due to a SlickEdit bug, compile error markers were not displaying next to the erroring line after a compile. This has been fixed. [tr#25076]
- When switching between active .NET Component projects in a single workspace, syn_set_sdkvars is now correctly run, which means that your Framework environment is properly set up for each project. [tr#25220]
- When doing a find in a file for a string that is in the file but above the current cursor location, a dialog box was displayed with the message "Default Dialog Font" instead of the expected "End of file reached. Continue searching at the beginning?" This was a SlickEdit bug, and has now been fixed. [tr#25301]
- Within a method, pressing Return after a RECORD statement no longer causes an incorrect indent. [tr#25304]
- When tagging a single file with over 2000 include files or any combination of include and import (such as the imports generated for certain .NET Framework assemblies by gennet), the tagging engine could crash. This has been fixed. [tr#25117]
- Files with a .def extension were not being tagged properly because .def files were no longer referred to .dbl files by default. We have fixed this problem. [tr#25073]
- We fixed a problem that could, in rare instances, cause SlickEdit to enter an infinite loop while tagging. [tr#25236]
- We fixed a problem that was causing symbol references to not be generated in the tag database, even with the Generate References option turned on. [tr#25141]
- We fixed a problem that was causing the tool name list in the Tools tab of the Project Properties dialog to occasionally become garbled. [tr#25104]
- When selecting the number of classes to generate for an interface in a .NET Component Project, any number containing a "1" (e.g., 10, 51, 100) would generate only one class. This has been fixed. [tr#25078]
- In the Component Information dialog, some of the text boxes failed to place the cursor to the right of the text when the entire field was highlighted and the right arrow key was pressed. This has been fixed. [tr#22740]
- Project open commands were not always being run upon opening a workspace. In particular, users may have noticed that the syn_set_sdkvars command to set the version of the .NET Framework was not being run in .NET Component Project. This has been fixed. [tr#25240]
- We now correctly render global structure and group fields in the field list of your local variables. [tr#25172]
- We fixed a problem that was causing Workbench to use the environment settings for the previous project instead of the active project if you open a workspace that includes multiple projects. [tr#25064]
- Visual editor
- xfServerPlus [Expand All xfServerPlus | Collapse All xfServerPlus]
- xfServerPlus
- xfServerPlus has been fixed to consume any partially read packets and to shut down when an error is trapped on a packet receive. This was sometimes causing xfpl to get stuck in an infinite loop. [tr#25127]
- When an ArrayList parameter was followed by an alpha or System.String parameter, the packet was not being correctly parsed, which resulted in the error "Invalid Synergy type sent. Delimiter does not line up parameter #". This has been fixed. [tr#25323]
- Method Definition Utility
- We added some additional validation messages to the import log file and corrected some existing messages. [tr#25249, tr#25246, tr#25245, tr#25246]
- When importing, if the method ID is invalid, the method name cannot be reported, so "Method Name =" will no longer display in the log file. [tr#25259]
- If an import is successful and there are no warning messages, no log file is created. Previously, a log file containing only header information was created. [tr#25231]
- If an export fails, and the XML file is not created, the message that displays now explicitly states that the file was not created. [tr#25089]
- When you run the verify utility from the command line, a message will now display informing you if there are warning or error messages and the location of the log file. Previously, the log file was created, but no message about it was displayed. [tr#25095]
- We updated error messages to refer to "structure collection" instead of just "collection". [tr#25091]
- xfServerPlus
- xfNetLink COM Edition
- xfNetLink .NET Edition
- In certain cases, Windows Server 2003 with the Scalable Networking Pack (which is included in SP2) could cause 10060 (timeout) errors on connect. We have corrected this problem. [tr#25387]
- We fixed a bug that was causing logging with multiple log files to fail after the first method call when there was not an explicit connect. [tr#25379]
- We fixed a bug that occurred when using full logging: When there were in-only parameters, the parameter name would be off by one in the output parameters section of the log. The data was correct for the output parameter, but the log showed the name of the first input parameter. [tr#25377]
- In rare instances, xfNetLink was unable to create a unique logfile name when multiple logfiles were generated. We have corrected this. Now, after the first attempt to generate a unique name by adding a date/time stamp to the end of the logfile name, we make an additional 18 attempts to add a date/time stamp plus a counter to the logfile name, and then one attempt to add clock ticks to the logfile name. If a unique name still cannot be created, logging will be turned off for the particular connection. [tr#25404]
- Synergy Language [Expand All Synergy Language | Collapse All Synergy Language]


