CodeGen Release Notes

 

V6.0.2 - 15th March 2024

We corrected an error in the implementation of the seven new structure expression tokens that were added in the previous release.

This version of CodeGen was built with Synergy/DE 12.3.1.1014 and requires a minimum of version 10.3.1b to operate.


V6.0.1 - 12th March 2024

We re-worked the CodeGen API to make it possible to concurrently open multiple repositories.

We added the structure expression tokens <STRUCTURE_ALPHA_FIELDS>, <STRUCTURE_DATE_FIELDS>, <STRUCTURE_DECIMAL_FIELDS>, <STRUCTURE_IMPLIED_FIELDS>, <STRUCTURE_INTEGER_FIELDS>, <STRUCTURE_TIME_FIELDS> and <STRUCTURE_USER_FIELDS>, allowing template developers to determine whether the current structure contains fields of a particular type.

This version of CodeGen was built with Synergy/DE 12.3.1.1014 and requires a minimum of version 10.3.1b to operate.


V5.9.9 - 12th October 2023

We added information to the documentation of the <KEY_NAME> expansion token relating to the case sensitivity of key names in the Synergy runtime.

We updated the behavior of the <PARAMETER_DEFINITION> and <PARAMETER_DEFINITION_NOARRAY> tokens to honor the use of the no custom pluralization option for structure parameters.

We added two new parameter loop expansion tokens <PARAMETER_MAXVALUE> and <PARAMETER_MINVALUE>.

We added a new tag loop expansion token <TAGLOOP_TAG_VALUE_QUOTED>.

This version of CodeGen was built with Synergy/DE 12.2.1.1003 and requires a minimum of version 10.3.1b to operate.


V5.9.8 - 19th July 2023

We improved the output of the <HARMONYCORE_PARAMETER_SAMPLE_DATA> token for date and boolean fields.

We improved support for using the @NOCODEGEN structure decoration when processing all structures (-s *).

This version of CodeGen was built with Synergy/DE 12.2.1.1003 and requires a minimum of version 10.3.1b to operate.


V5.9.7 - 8th June 2023

We added two new custom field loop expressions <IF REPLICATION_MORE> and <IF REPLICATION_NOMORE> to provide special support for logic in the CodeGen templates used by the SQL Replication environment.

We added new method loop expressions <DATE_PARAMETERS>, <DATE_PARAMETERS_IN> and <DATE_PARAMETERS_OUT> that can be used to determine whether the current method has date parameters.

This version of CodeGen was built with Synergy/DE 12.2.1.1003 and requires a minimum of version 10.3.1b to operate.


V5.9.6 - 7th June 2023

We added a new structure expansion token <STRUCTURE_FIRST_UNIQUE_KEY>.

We improved the way that nested groups are processed in some cases.

This version of CodeGen was built with Synergy/DE 12.2.1.1003 and requires a minimum of version 10.3.1b to operate.


V5.9.5 - 26th April 2023

We improved the error messages that are emitted when method catalog related tokens are used in invalid places.

We added a new Harmony Core expression token <IF HARMONYCORE_CUSTOM_FIELD_PARAM> and expansion token <HARMONYCORE_CUSTOM_FIELD_PARAM>

This version of CodeGen was built with Synergy/DE 12.2.1.1003 and requires a minimum of version 10.3.1b to operate.


V5.9.4 - 11th January 2023

We enhanced the expansion token <HARMONYCORE_BRIDGE_PARAMETER_DEFINITION> to better deal with int coerced to boolean.

We made it possible to use environment variables when specifying the path to a Synergy Method Catalog.

We enhanced the <FIELD_MAXVALUE> and <FIELD_MINVALUE> tokens to prevent out of range errors.

We added a new method loop expansion token <HARMONYCORE_SHORT_METHOD_NAME> which generates a mangled name for methods with long names.

We added a new field loop expression <IF IS_FIELD_RESERVED> that can be used to determine if the name of a field is a reserved word. Currently the reserved words are "globalrfa", "synergyrecord", "metadata" and "originalsynergyrecord".

This version of CodeGen was built with Synergy/DE 12.2.1.1003 and requires a minimum of version 10.3.1b to operate.


V5.9.3 - 3rd October 2022

We altered how we locate an optional Harmony Core customization file. As previously, we first look in the templates directory, but if not found there we now also look in the current directory.

This version of CodeGen was built with Synergy/DE 12.1.1.3278 and requires a minimum of version 10.3.1b to operate.


V5.9.2 - 3rd October 2022

We added a new method loop expansion token <HARMONYCORE_BRIDGE_RETURN_TYPE_CS> and two new parameter loop expansion tokens <HARMONYCORE_BRIDGE_PARAMETER_TYPE_CS> and <HARMONYCORE_BRIDGE_PARAMETER_TYPE_CS> to the Harmony Core Extensions library.

We added three new structure expansion tokens <STRUCTURE_TAG_AND_COUNT>, <STRUCTURE_TAG_OR_COUNT> and <STRUCTURE_TAG_PARTS>.

We changed some of the values produced by <KEY_ORDER> to be in line with the key segment TYPE keyword in the ISAM Definition Language.

We corrected an issue that was preventing the key segment loop expansion token <SEGMENT_IDXTYPE> from operating as intended. We also changed some of the values produced by this token so that they are now in line with the key segment TYPE keyword in the ISAM Definition Language.

We modified repository override file processing by making is possible to specify the location of the file. Previously the file was required to be in the templates folder.

This version of CodeGen was built with Synergy/DE 12.1.1.3278 and requires a minimum of version 10.3.1b to operate.


V5.9.1 - 30th August 2022

We fixed an issue that was causing the <HARMONYCORE_BRIDGE_PARAMETER_DATAOBJECT> token to insert incorrect values.

We added a new Harmony Core extension token <HARMONYCORE_FIELD_DATATYPE_VB>.

This version of CodeGen was built with Synergy/DE 12.1.1.3278 and requires a minimum of version 10.3.1b to operate.


V5.8.9 - 17th August 2022

We fixed an issue that was causing the <FIELD_CUSTOM_STRING_FUNCTION> token to insert incorrect values.

This version of CodeGen was built with Synergy/DE 12.1.1.3278 and requires a minimum of version 10.3.1b to operate.


V5.8.8 - 2nd August 2022

We fixed several potential null reference errors that could have occurred related to the use of tweaks.

This version of CodeGen was built with Synergy/DE 12.1.1.3278 and requires a minimum of version 10.3.1b to operate.


V5.8.7 - 7th July 2022

We fixed an issue with the Harmony Core parameter loop expansion token <HARMONYCORE_BRIDGE_PARAMETER_TYPE> which was not previously respecting the -ncp (no custom pluralization) command line option.

This version of CodeGen was built with Synergy/DE 12.1.1.3278 and requires a minimum of version 10.3.1b to operate.


V5.8.6 - 7th July 2022

We fixed an issue with the parameter loop replacement token <PARAMETER_DEFINITION_NOARRAY> which was previously creating invalid output for decimal fields.

This version of CodeGen was built with Synergy/DE 12.1.1.3278 and requires a minimum of version 10.3.1b to operate.


V5.8.5 - 6th June 2022

We altered the behavior of the <HARMONYCORE_FIELD_DATATYPE> expansion token so that it outputs a data type of string for YYYYPP and YYPP dates fields.

We added two new tweaks, SMC_CAMEL_CASE and SMC_PASCAL_CASE.

We added a new generic expression token <IF TWEAK_tweakname> that allows you to determine  whether a particular tweak is being used during code generation.

This version of CodeGen was built with Synergy/DE 12.1.1.3278 and requires a minimum of version 10.3.1b to operate.


V5.8.4 - 16th April 2022

We added two new Harmony Core custom field loop tokens, an expression <IF HARMONYCORE_CUSTOM_FIELD_VALIDATOR> and an expansion token <HARMONYCORE_CUSTOM_FIELD_VALIDATOR>.

We added support for the -ncp (no custom pluralization) command line option when using the parameter loop expansion tokens <PARAMETER_STRUCTURE_PLURAL> and <PARAMETER_STRUCTURE_NOPLURAL> and when using the relation loop expansion tokens <RELATION_TOSTRUCTURE_PLURAL> and <RELATION_TOSTRUCTURE_NOPLURAL>.

We corrected an issue with the processing of structure input files which was that if alias or file override names were not provided for a structure, their values would default to the name of the structure. This was not the original design intention, and it has now been corrected.

We extended the functionality of structure input files such that any data item after the -s command line option can now be a structure input file and the results are cumulative. But with this additional functionality comes an additional restriction which is that structure input files must now have a .json file extension.

This version of CodeGen was built with Synergy/DE 12.1.1.3278 and requires a minimum of version 10.3.1b to operate.


V5.8.3 - 24th February 2022

We fixed a serious bug (rookie mistake!) that was introduced in the previous release, which has now been removed from circulation. The issue caused a System.NullReferenceException to be thrown by RepositoryTools.CheckStructure method is almost all cases.

This version of CodeGen was built with Synergy/DE 12.0.1.3275 and requires a minimum of version 10.1.1 to operate.


V5.8.2 - 23rd February 2022

We added a new tweak named SQL_NAME_CONTIGUOUS_ARRAY that causes the <FIELD_SQLNAME> field loop expansion token to insert different field names when processing array fields.

This version of CodeGen was built with Synergy/DE 12.0.1.3275 and requires a minimum of version 10.1.1 to operate.


V5.8.1 - 2nd February 2022

We added the ability to define the minimum version of CodeGen that is required by your environment by setting the CODEGEN_MIN_VERSION environment variable.

We added support for generating sample data (JSON formatted) for structure parameters when using <PARAMETER_SAMPLE_DATA>.

We added a new method loop expansion token <METHOD_RETURN_SAMPLE_DATA>.

We corrected an issue that was preventing the -checkversion and other related operations from operating correctly.

We altered the <INTERFACE_NAME> token to support all case variations.

We changed the output of the <PARAM_TSTYPE> token to be consistent with the documentation by emitting structure names in camelCase rather than PascalCase.

We added a new mechanism for dealing with literal key segment values that require trailing spaces to be included as part of the literal value. This change can alter the output of the <SEGMENT_LITVAL> and <LITERAL_SEGMENT_VALUE> expansion tokens.

This version of CodeGen was built with Synergy/DE 12.0.1.3272 and requires a minimum of version 10.1.1 to operate.


V5.7.9 - 19th November 2021

We added the ability to specify the list of structures to process, as well as any alias and file overrides to be used with those structures, via a structure input file. This can significantly reduce the length of codegen command lines, removing the barrier that can be hit if you generate code from hundreds of structures, and makes the code generation environment much easier to manage.

This version of CodeGen was built with Synergy/DE 12.0.1.3272 and requires a minimum of version 10.1.1 to operate.


V5.7.8 - 19th November 2021

We added the ability to extend information defined in a Synergy method catalog by using a method catalog extensions file. This option is activated via a new command-line parameter -smcext. This in turn allows you to use custom expression and expansion tokens in interface loops, method loops and parameter loops. For additional information refer to <CUSTOM_INTERFACE_token>, <CUSTOM_METHOD_token>, <CUSTOM_PARAMETER_token>, <IF CUSTOM_INTERFACE_expression>, <IF CUSTOM_METHOD_expression> and <IF CUSTOM_PARAMETER_expression>.

We corrected an issue that was causing the custom Harmony Core token <HARMONYCORE_PARAMETER_SAMPLE_DATA> to produce incorrect data for parameters that were collections of structures.

This version of CodeGen was built with Synergy/DE 12.0.1.3272 and requires a minimum of version 10.1.1 to operate.


V5.7.7 - 21st October 2021

We added a new method loop expansion token <METHOD_RETURN_CSTYPE_XF> and a new parameter loop expansion token <PARAMETER_CSTYPE_XF>.

We added a new parameter loop expression <IF PARAM_NAME_IS_name>.

We added two new command-line options that can be used when processing metadata from a Synergy Method Catalog. The new options are -pexclude and -pinclude and they allow you to explicitly exclude or include certain parameters when processing parameter loops.

This version of CodeGen was built with Synergy/DE 12.0.1.3272 and requires a minimum of version 10.1.1 to operate.


V5.7.6 - 7th October 2021

We added two new field loop expansion tokens <MAPPING_FUNCTION> and <UNMAPPING_FUNCTION>, and two new field loop expressions <IF MAPPING_FUNCTION> and <IF UNMAPPING_FUNCTION>.

We fixed an issue with the implementation of the GROUP_PREFIX_ALWAYS tweak that was added in the previous release, but was not operational. The feature will now work as intended.

We fixed an issue that was previously causing the <FIELD_ORIGINAL_NAME_MODIFIED> token to return incorrect values for implicit group array fields.

This version of CodeGen was built with Synergy/DE 12.0.1.3272 and requires a minimum of version 10.1.1 to operate.


V5.7.5 - 16th September 2021

We added two new field loop expansion tokens, <FIELD_DESC_DOUBLE> and <FIELD_DESC_SINGLE> that can be used to resolve issues when double quote characters are present in a double-quoted string, or single quote characters are present in a single-quoted string.

We altered the behavior of the <ALTERNATE_KEY_LOOP_UNIQUE> such that any key segments that are also used as tag fields within the structure are excluded for the purposes of the comparison of segments between keys.

We added a new key segment loop expansion token named <SEGMENT_COMMA_NOT_LAST_NORMAL_FIELD>.

We altered the way that group field prefixes are appended to group fields. Previously, if a group field prefix existed for a group, the prefix would be automatically applied to the fields within the group. Now, the prefix is only applied if the "Use by compiler" option is also specified. This is consistent with the way that the Synergy compiler works.

In the unlikely event that the previous change affects your code, you can restore the previous behavior by using the new GROUP_PREFIX_ALWAYS tweak.

We fixed an internal issue in the RepositoryAPI library that was causing the Field.OriginalNameModified property to be unset when cloning one Repository field into another.

We fixed an issue that was previously causing the <FIELD_ORIGINAL_NAME_MODIFIED> token to return incorrect values for array fields within groups.

We altered the format of the output generated by the -version command line option to include the Synergy build number once it becomes available at compile time.

This version of CodeGen was built with Synergy/DE 12.0.1.3272 and requires a minimum of version 10.1.1 to operate.


V5.7.4 - 1st August 2021

We extended the use of the -mexclude and -minclude options so that in addition to being supported with the -smc and -interface options, they can also be used with the -smcstrs and -interface options. This makes it possible to exclude from processing any structured that are only referenced by methods that are being excluded, or to select for processing only structures that are referenced by specific methods in a method catalog interface. Previously it was only possible to constrain the list of structures to be processed to structures referenced by all methods in an interface.

We added a new tweak named SQLNAMEN$$ID.

We improved error reporting if a repository field exceeds D28 which can happen if a GROUP field is typed as decimal.

We improved error reporting when attempting to use method catalog tokens without method catalog meta-data.

We improved the processing of the <FIELD_TYPE> token to ensure that is produces appropriate values when BINARY, ENUM and STRUCT fields are processed. Until recently the presence of these fields in a structure would prevent code generation for the structure.

This version of CodeGen was built with Synergy/DE 11.1.1h and requires a minimum of version 10.1.1 to operate.


V5.7.3 - 9th July 2021

We made a slight change to the way that the <ALTERNATE_KEY_LOOP_UNIQUE> operates. Previously the loop would not compare alternate key segments with the primary key, but now it does. So the loop now processes any alternate keys that do not have identical key segments to the primary key, or any previous alternate keys.

We added a new special structure expression token <STRUCTURE_HAS_FIELD_name> that allows you to detect the presence or absence of a named field within the structure.

We improved the logic used when processing unique key loops and unique alternate key loops.

We fixed a problem with the implementation of the -pa command line option that would cause CodeGen to fail when used with an input file containing multiple structures.

We fixed a problem with the implementation of the -tweaks option which could result in a null reference exception in some rare circumstances.

We reviewed and updated all sample templates that ship with CodeGen to ensure they use the latest capabilities such as taking advantage of complex expressions to simplify template complexity resulting from nested expressions.

This version of CodeGen was built with Synergy/DE 11.1.1g and requires a minimum of version 10.1.1 to operate.


V5.7.2 - 10th April 2021

We improved the processing of several field loop expressions related to date and time fields, which were in some cases producing inaccurate results for nullable time fields.

We completely re-worked the implementation of code generation based on an xfServerPlus Synergy Method Catalog, bringing the implementation in line with the way that repository-based code generation works. Method catalog based code generation can now also be completely driven via the CodeGen API.

We added validation to ensure that method and parameter loop tokens can't be used when processing in -smcstrs mode, which is a repository-centric processing mode.

We completed the project of simplifying the structure of this documentation, making it easier to read, and easier to maintain.

This version of CodeGen was built with Synergy/DE 11.1.1g and requires a minimum of version 10.1.1 to operate.


V5.7.1 - 23rd March 2021

We extended the experimental support for TypeScript generation by adding a new method loop expansion token <METHOD_RETURN_TSTYPE> and a new parameter loop expansion token <PARAMETER_TSTYPE>.

We added a new parameter loop expression <IF FIRST_INSTANCE_OF_STRUCTURE2> that allows you to detect the first time a structure is referenced by any parameter in the current interface.

We added two new command line options -mexclude and -minclude that can be used in conjunction with the -smc and -interface options to either exclude or include methods from an interface that are to be processed by interface loops.

We modified the <INTERFACE_METHODS> and <INTERFACE_NAME> tokens so that they may also be used in parameter loops.

This version of CodeGen was built with Synergy/DE 11.1.1g and requires a minimum of version 10.1.1 to operate.


V5.6.9 - 11th March 2021

We added a new custom token <HARMONYCORE_PARAMETER_SAMPLE_DATA> to the Harmony Core extensions assembly.

We added a new custom token <HARMONYCORE_BRIDGE_PARAMETER_DATAOBJECT> to the Harmony Core extensions assembly.

We altered the implementation of <HARMONYCORE_BRIDGE_PARAMETER_DEFINITION> which was preciously not dealing correctly with array and collection parameters.

We removed the lower-case option from the <PARAMETER_DEFINITION> token.

We added a new token <PARAMETER_DEFINITION_NOARRAY>.

We added a new tweak named PARAMDEFSTR which causes the <PARAMETER_ATTRIBUTE>, <PARAMETER_DEFINITION>, <PARAMETER_DEFINITION_NOARRAY>, <PARAMETER_STRUCTURE>, <PARAMETER_STRUCTURE_NOPLURAL> and <PARAMETER_STRUCTURE_PLURAL> tokens to prefix structure names with "STR_".

We corrected an issue in the recently introduced <PARAMETER_ATTRIBUTE> token which was generating incorrect output for some types of fields.

We corrected an issue in the <PARAMETER_DEFINITION> token which was generating incorrect output for some types of fields.

We corrected an issue with the <SEGMENT_SPEC> token that was previously producing incorrect results for boolean fields.

We added experimental support for generating TypeScript code by adding the field loop tokens <FIELD_TSDEFAULT> and <FIELD_TSTYPE>. More work is required before these new capabilities will be fully effective.

We undertook some performance analysis work in the area of code generation from Synergy Method Catalogs, and as a result reworked some code to improve performance in this area. There is still more to be done, but generating code from method catalogs is now noticeably faster in most cases.

This version of CodeGen was built with Synergy/DE 11.1.1g and requires a minimum of version 10.1.1 to operate.


V5.6.8 - 20th February 2021

We added a new experimental feature which allows iterative processing of group fields within field loops, via the special field loop token <FIELD_GROUP_EXPAND>.

We added support for the YYYMMDDHHMISSUUUUUU date format for the <METHOD_RETURN_DATE_FORMAT> and <PARAMETER_DATE_FORMAT> tokens.

We added a new method loop token <METHOD_ATTRIBUTE> and a new parameter loop token <PARAMETER_ATTRIBUTE>.

We added several new output case variants of the <METHOD_NAME> and <PARAMETER_NAME> tokens.

We addressed an issue where when using the -smcstrs option in conjunction with the -interface option, all structures defined in the method catalog would be processed. Now only structures referenced my methods in the specified interface are processed. If no structures are referenced by the interface a warning is issued.

We corrected several issues with the output from the <PARAMETER_DEFINITION> token.

We added a new command-line option -tweaks which allows us to easily add support for things that allow you to make small customizations, or tweaks, to the way that CodeGen operates. The first tweak is called SQLNAMENO$ and allows you to customize the output of the <FIELD_SQLNAME> token by suppressing any $ characters that may be present in the name of a field.

We added a new custom structure expression <IF GLOBAL_ENTITY> to the Harmony Core extensions assembly.

This version of CodeGen was built with Synergy/DE 11.1.1g and requires a minimum of version 10.1.1 to operate.


V5.6.7 - 10th February 2021

We added a new command line option -iloop that can be used in conjunction with the -smc option to constrain the interfaces that are processed by interface loops to only those specified after the new -iloop option.

This version of CodeGen was built with Synergy/DE 11.1.1g and requires a minimum of version 10.1.1 to operate.


V5.6.6 - 5th February 2021

We fixed an issue with the field loop expressions <IF EXPLICIT_GROUP>, <IF GROUP> and <IF IMPLICIT_GROUP> which would previously evaluate to true for explicit group fields, but not explicit group overlay fields. Now it evaluates to true for both.

We fixed an issue that could cause the parsing of some complex expressions to incorrectly report a problem parsing <IF IF>.

This version of CodeGen was built with Synergy/DE 11.1.1f and requires a minimum of version 10.1.1 to operate.


V5.6.5 - 23rd January 2021

We added a new command-line option -ncp that suppresses the features of the <STRUCTURE_PLURAL> and <STRUCTURE_NOPLURAL> tokens, making them behave the same as <STRUCTURE_NAME>.

We modified the non-Synergy data types returned by field loop expansion tokens such as <FIELD_CSTYTPE>, <FIELD_OCTYPE>, <FIELD_SNTYPE>, <FIELD_SQLTYPE> and <FIELD_VBTYPE>for decimal fields with an overall size of over 18 characters. For example, previously <FIELD_CSTYPE> would return long and now returns decimal. And because any field larger than a D28 will overflow even decimal fields in .NET, we now throw an error if any such field is encountered in a structure.

We added a new type of key loop called a <PARTIAL_KEY_LOOP> that can be used to process subsets of the segments of multi-segment keys.

We added a new generic expansion token <DAYNAME>.

We added new field loop expansion tokens <FIELD_CLASS>, <FIELD_DISPLAY_LENGTH>, <FIELD_GROUP_MEMBER_PREFIX>, <FIELD_GROUP_STRUCTURE>, <FIELD_INPUT_JUSTIFICATION>, <FIELD_OVERLAY_FIELD>, <FIELD_OVERLAY_OFFSET>, <FIELD_OVERLAY_SPEC>, <FIELD_PAINTCHAR>, <FIELD_PAINTFIELD>, <FIELD_POSITION_COL>, <FIELD_POSITION_MODE>, <FIELD_POSITION_ROW>, <FIELD_REPORT_JUSTIFICATION>, <FIELD_SELECTIONS_COL>, <FIELD_SELECTIONS_HEIGHT>, <FIELD_SELECTIONS_ROW>, <FIELD_USER_TYPE>, <FIELD_VIEW_LENGTH>, <PROMPT_POSITION_COL>, <PROMPT_POSITION_MODE> and <PROMPT_POSITION_ROW>.

We renamed some field loop expression tokens that were introduced in the previous release, changing <IF UNFLATTENED_GROUP> to <IF GROUP>, <IF UNFLATTENED_EXPLICIT_GROUP> to <IF EXPLICIT_GROUP> and <IF UNFLATTENED_IMPLICIT_GROUP> to <IF IMPLICIT_GROUP>. We apologize if this breaks existing code, but if so that code was written in the last few days and we figured it would not be a big deal!

We added new field loop expression tokens <IF GROUP_MEMBER_PREFIX>, <IF GROUP_MEMBER_PREFIX_COMPILER>, <IF GROUP_OVERLAY>, <IF NAME_LINK>, <IF OVERLAY_OFFSET>, <IF PAINTFIELD> and <IF USER_TYPE>.

We changed the behavior of the field loop expansion tokens <FIELD_ENUMBASEVAL>, <FIELD_ENUMLENGTH> and <FIELD_ENUMSTEPVAL>. Previously these tokens would insert 0 for unenumerated fields. Now nothing is inserted for unenumerated fields.

We changed the behavior of the field loop expansion tokens <FIELD_SELECTIONS> and <FIELD_SELECTIONS1>. Previously these tokens would insert "" for fields with no selection list values. Now nothing is inserted for fields with no selection list values.

We added a new structure expansion token <STRUCTURE_TYPE>.

We added a new key loop expression <IF PRIMARY_KEY>.

We added a new command line option -pa which causes array fields not to be expanded into individual fields.
WARNING: This is an experimental feature and may currently cause unexpected side effects with some expression tokens. Please let us know if you encounter anomalies.

We enabled code generation for structure fields, enum fields and binary fields. Code generation for these types of fields was previously artificially blocked.
WARNING: This is an experimental feature. While the <FIELD_SPEC>and other basic field loop tokens will behave as intended, some tokens may not behave as expected with these types of fields. Please let us know if you encounter anomalies.

We removed the field loop expression tokens <IF COERCEBOOLEAN> and <IF NOCOERCEBOOLEAN>. There is a slight chance that this could break existing templates, in which case you can use <IF COERCE_BOOLEAN> and <IF NOT COERCE_BOOLEAN> as direct replacements.

We fixed an issue that was causing a failure during the processing of very complex expressions.

We fixed an issue that could cause counter tokens to be incorrectly processed as expressions.

We addressed a bug that was present in all versions of the RepositoryAPI whereby the RpsField.PaintCharacterSpecified property actually indicated whether the field was a paint field, not that a custom paint character was specified. This has now been corrected, and we have added a new property RpsField.PaintField (boolean).

We moved the implementation of several early Harmony Core specific expansion and expression tokens into the Harmony Core Extensions library.

We started what will be an ongoing process to reformat and improve this documentation, hopefully making it easier to use, and also easier to maintain. The most significant change is that expansion tokens were previously documented on individual pages within an overall category, but in the future will be documented on a single page for each category (for example all field loop expansion tokens). We also started to use manually entered and meaningful topic IDs, which will be a positive change when using the on-line documentation at https://codegen.synergex.com because URL's will now be based on meaningful names rather than generic topic numbers.

This version of CodeGen was built with Synergy/DE 11.1.1f and requires a minimum of version 10.1.1 to operate.


V5.6.4 - 16th December 2020

In addition to the existing command line option -g i that prevents the expansion of IMPLICIT groups into individual fields, we added a new command line option -g e that prevents the expansion of EXPLICIT groups. An implicit group is a group that has its members (fields and/or other groups) defined by another repository structure, where an explicit group is a group that has locally defined members.

We added new field loop expression tokens <IF UNFLATTENED_GROUP>, <IF UNFLATTENED_EXPLICIT_GROUP> and <IF UNFLATTENED_IMPLICIT_GROUP>.

We added a new structure expansion token <STRUCTURE_FILES> that evaluates to the number of repository file definitions that the current structure is assigned to.

This version of CodeGen was built with Synergy/DE 11.1.1f and requires a minimum of version 10.1.1 to operate.


V5.6.3 - 3rd December 2020

We added a key loop expression token named <IF LITERAL_SEGMENTS> that indicates whether the key being processed in a key loop includes one or more literal value segments.

This version of CodeGen was built with Synergy/DE 11.1.1f and requires a minimum of version 10.1.1 to operate.


V5.6.2 - 9th November 2020

We added a parameter loop expansion token named <HARMONYCORE_BRIDGE_PARAMETER_DEFINITION> to the Harmony Core Extensions library.

This version of CodeGen was built with Synergy/DE 11.1.1f and requires a minimum of version 10.1.1 to operate.


V5.6.1 - 30th October 2020

We added a new field loop expression <IF RELATION> that can be used to determine whether the current field is associated with the only segment of a relations FROM key. In other words, whether there is a direct outbound relation from the field to another structure.

We added a new generic expression <IF ENUMS> that can be used to determine whether any enumerations are defined in the repository.

We changed the way that CodeGen behaves while processing various types of loops. Previously, if certain types of loop had no supporting data, then an error would be generated and code generation would fail. For example, if a key loop was encountered when processing a structure that had no keys, code generation would fail. Now code generation will continue, and the loop in question will be ignored. The loops affected by this change are key loops, unique key loops, alternate key loops, unique alternate key loops, primary key blocks, unique key blocks, relation loops, enumeration loops, structure enumeration loops, and file loops.

We added a new command line option -elf which overrides the behavior described in the previous item, reverting to the original behavior of failing if a loop is encountered with no supporting data.

This version of CodeGen was built with Synergy/DE 11.1.1f and requires a minimum of version 10.1.1 to operate.


V5.5.9 - 21st October 2020

We added a new structure expression token called <IF STRUCTURE_DISPLAY_FIELD>.

We added a new relation loop expression token <IF TO_DISPLAY_FIELD>, and a new relation loop expansion token <RELATION_TOSTRUCTURE_DISPLAY_FIELD>.

This version of CodeGen was built with Synergy/DE 11.1.1f and requires a minimum of version 10.1.1 to operate.


V5.5.8 - 2nd October 2020

We added two new field loop expansion tokens <FIELD_ENUMBASEVAL> and <FIELD_ENUMSTEPVAL>.

This version of CodeGen was built with Synergy/DE 11.1.1f and requires a minimum of version 10.1.1 to operate.


V5.5.7 - 9th September 2020

We fixed a bug that could cause a null-reference exception in some situations when using some of the Harmony Core extensions associated with structure relations.

This version of CodeGen was built with Synergy/DE 11.1.1e and requires a minimum of version 10.1.1 to operate.


V5.5.6 - 26th August 2020

We added two new generic expression tokens to the Harmony Core extensions assembly. These are <HARMONYCORE_RELATIONS_ENABLED> and <HARMONYCORE_RELATIONS_VALIDATION_ENABLED>.

This version of CodeGen was built with Synergy/DE 11.1.1e and requires a minimum of version 10.1.1 to operate.


V5.5.5 - 5th June 2020

The primary reason for this release is that we realized that the installations for the last several releases were incorrectly signed, resulting in Windows SmartScreen reporting the installation as risky, and doing its level best to discourage you from proceeding. The affected versions of the installer were versions V5.5.1 to V5.5.4. But, apparently developers don't pay too much attention to Windows SmartScreen warnings, because I know there have been lots of CodeGen installations of the affected versions, and not a single person reported the issue! That's actually pretty scary, and as software developers we really should know better! With one exception (Jeff Greene) I don't know who you are, but YOU know who you are!

The issue turned out to be related to the fact that we have been working from home for the last three months, thanks to COVID-19, and the code-signing process on my home development system was silently selecting the wrong signing certificate! Sorry about that! Normality should be restored in the 5.5.5 installer, which is signed with the correct certificate.

We also made all method loop expansion tokens also available in parameter loops.

This version of CodeGen was built with Synergy/DE 11.1.1c and requires a minimum of version 10.1.1 to operate.


V5.5.4 - 5th May 2020

We deprecated the RequiresMatch feature that was added in the previous release, and replaced it with a more comprehensive mechanism involving a new ValidationMode property in the Harmony Core Customization File, and new custom relation loop expressions <IF VALIDATION_NONE>, <IF VALIDATION_VALUE_PRESENT>, <IF VALIDATION_ALWAYS> and <IF VALIDATION_CUSTOM_CODE>. The custom code validation mechanism is still to be defined, so is not operational at tis time. If you are using a Harmony Core Customization File we recommend reviewing the latest documentation and implementing ValidationMode instead of RequiresMatch.

This version of CodeGen was built with Synergy/DE 11.1.1c and requires a minimum of version 10.1.1 to operate.


V5.5.3 - 21st April 2020

We added support for two new types of key loop, specifically Unique Key Loops and Unique Alternate Key Loops. These are very similar to regular Key Loops and Alternate Key Loops, except that they exclude any keys which have identical key segments to a key that has already been processed. For example, if a structure has an ascending key named ZIP_ASCENDING that has a single field segment which is the ZIP_CODE field, and also has a descending key named ZIP_DESCENDING that also has a single field segment which is the ZIP_CODE field, the second key would be included in processing by the original loops, but will be excluded by the new loop structures.

In the Harmony Core Extensions library, when using a Harmony Core Customization File to override relation processing, we changed the default value of the RequiresMatch property.

This version of CodeGen was built with Synergy/DE 11.1.1c and requires a minimum of version 10.1.1 to operate.


V5.5.2 - 19th March 2020

We added support for Complex Expressions which allow you to use AND, OR and NOT within expression tokens, and also allows you to use parentheses to explicitly define precedence.

This version of CodeGen was built with Synergy/DE 11.1.1c and requires a minimum of version 10.1.1 to operate.


V5.5.1 - 16th March 2020

We added support for Multiple ELSE Clauses within expressions, which allow multiple expressions of the same type to be evaluated within a single template file construct. We have future plans to extend the capabilities of expressions even further, but for now this new capability can be used to simplify template file code.

We improved the error checking that occurs when a processing a Harmony Core customizations file.

When using the CodeGen API we have added the ability to specify lists of file overrides at the TaskSet level.

We corrected an error that was causing the <HARMONYCORE_BRIDGE_PARAMETER_TYPE> custom expansion token to return incorrect values for structure parameters.

This version of CodeGen was built with Synergy/DE 11.1.1c and requires a minimum of version 10.1.1 to operate.


V5.4.8 - 16th January 2020

We added new field loop expansion tokens <FIELD_CUSTOM_DBL_TYPE>, <FIELD_CUSTOM_SQL_TYPE>, <FIELD_CUSTOM_CONVERT_FUNCTION> and <FIELD_CUSTOM_STRING_FUNCTION>.

We added new field loop expression tokens <IF CUSTOM_DBL_TYPE>, <IF CUSTOM_SQL_TYPE>, <IF CUSTOM_CONVERT_FUNCTION> and <IF CUSTOM_STRING_FUNCTION>.

We added the ability to override some repository information via a JSON file. For more information please refer to Repository Override Files.

This version of CodeGen was built with Synergy/DE 11.1.1b and requires a minimum of version 10.1.1 to operate.


V5.4.7 - 31st December 2019

We enhanced the error message that is displayed if CodeGen fails to load an extensions assembly.

We enhanced the Harmony Core custom token <HARMONYCORE_BRIDGE_PARAMETER_TYPE> so that it now supports all token casing options.

We added two new custom loop utility expansion tokens specifically for use in the ISAM to SQL replication environment. These are <REPLICATION_REMAINING_EXCLUSIVE_MAX_n> and <REPLICATION_REMAINING_INCLUSIVE_MAX_n>.

We improved various error messages that can be displayed if CodeGen encounters problems processing relationships.

When using the CodeGen API we have added the ability to specify lists of structures and structure aliases at the TaskSet level.

We modified the Harmony Core Generator utility so that it now produces data model classes when generating code based on an xfServerPlus method catalog.

This version of CodeGen was built with Synergy/DE 11.1.1b and requires a minimum of version 10.1.1 to operate.


V5.4.6 - 1st November 2019

We fixed a bug in the processing of restricted relation loops which was causing a null reference exception to be thrown in some cases.

This version of CodeGen was built with Synergy/DE 11.1.1 and requires a minimum of version 10.1.1 to operate.


V5.4.5 - 24th October 2019

We added a new key segment loop expression <IF HARMONYCORE_CUSTOM_SEGMENT_DATATYPE> a new key segment loop expansion token <HARMONYCORE_SEGMENT_DATATYPE> to the Harmony Core extensions assembly.

When using the CodeGen API we have moved the Interface property from the CodeGenTaskSet class to the CodeGenTask class. This change may break your code!

We enhanced the Harmony Core Generator application.

This version of CodeGen was built with Synergy/DE 11.1.1 and requires a minimum of version 10.1.1 to operate.


V5.4.4 - 10th October 2019

We added a new relation loop variation called a restricted relation loop which differs from a regular relation loop in that in order for a relation to be included and processed the relations TO STRUCTURE must be included in the list of structures being processed. Relations whose TO STRUCTURE is not included in the list of structures being processed are ignored.

We added a new field loop expression <IF HARMONYCORE_CUSTOM_FIELD_DATATYPE> a new field loop expansion token <HARMONYCORE_FIELD_DATATYPE> to the Harmony Core extensions assembly.

This version of CodeGen was built with Synergy/DE 11.1.1 and requires a minimum of version 10.1.1 to operate.


V5.4.3 - 22nd September 2019

We added a new structure expression token <IF STRUCTURE_PII_FIELDS> that indicates whether any field in a structure has been tagged as containing PII data.

We added a new field loop expression token <IF PII_SCRUB> that indicates whether a field has been tagged as containing PII data and a new field loop expansion token <FIELD_PII_TYPE> which inserts the type of PII data a field contains.

We added a new field loop expression token <IF USED_IN_RELATION>.

We added a new custom field loop expression token <IF HARMONYCORE_CUSTOM_FIELD> and a new custom field loop expansion token <HARMONYCORE_CUSTOM_FIELD_TYPE> to the Harmony Core extensions assembly.

We added a new tag loop expansion token <TAGLOOP_FIELD_SNTYPE> and relation key segment loop expansion token <LITERAL_SEGMENT_SNTYPE>.

As the Symphony Framework is no longer maintained by Synergex we no longer distribute the Symphony Framework CodeGen Extensions assembly with CodeGen.

This version of CodeGen was built with Synergy/DE 11.1.1 and requires a minimum of version 10.1.1 to operate.


V5.4.2 - 22nd August 2019

IMPORTANT: We updated the minimum required version of the .NET Framework from 4.5.2 to 4.7.2 so you may need to apply an update before installing this version. For information on how to check the .NET Framework version click HERE. Do download a new version of the .NET Framework click HERE.

We altered the way that <FIELD_MINVALUE> works for required decimal and integer fields. Previously if a field did not allow negative values then the 0 would be returned even if the field was marked as required. Now if a field is marked as required a minimum value of 1 is returned.

We added three new custom relation loop expressions <IF TO_ONE>, <IF TO_MANY> and <IF REQUIRES_MATCH> to the Harmony Core extensions assembly.

We enhanced the CreateFile utility by adding the ability to create and optionally load data into multiple ISAM or RELATIVE data files based on instructions defined in a JSON file.

We added a new field loop expansion token named <FIELD_LDESC2>.

There were no Symphony Framework CodeGen Extensions changes in this release.

This version of CodeGen was built with Synergy/DE 11.0.3 and requires a minimum of version 10.1.1 to operate.


V5.4.1 - 22nd July 2019

We added a new command line option -smcstrs that allows you to determine the list of structures to be processed as all structures listed in a Synergy Method Catalog export file.

We corrected an error that was causing incorrect file details to be returned when the file overrides (-fo) option was used in conjunction with the multiple structures (-ms) mode and when a structure being processed was assigned to more than one file definition. The -fo option was being ignored and the first assigned file was always being returned.

We changed the behavior of the parameter loop expansion token <PARAMETER_SAMPLE_DATA> to make it not escape double quote characters with backward slash characters and we added a new token <PARAMETER_SAMPLE_DATA_ESCAPED> to allow the previous behavior to be retained.

We added a new method loop expression token <IF STRUCTURE_PARAMETERS> that allows you to determine whether the method being processed has any structure parameters.

There were no Symphony Framework CodeGen Extensions changes in this release.

This version of CodeGen was built with Synergy/DE 11.0.2 and requires a minimum of version 10.1.1 to operate.


V5.4.0 - 3rd July 2019

We added support for custom interface, method and parameter loop expansion and expression tokens.

We added a new method parameter loop expression token <IF DATEORTIME>.

We added new method loop expression tokens <IF IN>, <IF INOUT>, <IF IN_OR_INOUT>, <IF OUT>, <IF OUT_OR_INOUT>, <IF RETURNS_DATA> and <IF VOID_SUBROUTINE>.

We added a new parameter loop expansion tokens <PARAMETER_NUMBER> and <PARAMETER_SAMPLE_DATA>.

We added new parameter loop expression tokens <IF MORE_IN_OR_INOUT> and <IF MORE_OUT_OR_INOUT>.

We added a new custom method loop expansion token <HARMONYCORE_BRIDGE_RETURN_TYPE> and a new custom parameter loop expansion token <HARMONYCORE_BRIDGE_PARAMETER_TYPE> to the Harmony Core extensions assembly.

We altered the mechanism by which we ensure that the <FIELD_SQLNAME> token produces unique field names when the underlying field names differ only by the position of underscore characters. We previously appended one or more $ characters to the end of resulting duplicate field names. We now append "2", "3", "4" and so on to the end of duplicate names.

We enhanced debug logging to display a list of all defined values that were set via the -define command line option.

When using the CodeGen API programatically we changed the CodeGenTaskSet.SaveToFile() and CodeGenTaskSet.LoadFromFile() methods to save to and load from a JSON formatted file instead of the previous XML formatted file. We believe that the only impact of this change will be if you are using the CodeGen API (instead of the CodeGen command line interface) to generate your code, and we are not aware of anyone doing that. If you are impacted by this change please contact Synergex for assistance.

We added a new command line option -save which causes CodeGen to save the configuration options used to generate code to a JSON formatted code generation instructions file.

We added a new command line option -input which allows a previously saved code generation instructions file re-executed in order to repeat the same code generation process that was previously used.

We added a new optional utility application named the Harmony Core Generator utility. This desktop application is only installed if the optional Harmony Core Extensions are selected during installation, and can be used to simplify the code generation process when developing RESTful web services with the Harmony Core framework.

When processing xfServerPlus method catalog export files via the -smc command line option we added a check for old (pre V8.3) method catalog export files which don't contain values for the now required "routine name" property for each method. If you encounter an old method catalog export file it can be converted to the latest format by importing and exporting using the Method Definition Utility.

There were no Symphony Framework CodeGen Extensions changes in this release.

This version of CodeGen was built with Synergy/DE 11.0.2 and requires a minimum of version 10.1.1 to operate.


V5.3.16 - 15th April 2019

We moved the <IF ONE_TO_MANY>, <IF ONE_TO_ONE>, <IF ONE_TO_MANY_TO_ONE>, <IF ONE_TO_ONE_TO_ONE> and <IF MANY_TO_ONE_TO_MANY> relation loop expression tokens out of the main CodeGen product and into the Harmony Core Extensions assembly. These expression tokens have become pretty specific to Harmony Core use cases so we thought it more appropriate to ship and document them there.

In the Harmony Core Customization File we changed CustomRelationNames to CustomRelations and we added additional information about each relation.

In the Harmony Core custom extensions code we improved the logic that determines the type of relation being processed.

There were no Symphony Framework CodeGen Extensions changes in this release.

This version of CodeGen was built with Synergy/DE 10.3.3g and requires a minimum of version 10.1.1 to operate.


V5.3.15 - 22nd March 2019

We no longer remove $ characters when converting output values to PascalCase or camelCase.

We now ensure that duplicate <FIELD_SQLNAME> values can not be produced if the names of two or more fields in a structure differ only by the placement of underscore characters. To ensure uniqueness we append $ character(s) to the end of the names.

We added a new custom relation loop expansion tokens <HARMONYCORE_RELATION_NAME> and <HARMONYCORE_FROM_RELATION_NAME> to the Harmony Core extensions assembly.

We added a new mechanism to allow for the customization of various Harmony Core extensions via an optional file named HarmonyCoreCustomization.json which can be placed in the templates folder.

We added a new key segment loop expansion token <SEGMENT_TAG_VALUE> and a new key segment loop expression token <IF SEG_TAG_EQUAL>.

We fixed an issue in the RpsInfo utility that could cause it to crash if the repository environment variables were incorrectly configured. Now the utility should report "Failed to open repository".

There were no Symphony Framework CodeGen Extensions changes in this release.

This version of CodeGen was built with Synergy/DE 10.3.3g and requires a minimum of version 10.1.1 to operate.


V5.3.14 - 2nd February 2019

We added a new extensions assembly containing custom expansion and expression tokens used when developing with Harmony Core.

We added a new field loop expression token <IF FIRST_UNIQUE_KEY_SEGMENT>.

There were no Symphony Framework CodeGen Extensions changes in this release.

This version of CodeGen was built with Synergy/DE 10.3.3f and requires a minimum of version 10.1.1 to operate.


V5.3.13 - 18th January 2019

We added a new generic expansion token <TIMEZONE_OFFSET>.

We added support for Custom Key Segment Loop Expressions. 

There were no Symphony Framework CodeGen Extensions changes in this release.

This version of CodeGen was built with Synergy/DE 10.3.3f and requires a minimum of version 10.1.1 to operate.


V5.3.12 - 13th January 2019

We added a new structure expansion token <FILE_ISAMC_SPEC> and a new key loop expansion token <KEY_ISAMC_SPEC>.

We improved the way that the <IF ONE_TO_MANY>, <IF ONE_TO_ONE>, <IF ONE_TO_MANY_TO_ONE>, <IF ONE_TO_ONE_TO_ONE> and <IF MANY_TO_ONE_TO_MANY> relation loop expression tokens operate when processing relations that are based on keys that include literal segments for structure tag expressions.

We added a new command line option -as which in some circumstances can provide an alternate way of achieving structure aliasing based on the alternate name (or ODBC table name) of the structure when assigned to the first file definition.

There were no Symphony Framework CodeGen Extensions changes in this release.

This version of CodeGen was built with Synergy/DE 10.3.3f and requires a minimum of version 10.1.1 to operate.


V5.3.11 - 24th December 2018

We added support for iterating through a structures foreign keys only via <FOREIGN_KEY_LOOP>.

There were no Symphony Framework CodeGen Extensions changes in this release.

This version of CodeGen was built with Synergy/DE 10.3.3f and requires a minimum of version 10.1.1 to operate.


V5.3.10 - 20th December 2018

CodeGen Release Notes

We added a new command line option -af which causes field names to be switched to the alternate name if present. If no alternate name is defined then the original field name is used. This change impacted a lot of code and it is possible that more work may be needed to ensure that everything works correctly when alternate field names are being used. For this reason we are currently considering this to be an experimental feature which should be used with caution.

We added a new field loop expansion token <FIELD_ORIGINAL_NAME_MODIFIED>.

We improved the processing of relation loops when the structure being targeted by a relation is not included in the list of structures currently being processed.

This version of CodeGen was built with Synergy/DE 10.3.3f and requires a minimum of version 10.1.1 to operate.

Symphony Framework Components

We no longer distribute the Symphony Orchestrator utility with CodeGen. If you still use that utility please contact us and we will make the source code available to you.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.3.9 - 17th December 2018

CodeGen Release Notes

Improved <RELATION_TOSTRUCTURE>, <RELATION_TOSTRUCTURE_NOPLURAL> and <RELATION_TOSTRUCTURE_PLURAL> by adding support for structure aliasing. 

This version of CodeGen was built with Synergy/DE 10.3.3f and requires a minimum of version 10.1.1 to operate.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.3.8 - 26th October 2018

CodeGen Release Notes

We added new structure expression tokens <IF GET_ALL_ENDPOINT>, <IF GET_ENDPOINT>, <IF POST_ENDPOINT>, <IF PUT_ENDPOINT>, <IF PATCH_ENDPOINT>, <IF DELETE_ENDPOINT>, <IF ALTERNATE_KEY_ENDPOINTS> and <IF PROPERTY_ENDPOINTS>. These expressions are primarily intended for use when building REST APIs that expose Synergy data as they are intended to provide a mechanism to suppress the creation of certain types of operation on a structure by structure basis.

We added new relation loop expression tokens <IF TO_STRUCTURE_INCLUDED> and <IF TO_STRUCTURE_NOT_INCLUDED>.

This version of CodeGen was built with Synergy/DE 10.3.3f and requires a minimum of version 10.1.1 to operate.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.3.7 - 16th October 2018

CodeGen Release Notes

We corrected an issue that was causing field loop expansion tokens and field loop expression tokens to be incorrectly processed when a key segment loop was embedded within a key loop, which was in turn embedded within a field loop. When field loop tokens are used within the context of a key segment loop they are supposed to be processed in the context of the field associated with the current key segment being processed by the key segment loop that immediately contains the tokens. However they were actually being processed in the context of the current field in the outer field loop. The nest key loops within field loops was only recently added, so the likelihood of this change impacting existing templates is extremely low.

This version of CodeGen was built with Synergy/DE 10.3.3f and requires a minimum of version 10.1.1 to operate.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.3.6 - 23rd September 2018

CodeGen Release Notes

We added a new field loop expansion token <FIELD_SAMPLE_DATA_NOQUOTES>.

We added a new field loop expansion token <HARMONY_ROLES>.

We added a new field loop expression tokens <IF HARMONY_ROLES>.

This version of CodeGen was built with Synergy/DE 10.3.3f and requires a minimum of version 10.1.1 to operate.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.3.5 - 27th August 2018

CodeGen Release Notes

We enhanced the capabilities relating to inserting GUID values into code. A new <GUID> token always generates a unique GUID value every time it is referenced, and there are now tokens to allow you to determine whether braces should surround GUID values or not. In addition GUID values can now be inserted in upper or lower case.

We added two new variants of the loops that allow the iteration through keys within a relation loop. The two new loop constructs are the restricted from key segment loop and restricted to key segment loop.

We added new field loop expression tokens <IF KEYSEGMENT>, <IF NOTKEYSEGMENT> and <IF ONLY_PKSEGMENT>.

We modified the behavior of the <FIELD_SAMPLE_DATA> token to first look for sample data that is defined in the fields long description field using a SAMPLE_DATA=value; format.

We fixed an issue where loop utility tokens like <IF LAST> and <,> would not work properly if foreign keys were present.

We fixed an issue where a line terminator would be incorrectly removed from generated code at the end of the last iteration of a loop if the last token in the loop was the end of an expression token.

This version of CodeGen was built with Synergy/DE 10.3.3e and requires a minimum of version 10.1.1 to operate.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.3.4 - 23rd July 2018

CodeGen Release Notes

We added two new loop constructs called relation loop from key segment loops and relation loop to key segment loops. These loops can be used to iterate through the key segments associated with a relations from and to keys respectively.

We improved the accuracy of the -e command line option, which now reports the full command line used to start CodeGen.

We fixed a problem with the recently added <IF FIRST_UNIQUE_KEY> expression, which was incorrectly selecting the key BEFORE the first unique key. This has now been corrected.

We renamed some of the recently added relation loop expression tokens.

This version of CodeGen was built with Synergy/DE 10.3.3e and requires a minimum of version 10.1.1 to operate.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.3.3 - 12th July 2018

CodeGen Release Notes

We added the following new structure tokens:

<STRUCTURE_NOPLURAL>

<STRUCTURE_PLURAL>

We added the following new field loop tokens:

<FIELD_SAMPLE_DATA>

We added the following new key loop tokens:

<IF FIRST_UNIQUE_KEY>

We added the following new relation loop tokens:

<RELATION_TOSTRUCTURE_NOPLURAL>

<RELATION_TOSTRUCTURE_PLURAL>

<IF ONE_TO_MANY>

<IF ONE_TO_ONE>

<IF ONE_TO_MANY_TO_ONE>

<IF ONE_TO_ONE_TO_ONE>

<IF MANY_TO_ONE_TO_MANY>

We added the following new tag loop tokens:

<TAGLOOP_FIELD_CSTYPE>

We added the following new loop utility tokens:

<,AND>

<,OR>

We added the following new parameter loop tokens:

<PARAMETER_DIRECTION_PAD>

<PARAMETER_STRUCTURE_NOPLURAL>

<PARAMETER_STRUCTURE_PLURAL>

<IF COLLECTION>

<IF COLLECTION_ARRAY>

<IF COLLECTION_HANDLE>

<IF COLLECTION_ARRAYLIST>

<IF FIRST_INSTANCE_OF_ENUM>

<IF FIRST_INSTANCE_OF_STRUCTURE>

<IF IN_OR_INOUT>

<IF OUT_OR_INOUT>

We improved error reporting related to tokens that are found in invalid locations such that the line number and character position of the token are now reported.

We corrected the following issues that were present in the previous release:

An issue that caused the <FIELD_NAME> token to omit the required period between group and group member identifiers in some cases.

Issues that caused the <IF COLLECTION> and <IF DECIMAL> parameter loop expressions to operate incorrectly.

This version of CodeGen was built with Synergy/DE 10.3.3e and requires a minimum of version 10.1.1 to operate.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.3.2 - 25th May 2018

CodeGen Release Notes

We added back support for the field and key segment loop expansion token <IF CORECEBOOLEAN> because it broke more templates than expected.

We added a new structure expansion token <FILE_PORTABLE_INT_SPECS>.

We added a new structure expression tokens <IF FILE_CHANGE_TRACKING>, <IF FILE_COMPRESSION>, <IF FILE_PORTABLE_INT_SPECS>, <IF FILE_STATIC_RFA>, <IF FILE_STORED_GRFA> and <FILE_TERABYTE>.

We added a new key segment loop expansion token <SEGMENT_ORDER_CODE>.

We changed the values returned by the <SEGMENT_TYPE> expansion token for auto sequence and auto-timestamp key segments. This change could break your existing template code, but we decided to proceed with the breaking change because in all likelihood the token has not been used yet.

This version of CodeGen was built with Synergy/DE 10.3.3e and requires a minimum Synergy version of 10.1.1 to operate.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.3.1 - 18th May 2018

CodeGen Release Notes

We added a new <|> loop utility expansion token.

We corrected an issue with the <PARAMETER_SIZE> token which will now insert the correct value for the size of structure parameters. The token previously inserted a value of 0 for structure parameters.

This version of CodeGen was built with Synergy/DE 10.3.3e and requires a minimum Synergy version of 10.1.1 to operate.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.3.0 - 14th May 2018

CodeGen Release Notes

We added the ability to generate code based on metadata defined in a Synergy Method Catalog. This includes the introduction of new interface loops, method loops and parameter loops, each with associated expansion and expression tokens. The feature is accessed via new -smc and -interface command line options.

We added several new token case variations to the <KEY_NAME>, <SEGMENT_STRUCTURE>, <RELATION_FROMKEY>, <RELATION_TOKEY> and <RELATION_TOSTRUCTURE> tokens.

We significantly enhanced the capabilities of relation loops by adding many new relation loop expansion tokens and relation loop expression tokens.

We corrected an issue that was causing structure enumeration loops to operate incorrectly.

We changed the field loop and key segment loop expression <IF CORECEBOOLEAN> to <IF CORECE_BOOLEAN> for improved consistency with similar expressions in other loops. This change could break your existing template code, but CodeGen will terminate with an error message if it encounters the old form of the expression.

We fixed a crash that would occur if you attempted to declare a user-defined expansion token with the same name as a built-in expansion token.

We reviewed and re-organized the documentation to make it easier to access information with less clicks.

This version of CodeGen was built with Synergy/DE 10.3.3e and requires a minimum Synergy version of 10.1.1 to operate.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.2.7 - 6th March 2018

CodeGen Release Notes

We fixed an issue that was preventing all loop utility expression tokens and also the <REMAINING_EXCLUSIVE_MAX_value> and <REMAINING_INCLUSIVE_MAX_value> loop utility expansion tokens from operating correctly inside nested loops.

We made some minor internal changes to prepare for building and deploying CodeGen on non-Windows platforms in the future using .NET Core.

This version of CodeGen was built with Synergy/DE 10.3.3d and requires a minimum Synergy version of 10.1.1 to operate.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.2.6 - 29th January 2018

CodeGen Release Notes

We added a new structure expression token <IF STRUCTURE_MAPPED> that allows you to generate conditional code for mapped structures.

We corrected an issue that was causing the field loop expression tokens <IF DATE_YYYYMMDD> and <IF DATE_YYMMDD> to fail to evaluate as true for nullable date fields.

This version of CodeGen was built with Synergy/DE 10.3.3d and requires a minimum Synergy version of 10.1.1 to operate.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.2.5 - 16th January 2018

CodeGen Release Notes

We added four new structure expression tokens <IF STRUCTURE_ASCII>, <IF STRUCTURE_ISAM>, <IF STRUCTURE_RELATIVE> and <IF STRUCTURE_USER_DEFINED>. These expression tokens can make it significantly easier to create template files that can create appropriate output based on the type of data file that is associated with the structure being processed.

This version of CodeGen was built with Synergy/DE 10.3.3d and requires a minimum Synergy version of 10.1.1 to operate.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.2.4 - 12th January 2018

CodeGen Release Notes

We fixed a problem that was occurring when the <FIELD_MAXVALUE> replacement token was used in conjunction with decimal or integer fields that use a UI Toolkit Window-script based selection window, and in conjunction with the -ws command line option. The token would previously insert an incorrect value that was equal to the enumerated base value minus the enumerated step value, but without regard to the number of selections present in the window. This behavior has been corrected.

We Fixed a problem that was preventing UI Toolkit window script files from being parsed correctly.

This version of CodeGen was built with Synergy/DE 10.3.3d and requires a minimum Synergy version of 10.1.1 to operate.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.2.3 - 1st December 2017

CodeGen Release Notes

We added a new experimental utility to the distribution. The Code Converter utility can be used to automate bulk searches within and edits to an applications code. This utility is in a usable form but is still a work in progress and is likely to undergo substantial changes as it evolves.

We added two new utility routines (IsDate.dbl and IsTime.dbl) that are referenced by some of the supplied sample template files.

We corrected a regression that was introduced in the previous release which caused the field loop expansion token<FIELD_SQL_ALTNAME> not to default to using the actual field name if no alternate name was present.

We performed an extensive code review and cleanup, updating the code in several areas to take advantage of new features available in the Synergy compiler, and also improving efficiency.

We fixed an issue in the CreateFile utility that would result in an unhanded exception in the event that invalid key information was passed to XCALL ISAMC.

We fixed an issue that was causing the CreateFile utility -r (replace file) option to fail, an existing file would not be replaced even if the -r option was specified.

We made some minor code changes to allow CodeGen to be built in a .NET Core environment and we hope to be able to leverage .NET Core to once again support the use of CodeGen on non-Windows systems (starting with Linux) in the near future.

This version of CodeGen was built with Synergy/DE 10.3.3d and requires a minimum Synergy version of 10.1.1 to operate.

Symphony Framework Components

We no longer ship the Symphony Framework sample templates with CodeGen. You can obtain the latest Symphony Framework templates from the Symphony Framework web site.

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.2.2 - 25th October 2017

CodeGen Release Notes

We added a new field loop expansion token <FIELD_FORMATSTRING> which can be used to access a fields format string value.

We added a new command-line option -utpp which instructs CodeGen to treat user-defined tokens as preprocessor tokens. This means that user-defined tokens are expanded much earlier during the initial tokenization phase, which in turn means that other expansion tokens may be embedded within the values of user-defined tokens.

We removed the RpsBrowser utility from the distribution; it was an experimental project that didn't really takeoff.

This version of CodeGen was built with Synergy/DE 10.3.3d and requires a minimum Synergy runtime version of 10.1.1.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework template file changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.2.1 - 24th August 2017

CodeGen Release Notes

We added several a new generic expression token <IF COUNTER_n_op_value> that allow you to write conditional template code based on testing the current value of the two internal template counters against a simple numeric expression. For example you can test whether counter 1 has reached a value of 5 with the expression token <IF COUNTER_1_GE_5>.

We added several new loop utility expression tokens that allow you to write conditional template code based on the total number of items that will be processed by a loop, how many items have already been processed, and how many remain, either including or excluding the current item. The new expressions are <IF PROCESSED_EXCLUSIVE_op_n>, <IF PROCESSED_INCLUSIVE_op_n>, <IF REMAINING_EXCLUSIVE_op_n>, <IF REMAINING_INCLUSIVE_op_n> and <IF TOTAL_ITEMS_op_n>. An example of using these new tokens is:

<FIELD_LOOP>
    <IF TOTAL_ITEMS_LE_100>
        Code for small loops
    <ELSE>
        Code for larger loops
    </IF TOTAL_ITEMS_LE_100>
</FIELD_LOOP>

We added several new loop utility expansion tokens that allow you to determine the total number of items that will be processed by a loop, how many items have already been processed, and how many remain, either including or excluding the current item. The new expressions are <PROCESSED_EXCLUSIVE>, <PROCESSED_INCLUSIVE>, <REMAINING_EXCLUSIVE>, <REMAINING_EXCLUSIVE_MAX_n>, <REMAINING_INCLUSIVE>, <REMAINING_INCLUSIVE_MAX_n> and <TOTAL_ITEMS>.

We added a new file header token <REQUIRES_CODEGEN_VERSION> that allows you to specify that a minimum version of CodeGen is required in order to successfully process a template.

We made a minor correction to the documentation of the -f l command line option. The documentation previously stated that this option caused fields marked as "Excluded by Language" to be EXCLUDED from field loop processing, but actually such fields are excluded by default. The -f l command line option actually suppresses this behavior, causing such fields to be INCLUDED in field loop processing.

This version of CodeGen was built with Synergy/DE 10.3.3c and requires a minimum Synergy runtime version of 10.1.1.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework template file changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.2.0 - 30th June 2017

CodeGen Release Notes

We added two file loop expansion tokens <FLOOP_ODBC_NAME> and <FLOOP_RPS_NAME>.

This version of CodeGen was built with Synergy/DE 10.3.3c and requires a minimum Synergy runtime version of 10.1.1.  

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework template file changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.1.9 - 12th May 2017

CodeGen Release Notes

We made a slight change to the way that the multiple structures command line option (-ms) is processed, allowing it to be used when only one repository structure is specified. This allows for templates that use the <STRUCTURE_LOOP> construct to be used when only one structure is being processed.

We fixed an issue that was causing the <FIELD_SPEC> token to produce incorrect values for auto-sequence and auto-timestamp fields. Previously the value 8 would be inserted, now the correct value i8 is inserted.

We added two new structure expansion tokens <FILE_ODBC_NAME> and <FILE_RPS_NAME> that expand to the repository ODBC table name and repository file definition name of the first file definition that is assigned to the structure currently being processed.

This version of CodeGen was built with Synergy/DE 10.3.3c and requires a minimum Synergy runtime version of 10.1.1.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework template file changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.1.8 - 23rd March 2017

CodeGen Release Notes

We added a new generic expansion token <DATABASE> that can be used to insert the name of the relational database currently being targeted.

We added three new generic expression tokens <IF DATABASE_MYSQL>, <IF DATABASE_POSTGRESQL> and <IF DATABASE_SQLSERVER> that can be useful when developing database agnostic template files.

We enhanced the <REQUIRES_OPTION> file header token by adding a new option TF which allows a template designer to specify that the template-defined folders feature must be enabled.

This version of CodeGen was built with Synergy/DE 10.3.3b and requires a minimum Synergy runtime version of 10.1.1.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework template file changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.1.7 - 7th February 2017

CodeGen Release Notes

We added experimental support for generating code for MySQL and PostgreSQL databases by adding a new -database command line option. This option allows you to specify a target database type and affects the SQL-compatible data types that are generated by the field loop expansion token <FIELD_SQLTYPE>. If this option is not used then the default database continues to be Microsoft SQL Server, but this default may be changed via the new environment variable CODEGEN_DATABASE_TYPE. Before considering this support final we would appreciate any feedback from developers working with MySQL or PostgreSQL about whether we have chosen appropriate data type mappings. A list of these data type mappings can be found here.

We changed the SQL Server data type mappings for D6 (YYMMDD) dates from DECIMAL(6) to DATE.

We changed the SQL Server data type mappings for D6 (YYYYPP) and D4 (YYPP) period numbers from CHAR(6) and CHAR(4) to DECIMAL(6) and DECIMAL(4) respectively.

We changed the SQL Server data type mappings for nullable time (HHMMSS and HHMM) from DECIMAL(6) and DECIMAL(4) to TIME(0).

This version of CodeGen was built with Synergy/DE 10.3.3b and requires a minimum Synergy runtime version of 10.1.1.

Symphony Framework Components

Symphony Orchestrator was upgraded to use Symphony Framework V3.2.11.

There were no Symphony Framework template file changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.1.6 - 7th November 2016

CodeGen Release Notes

We modified the way that key loops are processed so that if a repository structure has a mixture of access keys and foreign keys defined, the foreign keys are ignored when processing key loops.

We added a new key loop expression <IF FIRST_SEG_NOCASE>.

We added new field loop expressions <IF AUTO_SEQUENCE>, <IF AUTO_TIMESTAMP>, <IF AUTO_TIMESTAMP_CREATED> and <IF AUTO_TIMESTAMP_UPDATED> which can be used to determine if fields are defined as auto sequence or auto time-stamp fields.

We added new key loop expressions <IF AUTO_TIMESTAMP_CREATED> and <IF AUTO_TIMESTAMP_UPDATED>.

We added new key segment loop expressions <IF SEG_AUTO_TIMESTAMP_CREATED> and <IF SEG_AUTO_TIMESTAMP_UPDATED>.

We changed the behavior of the field loop expansion token <FIELD_TYPE_NAME>, which will now report the new values AUTO SEQUENCE or AUTO TIMESTAMP when auto sequence or auto time-stamp fields are encountered. Previously the token would have returned a generic value of INTEGER for both.

This version of CodeGen was built with Synergy/DE 10.3.3a and requires a minimum Synergy runtime version of 10.1.1.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework template file changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.1.5 - 6th September 2016

CodeGen Release Notes

We added a new structure expression <IF STRUCTURE_HAS_UNIQUE_PK>.

We fixed a problem that was preventing loop utility expressions from operating correctly.

We fixed a problem that was causing the <IF LAST> field loop utility expression to operate incorrectly in primary key blocks.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework template file changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.1.4 - 29th July 2016

CodeGen Release Notes

We changed the SQL data mappings for time (HHMMSS and HHMM) fields from DECIMAL(n) to TIME(0). This will result in a change of output from the <FIELD_SQLTYPE> token. If this causes you any issues you can revert to the previously produced values by using custom data type mapping.

The CodeGen installation was altered so that the changes to PATH occur immediately after the installation completes. This means that it is no longer necessary to reboot after installing CodeGen on a system for the first time.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework template file changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.1.3 - 30th June 2016

CodeGen Release Notes

Added a new loop utility expansion tokens <BSLASH> and <FSLASH>.

Added a new field loop expression <IF LENGTH_OVER_8>.

This version of CodeGen is built with Synergy/DE 10.3.3 and targets a minimum Synergy runtime version of 10.1.1.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework template file changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.1.2 - 28th January 2016

CodeGen Release Notes

We fixed a bug that was causing the <SELECTION_VALUE> selection loop expansion token to produce incorrect results for enumerated decimal and integer fields. The values being produced were previously off by 1, with values for fields with positive enumerated step values being one too high, and values for fields with negative enumerated step values being one too low.

We changed the CodeGen installation so that it adds the CodeGen folder to the END of PATH instead of the beginning.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework template file changes in this release.

We fixed a bug that was causing the <SYMPHONY_SELECTION_VALUE> selection loop expansion token to produce incorrect results for enumerated decimal and integer fields. The values being produced were previously off by 1, with values for fields with positive enumerated step values being one too high, and values for fields with negative enumerated step values being one too low.


V5.1.1 - 9th December 2015

CodeGen Release Notes

We have moved the CodeGen source code repository from CodePlex to GitHub; the only functional CodeGen changes in this release are related to that move (check for update mechanism, download URL, etc.).

If you don't already have one we encourage you to Create a GitHub Account and to Watch CodeGen. If you wish to receive notifications about new CodeGen releases you can also subscribe tho the CodeGen Releases Atom feed.

We have not changed the licensing terms, CodeGen is still distributed under the terms of the New BSD license (BSD). For the time being we plan to leave the CodePlex environment intact, but no new changes will be checked in there and no new releases will be published there.

Here are a few useful GitHub URLs related to our new home:

We have made an internal change that has consolidated the functionality of the CodeGenEngineShared and CodeGenParser assemblies into the existing CodeGenEngine assembly and we modified the installation to remove the two redundant assemblies.

We have upgraded the version of the WiX Toolset that we are using to create the CodeGen installation to V3.1.0.2213.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

The Symphony_FileIO template was altered to use <TAGLOOP_FIELD_SQLNAME> instead of <TAGLOOP_FIELD_NAME>. This change only affects structures with tags.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.1.0 - 4th December 2015

CodeGen Release Notes

We added support for the conditional processing of template code based on identifiers defined on the command line.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework template file changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.0.7 - 20th November 2015

CodeGen Release Notes

We added support for the conditional processing of template code based on identifiers defined on the command line.

We added a new structure expression <IF STRUCTURE_HAS_UNIQUE_KEY>.

We added a new key loop variation called <UNIQUE_KEY>.

We fixed a bug that was causing a crash during key segment loop processing if a key segment was defined using an overlay field. An appropriate error is now generated.

We changed the minimum required version of the .NET Framework from 4.5 to 4.5.2.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework template file changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.0.6 - 9th September 2015

CodeGen Release Notes

We fixed an error that was interfering with the processing of case variations of the field loop expansion token <FIELD_ODBCNAME>.

We added two new field loop expansion tokens that insert SQL and .NET compatible variants of a fields alternate name. The tokens are <FIELD_SQL_ALTNAME> and <FIELD_NET_ALTNAME> and both are also available for use in key segment loops.

We added five new field loop expressions <IF ARRAY_FIRST>, <IF ARRAY1_FIRST>, <IF ARRAY2_FIRST>, <IF ARRAY3_FIRST> and <IF ARRAY4_FIRST>. These expressions can be used to determine if a field that was the very first element of an array is being processed.

Symphony Framework Components

There were no Symphony Orchestrator changes in this release.

There were no Symphony Framework template file changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.0.5 - 28th August 2015

CodeGen Release Notes

We upgraded the development environment to use Visual Studio 2015.

We added a new field loop expansion token <FIELD_SELECTION_COUNT>.

We extended the functionality of the recently added -checkversion command line option so that you can now configure CodeGen to periodically check for updates and inform you when an update is available.

We have modified CodeGen so that it sets the Windows exit code to 1 if an error occurs during processing. This means that the standard IF ERRORLEVEL mechanism can be used to detect code generation problems when operating in batch files.

We changed the way that field names are generated for fields from multi-dimensioned arrays. In previous versions the name of a field from a multi-dimensioned array might be presented as FIELD1_1_1, but this could result in a problem when using expansion tokens such as <FieldNetName>, or any other pascal-case or camel-case variant of tokens referring to the name of the field. Such tokens suppress the underscore characters and result in names like Field1111. This meant that duplicate names could be generated for fields within the same array. Consider an array field defines as MY_FIELD, [12,12,1]A1; the <FieldNetName> for MY_FIELD[1,11,2] would be MyField1112; exactly the same as for field MY_FIELD[11,1,2]. To address this we have changed the naming convention for elements in multi-dimensioned arrays such that leading zeros are now included, up to the required length based on the highest element number. For example the names produced for the earlier example will now be MyField01112 and MyField11012. If you use expansion tokens that refer to the non-DBL names of fields in multi-dimensioned arrays in such a way that those names become part of an external API then this change will break your existing code. Note that this change only applies to multi-dimensioned arrays; the behavior of fields in single-dimensioned arrays has not changed.

We fixed a problem with the processing of the tag loop expansion token <TAGLOOP_TAG_VALUE>. Previously for an alpha field with a comparison value the comparison value would have been inserted without trailing space (e.g. "A"), now trailing spaces will be inserted if necessary (e.g. "A     "). Previously for an alpha field with an empty comparison value a null string (e.g. "") would have been inserted, now an empty string with the appropriate number of spaces (e.g. "       ") is inserted. The number of spaces is determined by the length of the alpha field, up to a maximum of 15 characters which is the maximum possible length for a tag comparison value.

We fixed an error that was preventing the tag loop expression tokens <IF SINGLE_TAG> and <IF MULTIPLE_TAGS> from operating correctly. Previously <IF SINGLE_TAG> would only be true if no tags were present and <IF MULTIPLE_TAGS> would be true only if a single tag was present.

We added two new structure expressions <IF STRUCTURE_SINGLE_TAG> and <IF STRUCTURE_MULTIPLE_TAGS>.

Symphony Framework Components

We corrected the column headings in the Orchestrator commands list.

There were no Symphony Framework template file changes in this release.

There were no Symphony Framework CodeGen Extensions changes in this release.


V5.0.4 - 30th June 2015

CodeGen Release Notes

IMPORTANT: We changed some of the implementation details for period date fields (YYPP and YYYYPP). Previously, because there is no direct equivalent for fields of these types in environments like .NET, Java and SQL, these fields were treated as type String by various field loop tokens. We have changed this so that they are now treated as type int. This change affects the following field loop tokens: <FIELD_CSTYPE>, <FIELD_CSDEFAULT>, <FIELD_OCTYPE>, <FIELD_OCDEFAULT>, <FIELD_SNTYPE>, <FIELD_SNDEFAULT>, <FIELD_VBTYPE> and <FIELD_VBDEFAULT>. This could potentially change the behavior of your templates and the resulting code, but we decided to make the change because fields of this type are fairly rare.

We added a new -rps command line option which allows the repository main and text files to be used to be specified on the command line, overriding other mechanisms for repository selection such as RPSDAT, RPSMFIL and RPSTFIL environment variables.

We added a new -attach command line option which is intended for use by CodeGen developers. When specified this option causes CodeGen to wait for a key press at the very beginning of processing, making it possible to attach an external debugger to the process before processing begins.

We added a new -time command line option that causes CodeGen to report the total elapsed time taken to process the command.

We fixed an issue in the repository API which was causing period dates (D4 YYPP and D6 YYYYPP) to be incorrectly reported as type JULIAN instead of DATE. This in turn was causing the field loop expressions <IF DATE_YYPP>, <IF DATE_YYYYPP> and <IF DATE_NOT_PERIOD> to fail.

We removed an artificial limitation that was limiting the number of structures that could be processed concurrently (via the -ms command option) to five.

We corrected a situation where recent versions of CodeGen could potentially exit and report a fail status without having displayed a corresponding error message.

We fixed issues with the <FIELD_PRECISION> and <FIELD_PRECISION2> field loop tokens which were both inserting incorrect values. We also added a new field loop token <FIELD_PRECISION0>.

We fixed an issue that was preventing the field loop expansion token <FIELD_SELECTIONS> from operating correctly.

We fixed an issue that was preventing code generation without a repository structure from working.

Fixed an issue that was preventing the field loop expressions <IF PKSEGMENT> and <IF NOTPKSEGMENT> from operating correctly when used with structures that have no keys defined.
 

We added back several sample subroutines, functions and include files to the distribution. These files were previously distributed  but were accidentally excluded when we moved to the new WiX based installer. Some are still referenced by several old sample templates (mainly the UI Toolkit related templates). The files can be found in the main templates folder and we also once again set the CODEGEN_INC environment variable to point to the location of various include files that are referenced by some of the sample code.

Symphony Framework Components

IMPORTANT: When upgrading to this version of CodeGen it it important that you update your Symphony Framework version (via NuGet) to V3.1.10

In Orchestrator we added the ability to create a new command based on an existing command. The new option is available by right-clicking an existing command in the command grid, and from there you can select the required repository structure and the new commands will be created. The command grid also now allows for the selection of multiple commands.

Orchestrator now supports being launched via a registered file association, and we have updated the installation to create a file association for orchestrator project files (.symproj). This means that you can now launch orchestrator by double-clicking on a project file, or by right-clicking a project file and selecting "Open with Symphony Orchestrator".

Orchestrator also now supports Windows "Jump Lists". This means that if you pin the Orchestrator icon to the Task Bar, you can use right-click to display and select from a list of recently opened projects.

There were no changes to the Symphony Framework template files in this release.

There were no changes to the Symphony Framework CodeGen Extensions in this release.


V5.0.3 - 16th April 2015

CodeGen Release Notes

We added a new command line option -checkversion that allows you to check whether a you are running the latest released version of CodeGen. Your current and the latest versions will be displayed, together with a message confirming the status of your installation. This option requires Internet connectivity.

We updated the installer so that the CodeGen documentation is now an optional component. If the documentation is not installed locally then the codegen -docs command line option will launch the Web-based documentation.

We changed the location where we install the sample templates, which you will now find in a folder below the public documents folder (C:\Users\Public\Documents\CodeGenTemplates).

The installation now records the CodeGen version number in the registry. This makes it easier for third-party tools that may depend on CodeGen to determine the installed version.

Several additional Symphony Framework components are now being distributed as part of the CodeGen installation. See below for more details.

Symphony Framework Components

IMPORTANT: If you use CodeGen in conjunction with Symphony Framework then it is important that you should upgrade to Symphony Framework V3.1.9.0 BEFORE installing this version of CodeGen.

The Symphony Framework CodeGen Extensions are now being distributed as part of the CodeGen installation and have been removed from V3.1.9.0 of the Symphony Framework installation.

The Symphony Framework template files are now being distributed with the CodeGen installation and have been removed from V3.1.9.0 of the Symphony Framework installation.

The folder containing the Symphony template files has changed from C:\Program Files (x86)\Synergex\SymphonyFramework\Template to C:\Users\Public\Documents\SymphonyTemplates, but the environment variable SYMPHONYTPL continues to point to the location of the Symphony templates and should be the primary mechanism used to locate them from the command prompt or batch files.

No Symphony Framework templates were added, deleted or changed in this release.

We added a border to the Symphony Orchestrator main window so that the application can be resized for easier use.

 


V5.0.2 - 16th March 2105

CodeGen Release Notes

We corrected several documentation issues where it was stated that several command line options (-s, -t, -a, -ut and others) were limited to a maximum of ten values following the option. This limitation in previous versions of CodeGen was removed in V5.0.0.

We fixed a bug in the Template Browser utility that was causing it to fail to start if Symphony Framework was not installed.

We added a new file header token called <CODEGEN_FOLDER> which allows template files to specify the name of a sub-folder (below the main output folder) where output files should be created. You must use the -tf command line option to enable this feature. By default, if a template file specifies that the output file be placed in a sub-folder, and a namespace is used within the template, then the folder name is also appended to the namespace being used. The appending of the folder name to the namespace can be overridden by the new -nf command line option.

Symphony Framework Components Release Notes

The Symphony Framework Orchestrator utility in now being distributed as part of the CodeGen installation has been removed from V3.0.5.0 of the Symphony Framework installation.

We changed the Orchestrator version number to match the version of CodeGen that it now ships with.

We mad a change to OrchestratorViewModel to prevent the project folder incorrectly being added to program folders.

We changed the CommandDetails.xam view to correct the display of the token list cells.


V5.0.1 - 31st January 2015

Fixed a bug that was causing incorrect data to be output (compared to previous versions) by the <FIELD_NAME> token when the -prefix option was used in conjunction with a repository structure that contained group fields. The bug was introduced in V5.0.0.

The current CodeGen version number is now recorded in each assembly via the Assembly File Version attribute.


V5.0.0 - 10th January 2015

Introduction

This release represents a total re-write of the CodeGen code base, embracing best practice object-oriented development techniques, and utilizing all of the latest and greatest features of Synergy .NET. Starting with this release CodeGen will only be available for use on the Windows platform. This new release has been extensively tested and, despite extensive internal changes, has demonstrated a very high level of compatibility with previous versions. But if you do discover an issue then please provide feedback via the CodePlex Issue Tracking system.

Installing This Version

If you have an earlier version of CodeGen installed then the installer for this version will perform an upgrade in the usual way.

If you previously installed a V5 beta release then you must manually remove that version before installing this version.

Symphony Framework Users

In order to use this version of CodeGen you must be using Symphony Framework V3.0.2.0 or higher.

Changes That May Break Your Code

If you have implemented custom extensions to CodeGen then please be aware that the mechanism for implementing extensions has changed. You will need to implement a new version of your extensions in order to have them work with CodeGen V5. If you need assistance with migrating your extensions to the new environment please contact the CodeGen development team via the General Discussions page on CodePlex.

When using the in-process CodeGen API and specifying the names of user-defined tokens it was previously necessary to include the < and > characters in the name of the user defined token. V5 does not require the < and > characters to be specified, and in fact will fail to recognize the user defined tokens if you do specify them.

In earlier versions of CodeGen the sample templates were installed to the folder \ProgramData\Synergex\CodeGEn\Templates. Starting from this version the sample templates are now installed to the folder \Program Files (x86)\Synergex\CodeGen\Templates.

We discovered that the <FIELD_ELEMENT> field loop token was not implemented correctly. For non-array fields it was intended to not insert any data into the output stream, but in fact would insert a digit 1. Also, when processing the first element of a single-dimension array field the token would insert 0 instead of 1. Both of these have been corrected, which could change the behavior of your template files.

We discovered that the <FIELD_ELEMENT0> field loop token was not implemented correctly. For non-array fields it was intended insert a digit 0, but in fact would insert a digit 1. Also, when processing the first element of a single-dimension array field the token would insert 0 instead of 1. Both of these have been corrected, which could change the behavior of your template files.

Other Changes and New Features

This release was primarily about re-developing the internals of CodeGen in order to take advantage of latest technologies, but also to make CodeGen more extensible for future releases. But we also managed to squeeze in a few new features along the way:

Added new generic expansion tokens <HOST_DNS_NAME>, <HOST_IP_ADDRESS>, <RANDOM_10>, <RANDOM_100>, <RANDOM_1000> and <RANDOM_INT>.

Added support for generic expression tokens, and added the first generic expressions <IF DEBUG_LOGGING>, <IF FIELD_PREFIX>, <IF FIELD_SUBSET> <IF MULTIPLE_STRUCTURES>, <IF NAMESPACE> and <IF VERBOSE_LOGGING>.

The existing counter tokens and expressions have been re-documented as generic tokens and generic expressions.

Added support for structure expression tokens, and added the first structure expression tokens <IF STRUCTURE_FILES>, <IF STRUCTURE_KEYS>, <IF STRUCTURE_LDESC>, <IF STRUCTURE_RELATIONS>, <IF STRUCTURE_TAGS> and <STRUCTURE_UTEXT>.

Added new mechanisms for supporting relation loop expressions, structure loop expressions, and not in loop tokens, although none exist as yet.

Implemented <IF FIRST>, <IF LAST>, <IF MORE> and <IF NOMORE> as loop utility expressions, and removed them from the specific individual loops that they were previously supported in.

The file spec provided within a <PROVIDE_FILE> token can now include a logical name to specify the location of the file.

Completed the set of file header tokens that allow you to specify that a particular custom expansion token is required by adding <REQUIRES_CUSTOM_LOOPUTIL_TOKEN>, <REQUIRES_CUSTOM_NOTINLOOP_TOKEN>, <REQUIRES_CUSTOM_STRUCTLOOP_TOKEN> and <REQUIRES_CUSTOM_TAG_TOKEN>.

Added a new set of file header tokens that can be used to specify that a particular custom expression token is required. For example <REQUIRES_CUSTOM_FIELD_EXPRESSION>.

The <REQUIRES_OPTION>SUBSET</REQUIRES_OPTION> can now be satisfied by either the -subset or -fields command line options.

When processing multiple structures but NOT using a structure loop, we currently support up to five concurrent structures. By default the context is set to the first structure specified, and you can switch context to a different structure using the <STRUCTURE#1> through <STRUCTURE#5> tokens. Currently when using the -ms command line option, you must specify between 2 and 5 structures.

The command line -subset option (process a subset of fields) can now be used in conjunction with the -ms option (multiple structures).

The command line -fields option was changed to support fields from multiple structures, when processing multiple structures (-ms option). When processing multiple structures you can specify -fields STR1.FIELD1 STR1.FIELD2 STR2.FIELD1 etc. If processing multiple structures and you don't specify STR.FIELD in -fields then the first structure is used as a default.

Added a new -mw  command line option. By default, if the same task generates the same output file then it is not written to disk multiple times. This option causes each instance of the file to be written to disk. If you use the in-process interface to CodeGen then the equivalent is to set the new CodeGenTask.MultiWriteFiles property.

Added a new -dt command line option which creates log files which detail the results of the tokenization of template files, and tree output, both before and after pre-expansion. The files are created in the output folder and are named <template>.tokens.log.

Added a new -c command line option which causes processing to continue even after errors have been reported. If multiple templates, files or tasks are being processed then this option allows code generation to continue even though one template/structure combination has generated an error.  If you use the n-process interface to CodeGen then the equivalent is to set the new CodeGenTaskSet.ContinueAfterError property.

We have changed the way that CodeGen installations are created. We no longer use InstallShield Limited Edition, but instead are now using WiX (Windows Installer XML), and we're also using WiX Toolset which provides Visual Studio integration.

The CodeGen installation is now digitally signed by Synergex International Corporation. This means that you should no longer see Windows SmartScreen warnings when executing an installation that has been downloaded from the Internet.


V4.4.4.1 - 11th September 2014

IMPORTANT: This is likely to be the final CodeGen release that supports building with Traditional Synergy; future versions will only be supported under Synergy .NET. This means that future releases will only be available on Windows. The binary releases and source code for this version will continue to be available from CodePlex so it will be possible to continue to use this version on platforms like Linux and OpenVMS, but future enhancements will only be available on Windows. Remember that if you are developing on a platform other than Windows, you can generate code on Windows and then move that code to the other platform.

This release contains bug fixes for a small number of issues that were discovered after the V4.4.4 release. Most of these issues only affected the "in-process" interface to CodeGen that is used by the unreleased "Symphony Orchestrator" utility, but one of the issues also affected the processing of user-defined tokens passed in via the -ut command line option, hence this additional release.


V4.4.4 - 19th August 2014

On OpenVMS we updated the processing of the -i and -o command line options so that a Windows or Unix style period (.) can be used to represent "current directory", in addition to the OpenVMS style [ ] notation.

We changed the implementation of the -u (user-defined token file) command-line option. Previously all user-defined token files were required to be in the same folder as the template being processed, and were required to have a .tkn file extension. Now user-defined token files can be located anywhere and have any file extension. This change means that when using the -u command line option, you must now specify a full or relative path and file name to the token file to use. Synergy logical names can be used to specify the path.

We fixed a bug that was preventing the various loop counter expressions from working correctly. The bug was introduced in the 4.4.3 release.

We added <IF FIRST> as a new expression in key loops, enum loops, enum member loops, file loops and button loops.

We renamed two tag loop expressions for consistency with other loop structures. <IF FIRST_TAG> becomes <IF FIRST> and <IF LAST_TAG> becomes <IF LAST>.

We added the ability to define a subset of fields to be processed by specifying a list of field names on the command line using the new -fields option, or via the SubsetFields property of CodeGenTask. This enables field subset processing without having to modify the underlying repository. As with the -subset option, this feature can only be used when processing a single repository structure, and can't be used at the same time as the -subset option.

We fixed a problem where when using developer debug mode (-debug) CodeGen would fail to create the developer debug mode log log file if the -r (replace output files) option was not being used.


V4.4.3 - 18th August 2014

Significantly enhanced the CreateFile utility by adding support for the following Synergy V10 (ISAM rev 6) features:

Auto-sequence keys.

Auto-time-stamp keys.

Portable integer specifications.

Stored GRFA option.

Track changes option.

CreateFile now ignores any foreign key definitions, and will also now attempt to validate that if key definitions include optional "explicit key of reference" values, those values match the order in which the keys are defined (CreateFile always creates keys based on the order of key definitions in the repository structure, because repository does not have any other reliable mechanism for determining the order of keys in a file).

Significantly enhanced the MapPrep utility. Specifically:

The default name of new mapped structures was changed from <structure>_NEW to <structure>_MAPPED.

The name of a new mapped structure can now be specified, overriding the default name. This can be done either via a command-line option -n, or by responding to prompts by using one of the command line options -ps or -p. Previously you would have to edit the generated schema file in order to rename the structure from its default new name.

You can now tell MapPrep whether you want to be prompted for new structure names (-ps), field names (-pf) or both (-p).

By default MapPrep no longer propagates key definitions into the schema for the new mapped structure because they are generally not required. However there is a new command-line option -k which causes key information to be retained as previously.

If retaining key information while at the same time renaming fields, MapPrep now renames any key segments that relate to fields that have been renamed.

When renaming structures and fields MapPrep now validates that the names that you provide are valid identifiers, and when renaming fields MapPrep now tracks the names that have been used so far and prevents duplicate field names from being entered later.

MapPrep now defaults to adding structure and field mappings in the structure and fields long descriptions instead of in the user defined text field, and we have added a new command-line option -u which causes the user defined text field to be used as previously.

Added the ability to load new mapped structures directly back into the repository; this is achieved by using the new -l command-line option.

Altered the <IF DATE> key segment loop expression to evaluate to true for both nullable and non-nullable dates.

Added two new sample templates that demonstrate how to use SQL Server BULK INSERT to load data into tables very quickly. These new templates are:

DatabaseRoutinesBulkLoad.tpl

DatabaseRoutinesBulkLoadMapped.tpl.

Added Repository API support for the ISAM Rev 6 (Synergy 10.1) stored GRFA and change tracking file options.

Added support for ISAM file page sizes of 16384 and 32768 in the following tokens:

<FILE_PAGESIZE>

<FLOOP_PAGESIZE>

Added the following new structure tokens:

<FILE_CHANGE_TRACKING>

<FILE_STORED_GRFA>

Added the following new file loop tokens:

<FLOOP_CHANGE_TRACKING>

<FLOOP_STORED_GRFA>

Added new file loop expressions

<IF CHANGE_TRACKING>

<IF NOCHANGE_TRACKING>

<IF PAGESIZE16384>

<IF PAGESIZE32768>

<IF STORED_GRFA>

<IF NOSTORED_GRFA>

Added the following new key segment loop expressions to bring key segment expressions back into line with field loop expressions.

<IF DATE_NULLABLE>

<IF DATE_NOT_NULLABLE>

<IF SEG_ALPHA>

<IF SEG_ASCENDING>

<IF SEG_AUTO_SEQUENCE>

<IF SEG_AUTO_TIMESTAMP>

<IF SEG_DECIMAL>

<IF SEG_DESCENDING>

<IF SEG_NOCASE>

<IF SEG_SIGNED>

<IF SEG_TYPE_EXTERNAL>

<IF SEG_TYPE_FIELD>

<IF SEG_TYPE_LITERAL>

<IF SEG_TYPE_RECNUM>

<IF SEG_UNSIGNED>

<IF TIMEOUT>

Changed the <FIELD_VBTYPE> data type mappings for nullable time fields from DateTime, to Nullable(Of DateTime).

Added a new mechanism to allow developers to customize the default data type mappings used with various field loop tokens. This feature is enabled via a new command line option -cdm.

Added a new Template Browser utility that allows you to browse CodeGen template files. The utility displays the sample templates that are shipped with CodeGen, and if Symphony Framework is installed then it will display the Symphony templates also. You can also use the Tools > Options dialog to define the folder where your own user-defined templates are stored and if you do so then the utility will display your own templates too.


V4.4.2 - 27th May 2014

We changed the code that generates SQL compatible names for fields to replace any dollar sign ($) characters with an underscore character (_).

We fixed a data mappings bug which was causing un-coerced TM4 (HHMM) time fields to be incorrectly be typed as nullable.


V4.4.1 - 29th April 2014

IMPORTANT NOTE: We no longer provide binaries for Synergy/DE V9. For the time being we will continue to make best efforts to ensure that the code base remains compatible with Synergy/DE V9 systems so that you can build your own CodeGen distributions, but at some point that will become more challenging because we want to be able to take advantage of the significant new features available in Synergy/DE V10. If you have not already done so we strongly encourage you to update your development environments to use Synergy/DE V10. Of course of that it not possible right now you will be able to continue to use CodeGen 4.3.5.

Added a new API called MethodCatalogAPI which exposes information about the interfaces, methods, parameters and return types defined in a Synergy Method Catalog. In the future this API will be used to allow code to be generated based on the data from a method catalog, in conjunction with repository based information.

Updated the OpenVMS linker options file (CODEGEN.OPT) and removed the SHS$SHARE logical name prefix from the references to DBLTLIB and SYNRTL. This change will ensure that CodeGen is linked against the correct Synergy runtime libraries on OpenVMS systems that have primary and alternate installs of Synergy/DE. If you do have primary and alternate installs then you must define system wide logical names for DBLTLIB (translating to SYS$SHARE:DBLTLIB.OLB) and SYNRTL (translating to SYS$SHARE:SYNRTL.EXE). These logical names should be defined in your system startup command procedure (SYS$MANAGER:SYSTARTUP_VMS.COM) immediately after you call the Synergy/DE startup command procedure (SYS$MANAGER:SYNERGY_STARTUP.COM).

Made some improvements to the build and clean scripts for CodeGen under Traditional Synergy on Windows.

Made some improvements to the BUILD.COM and CREATE_INSTALL.COM command procedures for CodeGen on OpenVMS. Also added a new command procedure named CLEAN.COM to clean files left behind by BUILD.COM and CREATE_INSTALL.COM.

Added new field loop expressions <IF DATE_NULLABLE> and <IF DATE_NOT_NULLABLE> which allows you to detect date fields that are coerced to nullable dates.

Changed the <IF DATE> and <IF DATEORTIME> field loop expressions to evaluate to true for dates and nullable dates.

Changed the <IF DECIMAL> field loop expression to evaluate to false for nullable date fields.

Changed the <IF NOTDATE>, <IF NOTDATEORTIME> and <IF NOTDECIMAL> field loop expressions to evaluate to true for nullable date fields.

Updated field loop tokens <FIELD_CSTYPE>, <FIELD_VBTYPE> and <FIELD_SNTYPE> to return appropriate values for nullable date and time fields.

Added a new key segment loop token <SEGMENT_SNTYPE> to insert the Synergy .NET data type for a key segment.

Fixed a bug in CodeGenLauncher where any command line parameter value over 80 characters was causing an invalid subscript exception.

Updated the and improved the CodeGenLauncher mechanism which can be used to initiate code in-process generation, rather than code generation initiated by command-line instructions.

We have started to create some short training videos for CodeGen, and will be creating more as time permits. Videos are currently available for the following subjects:

Introduction to CodeGen

Using AUTHOR and COMPANY Tokens

Introduction to Field Loops

Using Field Loop Subsets

Using Template Include Files

Configuring Template Dependencies

You can find the CodeGen Training Videos on YouYube.


V4.3.5 - 2nd February 2014

Improved error processing in CodeGenEngine.CheckStructure(). Also in the same routine we worked around a String.Contains() bug in Traditional Synergy 10.1.1b that was preventing CodeGen from working correctly on non .NET platforms.

General improvements the DatabaseTable sample templates, mainly focused around removing the use of optional parameters and using overload methods instead. These changes should allow relational database code generated from these templates to work in Synergy .NET in addition to traditional Synergy. Also made some minor changes to the same templates that  result in code that builds cleaner on OpenVMS systems.

Added some support for auto sequence and auto time stamp key segments (ISAM Rev 6). Updated the possible values returned by the <SEGMENT_TYPE> segment loop token, and added two new key loop expressions <IF AUTO_SEQUENCE> and <IF AUTO_TIMESTAMP>.

Added two new field loop expressions <IF EXPLICIT_GROUP_NO_EXPAND> and <IF IMPLICIT_GROUP_NO_EXPAND> which allows you to determine whether or not explicit and implicit groups are being expanded to individual fields (i.e. whether or not the -g e and -g i command line options are being used).

Added two new field loop tokens that expose the Synergy .NET field data type and default value. The new tokens are <FIELD_SNTYPE> and <FIELD_SNDEFAULT>.

Added a new field loop token <FIELD_NETNAME>. This token behaves identically to the <FIELD_SQLNAME> token, it has been included simply to allow template developers to produce more understandable templates, not having to refer to "SQL" when the template doesn't produce anything that involves the use of SQL.

Resolved an issue with user defined token processing whereby if a user defined token was used multiple times in the same template file source line, only the first instance would be replaced. Now all instances will be replaced.

When using the -e command line option to echo the command line being used (useful when CodeGen is used from a Windows batch file with echo turned off) we will no longer display a blank line before the command line.


V4.3.4 - 19th December 2013

Corrected a problem where overlay field exclusions and certain other command-line driven field filtering mechanisms were not being honored for group fields.

Fixed a bug in the processing of the field tokens <FIELD_MINVALUE> and <FIELD_MAXVALUE> for implied decimal fields with no digits to the left of the decimal place (e.g. D2.2).


V4.3.3 - 13th November 2013 (Synergy .NET only)

Added three new generic tokens that allow you to generate GUIDs and use them in your generated code. The new tokens are <GUID1>, <GUID2> and <GUID3>. Each time you run CodeGen it will generate new values for the three GUID values exposed by these tokens. These GUID values will only be consistent during a single invocation of CodeGen. The next time you invoke CodeGen new values will be generated. If you need to use the same GUID value in multiple templates then you must process those templates all at the same time during a single invocation of CodeGen. These new tokens are only available when using the Synergy .NET version of CodeGen.


V4.3.2 - 30th October 2013

Removed old tag tokens from several example templates.

Fixed a bug which was causing the default author and company names not to be picked up from the registry under .NET.

Added several additional tag loop expressions: <IF FIRST_TAG>, <IF LAST_TAG>, <IF MULTIPLE_TAGS> and <IF SINGLE_TAG>.

Upgraded to Synergy/DE 10.1.1b, Visual Studio 2013 and InstallShield Limited Edition 2013.


V4.3.1 - 7th August 2013

Added support for tag loops. Additional information is available in Tag Loop Tokens and Tag Loop Expressions. As part of this enhancement several structure tokens that previously provided information relating to tags have been removed. The structure tokens that were removed are <TAG_EXPRESSION>, <TAG_EXPRESSION_PATH>, <TAG_FIELD_NAME>, <TAG_FIELD_PATH>, <TAG_FIELD_DEFINE>, <TAG_VALUE>, <TAG_VALUE_DEFINE>, <TAG_END_DEFINE> and <MAPPED_TAG_FIELD>. These tokens were all limited in capabilities because they could only be used with structures that has a single tag expression. You should be able to achieve the same results of all of the removed tokens using the new tag loops feature.

Added a new -lf command line option that causes CodeGen to list the names of the files that were generated. This option is only effective when not using verbose or debug logging (-v or -d) because file names are already listed when using those modes.

Fixed a problem which prevented include file processing <FILE:name.exe> from working in some cases.


V4.2.11 - 18th July 2013

Added several new alternate forms of the <FIELD_SELWND> token to provide template developers better control over the case of field selection window names. Also added a new token <FIELD_SELWND_ORIGINAL> to preserve the case of selection window names in the same way that <FIELD_SELWND> used to.

Enhanced UI Toolkit window script selection window processing (-ws) so that selection window names are no longer case sensitive (they aren't in UI Toolkit). Also the -ws option will now work with selection windows that only have a name but no other attributes specified on the .select line.

Added a new feature which enables some degree of preprocessing of field prompts when a structure is processed by CodeGen. This feature is enabled by setting the CODEGEN_STRIP_FROM_PROMPT environment variable prior to code generation.

Updated the InstallShield LE project to not scan shipped assemblies for dependencies at build time. There appears to be a problem with InstallShield 2012 Spring LE which causes it to incorrectly detect a dependency on Visual C++ V11.0 for ARM processors. This could cause installations for previous versions of CodeGen built for Synergy/DE V10 to incorrectly install the ARM version of the C++ V11 runtime if C++ V11 was not already installed on the system. This could cause a problem if CodeGen for Synergy V10 was incorrectly installed on a Synergy/DE V9 system and then Synergy/DE was upgraded to V10. The Synergy/DE installation would see that a version of C++ V11 was already present (but it was the ARM version), but most Synergy/DE components would fail to execute after installation because of the incorrect C++ runtime. If you encounter this problem then the correct solution is to first delete MSVCP110.DLL and MSVCR110.DLL from your Windows\System32 folder (or your Windows\SysWOW64 folder if you are on a 64-bit system) and then use the Programs and Features utility in Windows Control Panel to perform a “Repair” operation on the 32-bit Synergy/DE installation.


V4.2.10 - 4th June 2013

Added support for user token expressions which allow you to test the presence or absence of a user-defined token. User token expressions are supported in all loop structures.

Added a debug mode logging message to confirm when a different key is being used as a result of using the -opk command line option.

Fixed an issue in <FIELD_PROMPT> which would cause field prompts longer than 30 characters to be truncated to 30 characters.

Updated several sample templates.


V4.2.9 - 7th February 2013

Altered the behavior of the <FILE:name.ext> and <FILEIFEXIST:file.ext> template file include tokens. Previously to include an external file into a template file during code generation the file to be included was required to be in the same directory as the template file being processed. Now the default behavior is that the file must be in the current directory, but the location of the file can be overridden by using a logical name within the token. For example if you use the token <FILE:header.def> then CodeGen will expect to find the file in the current directory, but if you use the token <FILE:INC:header.def> then CodeGen will open the file from whatever directory is specified by the environment variable INC. This change was made as a result of a special request from our friends over in the Symphony Framework development team (symphonyframework.codeplex.com).


V4.2.8 - 6th February 2013

Added support for a "second segment restriction" in key loops which can be used to indicate that only the second segment of a key should be processed within a key loop. This can be particularly useful when processing structures that have a structure tag value as the first key segment and the main useful segment of the key is often then the second segment.

Added a new structure token <TAG_VALUE> which inserts the value associated with a structures tag expression. If the structure does not have a tag expression then the token inserts nothing.

Added a new structure token <MAPPED_TAG_FIELD> which allows you to access the name of the first tag field in a mapped structure.

Added a new mechanism to allow developers to override the key that is used within a primary key block. By default the primary key is used within a primary key block, but the new -opk <keyNum> option allows you to chose to use a different key. This can be useful in rare situations where a master /detail relationship between two structures is based on a relationship from the primary key in the master file to an alternate key in the detail file.


V4.2.7 - 17th December 2012

Added new field loop tokens <FIELD_DIMENSION1_INDEX>, <FIELD_DIMENSION2_INDEX>, <FIELD_DIMENSION3_INDEX> and <FIELD_DIMENSION4_INDEX>. Also added new field loop expressions <IF ARRAY1>, <IF ARRAY2>, <IF ARRAY3> and <IF ARRAY4>. These tokens and expressions are useful when working with multi-dimensioned arrays.

One of the most significant changes in this release is the introduction of automated unit testing within the CodeGen development environment. We are now taking advantage of Visual Studio's built in unit testing framework and and are gradually writing tests for many different areas of CodeGen. At the time of writing we have implemented almost 650 individual tests, and in the process of doing so we have already identified (and fixed) several bugs. Having this automated testing capability in place will help us to perform much more extensive regression testing on a regular basis. And for future new features, developing tests for new features before those new features are developed will help to ensure that we get those new features right first time. Embracing unit testing will help to ensure a consistently high level of quality and reliability for future releases.

Enhanced the CodeGen.RepositoryAPI.Repository class by adding a new property named Enumerations which exposes the enumerations that are declared within a repository database.

Addressed an issue which was causing array and group fields, when expanded by CodeGen, to be listed in the wrong sequence in some cases. Also addressed similar issues with various field loop expressions.

Corrected the output of the <FIELD_MINVALUE> and <FIELD_MAXVALUE> tokens so that the values inserted for integer fields are not preceded with a bunch of leading spaces.

Fixed a problems with the <FIELD_ELEMENT> and <FIELD_ELEMENT0> field loop tokens, which were both inserting incorrect values for non-array fields.

Removed three redundant field loop tokens <FIELD_ARRAYDIMP>, <FIELD_ARRAYDIMP0> and <FIELD_ARRAYDIMR>. Following changes in the way that arrays are processed by CodeGen earlier this year these tokens were no longer useful.

Fixed a bug with the replacement of the generic token <DAY>.

Fixed a bug with the replacement of the field loop token <FIELD_ARRIVEM>.

Fixed bugs with the processing of the <REQUIRES_CUSTOM_RELATION_TOKEN> and <REQUIRES_CUSTOM_SELECTION_TOKEN> token.

Fixed a bug with the <ENUM_NUMBER> token which is documented to return a one-based number but was previously returning a zero-based number.

Fixed a bug in the processing of the <ENUM_MEMBER_COUNT> token.


V4.2.6 - 21st November 2012

IMPORTANT: If you are using CodeGen in conjunction with Symphony Framework then it is important that you do not upgrade to this version of CodeGen until you also upgrade to Symphony Framework V2.1.0.0.

The CodeGen installation on Windows now supports upgrading from a previously installed version. We use Windows Installers "major upgrade" mechanism, which essentially performs an automatic uninstall of a previous version before installing the new version. The earliest version that can be upgraded in this way is V4.1.0 which was released on 6th June 2012. If you are running a version older than 4.1.0 then you will need to manually remove that version one final time before installing this version. You can determine the version of CodeGen that you have installed via the command codegen -version.

Added support for custom expressions in all loop structures where expressions can be used.

Added two sets of counters that developers can use in template files.

Added several counter expressions. Currently, despite the fact that counters can be used anywhere in a template, counter expressions can only be used within one of the existing loop structures. We are investigating the possibility of supporting the use of counter expressions, as well as some other expressions, outside of a loop structure.

Changed the API for adding custom tokens for consistency with the new custom expressions support.

Fixed a problem where unnecessary blank lines were being written to output files. Now if a template line contains a template comment (;//) which does not start in column 1 and is the only thing in the line, or if a template line contains a token but after token replacement the line is blank, blank lines will no longer be output.

Fixed a problem in Repository API which was preventing structures containing nested explicit groups from loading. Also added more developer debug mode logging code in the CodeGenLauncher and CheckStructure routines.

Fixed a problem which occurred if the entire content of a template file was delimited by a level 1 loop (for example a field loop) then the final line of output code could be duplicated in some rare cases. Also fixed an issue where in some cases an output file could include an incorrect additional blank line at the end of the file.

Changed the location where the sample templates are installed on Windows systems. On Windows systems sample templates are now installed in the folder <system_drive>:\ProgramData\Synergex\CodeGen\Templates.

Improved the code in several of the example templates. Various internal enhancements and code cleanup also took place for this release.


V4.2.5 - 10th November 2012

Added the ability to use an alternate form of closing tags for all expressions. For example, if using an <IF ALPHA> expression you can now optionally use the </IF ALPHA> closing tag instead of the generic </IF> closing tag. The behavior is the same in either case, but using the more explicit form can improve readability in complex template files.

Fixed a problem with expressions in nested loops (e.g. key segment loops) where in some cases an expression token from a nested loop would be written to the output file.

Added a custom mechanism to allow BusinessCraft to extend CodeGen by processing their "ProForma" files.


V4.2.4 - 8th November 2012

Added new <FIELD_ROW>, <FIELD_COL>, <PROMPT_ROW> and <PROMPT_COL> field loop tokens.

Added case variations for the <FIELD_ARRIVEM>, <FIELD_CHANGEM>, <FIELD_DRILLM>, <FIELD_HYPERM> and <FIELD_LEAVEM> tokens.


V4.2.3 - 5th November 2012

Added a new generic token <OPTIONAL_USERTOKEN> which can be used to indicate that a template requires a specific user defined token, but which also provides a default value for that user token if a value has not been provided by any of the other mechanisms for providing values for user defined tokens.


V4.2.2 - 3rd November 2012

Added support for optional else clauses in all multi-line expressions. We do not currently support else clauses in in-line expressions, but will investigate the possibility of adding that feature in the future.

Added a new mechanism to support custom field loop expressions based on testing the presence or absence of text in an input fields user text or long description. For example, if you place the text IGNORE_THIS_FIELD in a fields user text or long description, you can test the presence of that string using the field loop tokens <IF CUSTOM_IGNORE_THIS_FIELD> and <IF CUSTOM_NOT_IGNORE_THIS_FIELD>. Custom field loop expressions should always be typed in upper case in template files. The custom expression text placed in a fields user text or long description is not case sensitive.

Added a large number of new key segment loop expressions to make the expressions available in key segment loops consistent with the expressions available in field loops.

Added a new internal mechanism for initiating code generation via the CodeGenerator, CodeGenTask and CodeGenTaskSet classes. In the future these changes will be used to launch code generation from new desktop applications, including code generation wizards within Visual Studio projects.

Added a new desktop application named CodeGen Task Manager. This application allows you to define task sets which contain one or more code generation tasks, and then replay those task sets to regenerate the resulting code. This application is currently experimental, not all planned functionality has been implemented, and it is not yet fully functional.

Enhanced the error reporting to include the exception details for when CodeGen fails to load a custom tokens assembly. Also various improvements to error logging in other areas.

Changed the way that the setup program for Windows binary releases are created. We used to use InstallShield Express 2012, which is a purchased product. We have now switched to using InstallShield Limited Edition For Visual Studio, which is a free option for Visual Studio 2010 and 2012 developers and still provides the basic functionality that we need.

Tested CodeGen with Synergy/DE 10. For the time being we will be distributing two versions of the CodeGen Windows installation, one built with Synergy/DE 9.5.3b and one built with the latest Synergy/DE 10 beta version. We will stop distributing the 9.5.3b installation when Synergy/DE 10 is released, but previous builds will continue to be available for download from the CodePlex site.


V4.1.10 - 20th September 2012

Added a new field loop token <FIELD_SELWND> to insert the name of the selection window that is associated with a field, and two new field loop expressions <IF SELWND> and <IF NOSELWND> to allow you to test whether the field has an associated selection window name.

Added a new field loop token <FIELD_ENUMWIDTH> which defines the pixel width associated with an enumerated fields longest enumerated value.

Added two missing imports that were preventing CodeGenEngine from building on OpenVMS.

Improved the SQL SELECT logic in a couple of the sample templates.


V4.1.9 - 7th September 2012

Added a new field loop token <FIELD_NOECHO_CHAR> which is replaced by the character that should be used to represent each character typed into a field, in place of the actual character (think password fields). If the current field being processed is a "no echo" field then the token will be replaced by the no echo character specified in the repository field definition, or by an asterisk (*) if no character is specified. If the field is not a "no echo" field then the token will be replaced by a null string.

Added a new utility program called RpsBrowser. This utility allows you to quickly browse the information available in your Synergy Repository. The utility only has basic functionality at this point and will be enhanced over time.

Added a new feature called  key loop first segment restrictions which allow you to process only the first segment of a multi-segment key. For more information refer to the documentation for the <FIRST_SEGMENT> token.

Added a new Field Loop Expression <IF NOTDATETODAY> which can be used to detect date fields which do not default to the current date.

Improved the output of <FIELD_MINVALUE> and <FIELD_MAXVALUE> so that a decimal point and trailing digits are not output for non implied decimal fields.


V4.1.8 - 14th August 2012

Added a new field loop token <FIELD_PREFIX> which will be replaced with the field prefix value specified via the -prefix command line option, or with a null string if the -prefix option was not used.

Added a new field loop token <FIELD_BREAK_MODE> and three new field loop expressions <IF BREAK_CHANGE>, <IF BREAK_ALWAYS> and <IF BREAK_RETURN>. Note that the existing <IF BREAK> and <IF NOBREAK> expressions can also be used when processing break fields.


V4.1.7 - 31st July 2012

Added the ability to populate field selection lists based on items defined in UI Toolkit selection windows defined in window script files. For more information refer to Selection Windows.


V4.1.6 - 30th July 2012

Added various new field loop expressions including <IF NOCHECKBOX>, <IF DATE_YMD>, <IF DATE_NOT_YMD>, <IF DATE_YYMMDD>, <IF DATE_YYJJJ>, <IF DATE_YYYYJJJ>, <IF DATE_JULIAN>, <IF DATE_NOT_JULIAN>, <IF DATE_YYPP>, <IF DATE_YYYYPP>, <IF DATE_PERIOD>, <IF DATE_NOT_PERIOD>, <IF TIME_HHMM> and <IF TIME_HHMMSS>.


V4.1.5 - 26th July 2012

Added the ability to load custom token extensions which are located in directories other than the main CodeGen directory. This can be done by setting the environment variable (or logical name) CODEGEN_EXTDIR to the directory containing the custom token assembly, ELB or shared image. If CODEGEN_EXTDIR is not found then CodeGen will continue to search for custom token extensions in the main CodeGen directory.

Added a new generic token <REQUIRES_USERTOKEN> which can be used in the header portion of a template file to indicate to CodeGen that the template relies on a particular user-defined token. If the user-defined token has not been specified when attempting to generate code from the template then an error message will be displayed and the template will not be processed.

Added new tokens <REQUIRES_CUSTOM_TOKEN>, <REQUIRES_CUSTOM_FIELD_TOKEN>, <REQUIRES_CUSTOM_SELECTION_TOKEN>, <REQUIRES_CUSTOM_KEY_TOKEN>, <REQUIRES_CUSTOM_SEGMENT_TOKEN>, <REQUIRES_CUSTOM_RELATION_TOKEN>, <REQUIRES_CUSTOM_ENUM_TOKEN>, <REQUIRES_CUSTOM_ENUM_MEMBER_TOKEN>, <REQUIRES_CUSTOM_FILE_TOKEN> and <REQUIRES_CUSTOM_BUTTON_TOKEN>. These tokens allow you to indicate in the header section of a template file that specific custom tokens are required in order to successfully generate code from the template. If CodeGen determines that a required custom token has not been provided then an error message will be displayed and the template will not be processed.

Added two new options to the existing <REQUIRES_OPTION> token to allow template developers to specify in a template file that the -prefix or -subset option is required in order to process the template. Also enhanced error logging to report the name of the template being processed when a missing required command line option is encountered.


V4.1.4 - 20th July 2012

Fixed a bug in the <SELECTION_VALUE> token that was causing it to produce values one lower than required for numeric selection lists.

Fixed a couple of documentation typos.


V4.1.3 - 18th July 2012

Modified the -w command line option to add the ability, when processing based on UI Toolkit input window definitions in a script file, to select the input window to be processed by name as well as by index number.

Added a new -wn command line option which prevents script file input window field attributes from being used to override repository field attributes. This allows you to generate code based on only the fields listed in an input window, but using only the repository field definitions.


V4.1.2 - 17th July 2012

Fixed a bug in the IsNumeric sample functions where they would previously report valid negative decimal and implied decimal numbers as non-numeric.

Fixed a problem where command parameters were not being correctly passed to shell scripts on Unix.

Fixed a bug in %WinDir and improved the build script on UNIX.

Improved %WinDir on UNIX so that it doesn't display "File not found" messages.

Fixed a UI Toolkit Window Script file parsing bug.

Worked around a Synergy .NET bug with alpha -= "VALUE"


V4.1.1 - 19th June 2012

Fixed a bug in the DataMappings.xml file for SQL data mappings of implied decimal fields. Also renamed the file to DataMappingsExample.xml so that CodeGen doesn't load the file by default but continues to use hard-coded defaults. To customize data type mappings the file should be coped back to DataMappings.xml and then customized.

Enhanced error checking to detect and report missing end of loop tokens for multi-line loops.

Enhanced error checking to better detect if someone mis-types a closing token for an in-line loop.

Added the InstallShield Express 2012 project that is used to build the binary distributions for CodeGen. This content is intended for use by the project coordinator only, but could also serve as a reference for anyone else wishing to build binary distributions of CodeGen using InstallShield Express 2012.

Microsoft has announced that they are removing support for the WIX-based "Installation and Deployment" projects in Visual Studio 2012, so in the future developers will need to select and use a third-party tool (e.g. InstallShield) to build product installations. I don't want CodeGen users to get used to using something that I know is going to be removed in the near future, so I have decided to stop distributing the CodeGenSetup and InstallerCustomActions projects. I will be reverting to using InstallSheild Express 2012 to build the CodeGen binary installations. If developers wish to build binary installations of their own they will need to select a suitable third-party installation product and configure their own installations.

Added a Synergy/DE Workbench workspace and projects to make building for Traditional Synergy on Windows easier for developers who have Workbench installed.

Added a new example template named syn_multi_data_class.tpl which is an example of using structure loops, and also added an example to the documentation.


V4.1.0 - 6th June 2012

We added the ability to process multiple repository structures at the same time in a single template file. This feature is implemented via a new command line option -ms which instructs CodeGen to make all of the structures specified after the -s command line option available to the template(s) being processed. The default context when starting to process each template is the first structure, but context can be switched to a different structure by using a <STRUCTURE#n> token, where n is the 1-based index of the structure to switch to.

We fixed a bug in the processing of the structure token <TAG_EXPRESSION> and added three new tokens named <TAG_EXPRESSION_PATH>, <TAG_FIELD_NAME> and <TAG_FIELD_PATH>.

We added some brief documentation for the CreateFile, MapPrep and RpsInfo utilities.

We added a new -file command line option which allows code generation to be initiated based on a repository file definition as a starting point. When using -file all of the structures that are assigned to that file are available to be used in the template, in the same way that you would when using the new multiple structure (-ms) support.

We added support for a new <STRUCTURE_LOOP> capability which allows iteration through any number of structures without prior knowledge of the number of structures to be processed. Structure loops can be used with both multi-structure (-ms option) and file-based (-file option) operations.


V4.0.9 - 4th June 2012

Added the CreateFile utility which allows you to create an ISAM file based on Repository structure, key and file definition information.

Added a new mechanism which allows developers to extend CodeGen by providing custom token processing without the need to edit the core CodeGen source files. For more information refer to Adding Custom Tokens.

Added a new <FILE_LOOP> construct which allows you to generate code for multiple files that are assigned to a single structure. There are several new file loop tokens and file loop expression tokens, and also support for creating custom file loop tokens.

Added the ability to customize the data type mappings for other languages that are produced by the <FIELD_SQLTYPE>, <FIELD_CSTYPE>, <FIELD_VBTYPE> and <FIELD_OCTYPE> tokens. You can now define custom mappings in an XML file named DataMappings.xml which must be placed in the main CodeGen folder (alongside the executables and libraries). If the XML file is not found then CodeGen will continue to use its default hard-coded data type mappings, but if the file is found then CodeGen will use the mappings defined in the file. For more information refer to Customizing Data Type Mappings.


V4.0.8 - 24th May 2012

Fixed an error with the doc comments for the constructor in the DatabaseTable template.

Added the ability to specify the special @MAP, @MAPF, @UNMAPF, @AUTOINCREMENT, @NOCODEGEN, @CODEGEN_DISPLAY_FIELD, @NOAUDIT and @SUB codes in a fields long description in addition to the fields user text string.


V4.0.7 - 12th May 2012

CodeGen is now published as an open source project on CodePlex. You can download a pre-compiled Synergy .NET binary release of CodeGen, or you can download the source code and build it yourself. The source code download includes scripts that can build CodeGen using Traditional Synergy on Windows, Unix, Linux and OpenVMS systems.

This release includes changes to the SQL Connection API example templates. The old SQL_* templates have been retired, and replaced with two sets of new templates. The templates named DatabaseRoutines*.tpl can be used to generate SQL Connection API code based on subroutines and functions (similar to the old SQL_* templates), and the new DatabaseTable* templates generate database interaction classes, which are easier to use in "consuming" code.


V4.0.6 - 4th May 2012

IMPORTANT: The default version of CodeGen that is executed by the "codegen" command is now built with Synergy .NET. For the time being the DBR version of CodeGen is still being provided, and can be accessed via the command "codegendbr". Please note that if you have batch files which use "call codegen" commands, you will need to either remove the "call" command, or change your commands to continue to use the DBR version for the time being by changing your batch files to "call codegendbr".

Other changes in this version include:

Added a new key segment loop token <SEGMENT_DESC>.

The MapPrep utility has been enhanced so that it now adjusts the names of key segment fields in line with changes to the underlying field names.

This version of CodeGen is now built with Synergy/DE 9.5.3b


V4.0.5 - 12th April 2012

The CodeGen installation now includes a version of CodeGen built with Synergy .NET. In the near future only the Synergy .NET version will be distributed, but for now it is being distributed for testing purposes so that others can help to validate that it is operating correctly. The Synergy .NET version is currently named CodeGenNet.exe and should operate identically to the Traditional Synergy version of CodeGen. To test with the Synergy .NET version simply use the CodeGenNet command instead of the CodeGen command. Command line options are identical, but please not that if you currently use CodeGen from batch files with a "call codegen" syntax, the call statement is not required when using CodeGenNet.

Added support for processing structures which contain multi-dimensional array fields, including multi-dimensional group field arrays.

Added a new field loop token <FIELD_REGEX> which will produce a regular expression that can be used to constrain and validate user input to a field based on the repository definition of the field.

Added support for processing a named subset of fields in a structure via the -subset command line option. Field subsets are defined in the repository by adding syntax like @SUB=name; to one or more fields user text string.

Added a new field loop token <FIELD_INPUT_LENGTH> which can be used to set the maximum number of characters that can be entered into a UI control associated with the field.

Added <IF AUDIT> and <IF NOAUDIT> field loop expressions. [Note the these tokens have since been removed because the same functionality can now be achieved via custom field loop expressions.]


V4.0.4 - 28th February 2012

Added a large number of new field loop expressions.

Added a new field loop tokens <FIELD_ARRAYDIMP0> and <FIELD_ELEMENT0>.

Improved error messages when there is a problem creating an output file.

CodeGen now supports nested groups within a structure, and also single-dimension group arrays.

Added a new -g i command line option which causes implicit groups to be processed as a single field, instead of being expanded out to multiple individual fields. When using this option the field type of the group field becomes a class, and you must independently generate that class.

It is now possible to generate code based on a "pseudo structure" which is made up from the fields in an explicit group (i.e. a group with fields locally defined in a structure). This is only supported for explicit groups which are direct members of the structure, not groups nested within other groups. To generate code based on an explicit group, specify the structure name with -s as <structure>.<groupField>.


V4.0.3 - 19th February 2012

Added a new -cw command line option to override the default pixel width of a character.

Added a new -ch command line option to override the default pixel height of a row.

Updated the help file to reflect these changes, and also added this release notes page.


V4.0.2 - 14th February 2012

Re-worked group field support such that overlays within groups are processed the same way that non-group overlay fields are processed. Note that nested groups are still unsupported.

 

 

 


Copyright © 2021  Synergex International, Inc.