This section describes significant changes in behavior or usage in the current and past releases of Visual COBOL for Eclipse. These changes could potentially affect the behavior of existing applications or impact the way the tools are used.
The 9.0 release installs several .NET NuGet packages each of which contains the assemblies for a specific Micro Focus functionality. New .NET projects, as well as existing projects you edit or build in 9.0 are linked to a core package, MicroFocus.COBOL.Runtime.Core, that includes the basic functionality for the projects. You need to add any additional packages (such as a specific file handler, COBOL Accept/Display etc.) manually to the projects.
Building existing .NET COBOL projects created prior to 9.0 might result in build errors. You can ensure compatibility by enabling the use of the MicroFocus.COBOL.Runtime metapackage. Alternatively, you need to add any required NuGet packages manually to the older projects.
See Upgrading existing .NET COBOL project files for details.
Backward compatible support is provided for symbols files (.idy files) generated using any of the previous five major product releases.
When you attempt to debug, a version check of the .idy file is carried out, and if produced with a product version older than the last five releases, it is rejected and you are unable to debug with it. In such circumstances, recompile your application to generate a new .idy file. [5]
You can replace your SafeNet Sentinel licenses with AutoPass licenses starting with release 8.0. However, it is not necessary to switch to AutoPass licenses unless you are adopting release 10.0. Contact Micro Focus Customer Care for further information.
A new Compiler directive, DECLARE, has been introduced to support the introduction of the parameterized sections syntax. The default behavior of this directive (DECLARE"2") is to allocate locally declared directives afresh each time a SECTION is entered. Previously, the default behavior was that locally declared variables were added to local-storage, and therefore would not be allocated afresh each time a parameterized section is performed. To maintain previous behavior, set DECLARE"1"; however, this setting is not supported when compiling to JVM COBOL, or when a program contains a parameterized section.
The INITIALIZE <condition-name> statement, where condition-name is true for multiple values, now correctly receives a syntax error in all scenarios. In previous releases, some scenarios would allow compilation (although did not work).
By default, the debug engine checks that the symbols file (.idy file) being used to for the debug session matches the COBOL program to be debugged; that is, it was the one produced the last time that the program was compiled. If the files do not match:
For JVM COBOL, you can continue to debug, but if you receive the above message for native COBOL, debugging cannot continue.
To disable the check for native COBOL (only), clear the Require program symbols (.idy) to match the program option, which is available on the General tab of the debug configuration in effect.
This package was previously used to pass all types BY REFERENCE in a JVM COBOL application, including to pass items from a Java program to a JVM COBOL program (although, this is not intended customer use).
In this release, the package has been split into two: com.microfocus.cobol.references and com.microfocus.cobol.user_references. The references package is used to pass, BY REFERENCE, all COBOL items that map to Java primitive types (short, int, etc...). All other types use the user_references package (for String, array of primitive types, etc...). Classes in the user_references package are generated as required by the Compiler, and need to be added to the JVM COBOL application's .jar file.
There are two issues to be aware of:
If a customer application has two separately-signed .jar files, and each one requires the use of the Compiler-generated com.microfocus.cobol.user_references classes, a security exception will occur when the .jar files interact with each other. (This was also true when the namespace com.microfocus.cobol.references was used.)
The solution is to move any structures reliant on com.microfocus.cobol.user_references out of the generated class file directory structure for the application(s), and to package those structures into a separate jar file, which can also be signed, if required - this .jar file would also be need to be added to the CLASSPATH for the overall application.
If your application is affected by this issue, your feedback, via Customer Support (Micro Focus Customer Care website), would be appreciated, to help us refine a solution to these issues.
In previous releases, if a pointer was passed to a method without explicitly stating the passing mode (BY VALUE or BY REFERENCE), it was assumed to be passed BY REFERENCE. From this release, such items are assumed to be passed BY VALUE, making them consistent with other parameter types.
To pass a pointer BY REFERENCE, you must explicitly state reference in the method signature: for example:
method-id M1(reference ptr as pointer) ...
And ensure that the argument is also passed with the reference keyword; for example:
invoke M1(reference myptr) ...
New COBOL projects created under a Japanese locale now default to a text file encoding of UTF-8. This default can be changed by a preference setting in
. (This preference can also be set for non-Japanese locales, but has no default initially.) Also, within each project, this setting can be overridden at the usual project levels (project settings, build configuration, etc...) by setting the SOURCE-ENCODING directive.For more information, refer to Specifying character encoding.[1]
A new EXTFH configuration option, FLUSHSYSOUT, is now available to enable you to view the progress of active spool jobs. When set to ON (the default), the buffer is flushed after each record is written, enabling you to view the progress as it runs. Previously, a pre-defined buffer had to be completely written to before progress was displayed; this behavior was more performant, and so can be re-enabled by setting FLUSHSYSOUT=OFF [2]
For an up-to-date list of these changes for release 8.0, see this product's Release Notes available from the Product Documentation section of the Micro Focus Customer Care website.
For an up-to-date list of these changes for release 7.0, see this product's Release Notes available from the Product Documentation section of the Micro Focus Customer Care website.
The following platforms - Solaris, Red Hat on IBM Z System, SUSE on IBM Z System, and Ubuntu - are now licensed using a new licensing model called AutoPass. These platforms and licenses are not available from the Software Licenses and Download portal (sld.microfocus.com) if you are using the existing SafeNet license technology. To obtain AutoPass licenses for the aforementioned platforms, contact your account manager to discuss your actual requirements, and also raise a support incident to track the request.
The maximum record length supported by the File Handler is 62KB. If you create records that exceed this limit, a COBCH0649 error is generated on compilation. You can continue to use programs that utilise these large records, but you may experience adverse results in your file handling operations.
The ISO2002 directive now supports an option to provide different levels of ISO2002 features. ISO2002"1" provides the level of features supported in Server Express and Net Express, and ISO2002"2" provides those features, plus additional ones added since Visual COBOL. If you have used the ISO2002 directive in Server Express/Net Express, and are migrating to Visual COBOL, use ISO2002"1" if your applications are affected by the change in behaviors provided with ISO2002"2".
The target of an INITIALIZE statement cannot be a variable-length group if the ODOSLIDE Compiler directive is set. This now results in a severe syntax error, whereas in previous releases this was incorrectly allowed to compile and produced unexpected run-time results.
Stackdump production is now only available on Linux platforms (both 32- and 64-bit, where supported). Previous availability on Solaris platforms is no longer supported.
Reverse Debug and Live Recording functionality is licensed and installed separately from undo.
io. You can enable reverse debug functionality by downloading the extension from the Micro Focus Marketplace.
JVM COBOL programs compiled with REENTRANT"2" now produce instance methods, whereas previously, compilation of these programs produced static methods. If your non-COBOL code relies on these methods being static, you will have to refactor your code to handle this.
On AIX platforms, when using the cob command to compile C or C++ programs (for example, cob -xc filename.c) the compiler used is dependent on the version of the operating system: on AIX 7.2, an XL-based compiler is used; on AIX 7.3, a Clang-based compiler is used.
For an up-to-date list of these changes for release 6.0, see this product's Release Notes available from the Product Documentation section of the Micro Focus Customer Care website.
In order to better support modern operating systems, we are aligning closely with their operability guidelines. We now detect previously-undefined behavior when interacting with OS level functions.
Error RTS096 alerts you to any calls to the operating system's fork() API, in a process that has directly or indirectly called COBOL functionality, in your code.
The error gives you an early diagnosis of a situation which, if left unchecked on modern operating systems, could lead to deadlocks, crashes or other failures at run time. These problems would often occur intermittently and be very challenging to track down.
See the KB article https://community.microfocus.com/t5/Visual-COBOL-Knowledge-Base/fork-rts64-Error-96-encountered-in-child-process/ta-p/1771191 for more details.
The copybooks cbltypes.cpy and cblproto.cpy, provided by this system for call prototyping in library routines, include features of the latest syntax, specifically the CONSTANT keyword. If these files are used in conjunction with the MF directive, it should be set to the current level, 21; otherwise, you should remove the directive, or do not use these copybooks.
Just like other DBMS SQL COBOL precompilers, OpenESQL now follows embedded SQL standards and disallows the use of group host variables in WHERE <column> = :hostvar clauses. In the past, this was not flagged at compile-time, and would lead to unpredictable results when executed.
For JSON (RESTful) service interfaces, the IMTK no longer forces the outermost (root) structure of a JSON message body to always be a JSON object, but now also supports a root JSON array or primitive. Though the root is obligatorily nameless in the JSON message, in the Interface Mapper the anonymous root must now be defined in the operation's interface fields as the top-level body field. Consequently, since there cannot be more than one input top-level body interface field nor more than one output top-level body interface field in an operation, all interface fields that appear in the body of a message must now be children of the top-level body field. Any non-conforming pre-6.0 JSON service interface is still supported as-is, but conformance would be required upon saving in the Interface Mapper.
JVM COBOL code that uses IS NUMERIC tests on NATIONAL or NATIONAL NUMERIC data items, or uses NATIONAL NUMERIC data items in programs compiled with the CHECKNUM Compiler directive must be recompiled in this release. Compiled code from earlier products that uses such constructs will generate a MissingMethodException error when run under this release.
Projects that were last built in a version prior to 6.0, and that rely on the Windows Resource Compiler (RC.exe) need to be rebuilt in Eclipse, otherwise they may produce an error. This is due to the relocation of RC.exe in this version of the product. Affected projects will be those that explicitly reference a manifest file (used to include such things as cursors, fonts, and icons), and that are built directly from the command line.
The problem is fixed if you open and build the project within the Eclipse IDE (as .cobolBuild is rebuilt to find the new location of RC.exe). Alternatively, you should ensure that PATH contains a reference to RC.exe if you continue to run projects from the command line.
If your Working Storage contains a data item with the OCCURS DEPENDING ON phrase, and ODOSLIDE is in effect, any subsequent data items at the same or higher level must not contain a VALUE clause. If they do, an error (COBCH1962) is now generated.
If you cannot remove the VALUE clauses from your source code or remove ODOSLIDE, contact Customer Care.
For an up-to-date list of these changes for release 5.0, see this product's Release Notes available from the Product Documentation section of the Micro Focus Customer Care website.
The Communications Facility (also referred to as the COMMS SECTION or COMMUNICATION SECTION) has long since been deprecated. Certain syntax relating to this was still accepted (but ignored) by the Compiler. That syntax is no longer permitted, and if encountered, the Compiler will now generate an error (COBCH1895 Communication Facility not supported); you must remove the section from your sources before recompiling.
Inclusion of line numbering information in run-time error messages provides useful diagnostic assistance during abnormal program termination. This is already the default behavior on Unix and Linux platforms, and is now the default compiler behavior when using the command line on Windows platforms too.
For debug builds it is normal to specify the ANIM compiler directive, and for release builds it is normal to leave the ANIM directive absent from build scripts. In these circumstances, you might now notice the presence of .idy files where you had not previously. The production of these .idy files does not affect the behavior or performance of your application other than generation of line number information. IDY files are not required to execute your application and you should not distribute them unless you have a specific requirement to debug your application.
Applications which make calls directly to EXTFH or EXTSM, passing the FCD (File Control Description) now need to initialize the FCD correctly. This means that any unused or reserved areas need to be initialized with binary zeros or you could receive an RTS114 error, for example when calling EXTSM. See File Control Description (FCD).
Calling coblongjmp() within an error procedure, exit procedure or signal handler now generates a fatal Run-Time System error message: COBRT131 coblongjmp() can not return from current context (Fatal).
This scenario was previously documented as a restriction, and is now enforced, to prevent subsequent issues. The resolution to such an error is to refactor the code to remove the coblongjmp() call from any error procedures, exit procedures, or signal handlers.
For an up-to-date list of these changes for release 4.0, see this product's Release Notes available from the Product Documentation section of the Micro Focus Customer Care website.
The numbers that follow each issue are the Support Incident Numbers followed by the Reported Problem Incident (RPI) number (in parentheses).
The Compiler now produces an E level message - COBCH1888 Typedef is defined differently in another external program - if different external programs have conflicting definitions of the same typedef name. To restore the previous behavior, where the earlier definition was ignored, use the directive HIDEMESSAGE"1888".
Web access to the Enterprise Server Console Log and Communications Server Log is now restricted when the enterprise server region is secured using external security. Users will be required to provide a valid username and password in order to view either log file.
Web access to the logs can be controlled using the standard ACL definitions under the new Communications Server resource class, with resources Enterprise Server Console Log and Communications Server Log. If these resources exist, users require 'read' access to be allowed to view the logs. If the resources do not exist, the default behavior is to allow 'read' access on entry of a valid username and password.
An example of the new resource class and resource definitions can be found in the es_default_ldap_msuser.ldf (Windows), or es_default_ldap_unix.ldf (UNIX) file, which is located in the bin (Windows), or etc (UNIX) sub-directory of your product directory.
Version 4.0 of your product is dependent on a later version of the Microsoft C run-time system than earlier Micro Focus products. This means that COBOL executables (.exe) built with an earlier version of your product might not be compatible with version 4.0 run-time products. If the behavior of your application changes with version 4.0, we strongly recommend that you relink the main executable with version 4.0. This will ensure that the COBOL run-time system fully handles any run-time error conditions that might occur.
A new executable that is fully compatible with version 4.0 can be produced without recompiling the application, as long as the original object code is available and it is relinked with version 4.0.
To allow your executables to benefit from the product's latest programming and performance enhancements, we recommend a full recompilation of your source code.
Due to changes made to the Configure Runtime Environment dialog box in this release, after you upgrade your system, you must reenter all previously set values on this dialog box before running a service.
With this release, all CICS-related Java artifacts have been delivered using a new directory structure under the javaee-ccl directory of your Visual COBOL installation directory. The javaee-ccl directory structure mimics the structure of the javaee directory. For example, mfccl.jar is no longer located in the bin subdirectory, but can be found in the javaee-ccl\common directory.
Schema changes that affect the test coverage results generated from the tcutil utility mean that if you propagate the results to a third-party application (for example, an XSLT processor), and rely on the <copyFileCoverage> element, you need to alter your transformations to focus on <sourceFileCoverage> instead. The element was renamed to more appropriately reflect its contents, as tcutil now gives global coverage for all source files (not just copybooks).
For an up-to-date list of these changes for release 3.0, see this product's Release Notes available from the Product Documentation section of the Micro Focus Customer Care website.
The numbers that follow each issue are the Support Incident Numbers followed by the Reported Problem Incident (RPI) number (in parentheses).
The default for the FASTINIT directive has changed: FASTINIT is now the default when setting the MF dialect. The directive remains not set by default (that is, NOFASTINIT) for other dialects.
References to types within an assembly other than mscorlib need to be explicitly referenced. You can achieve this by using the ILREF Compiler directive.
Previously, in certain circumstances, the Compiler would allow access to types within the System.dll assembly without the need for an ILREF"System" directive.
The new OpenESQL OPTIMIZECURSORS SQL compiler directive option is turned on by default for ODBC (DBMAN=ODBC). This ensures that embedded SQL cursors that use WITH HOLD and FOR UPDATE clauses have the same data integrity across all databases.
If your applications require the OpenESQL preprocessor to use the behavior provided in an earlier release, compile them using OPTIMIZECURSORS=NO.
See Reserved Words Table at the end of this topic for more information.
This section describes significant changes in behavior or usage. These changes could potentially affect the behavior of existing applications or impact the way the tools are used.
The numbers that follow each issue are the Support Incident Numbers followed by the Reported Problem Incident (RPI) number (in parentheses).
This product release enforces the correct ANS85 scoping rules for nested programs, including COMMON programs, and makes it possible to have multiple programs with the same name at different levels of the nesting hierarchy. In this way, the behavior in managed COBOL is now compatible with the behavior of native COBOL programs.
2869185 (1105763)
2869848 (619107)
2852872 (1103699)
2816871 (1099564)
2854207 (1103659)
2838118 (1101539)
This section describes significant changes in behavior or usage. These changes could potentially affect the behavior of existing applications or impact the way the tools are used.
The numbers that follow each issue are the Support Incident Numbers followed by the Reported Problem Incident (RPI) number (in parentheses).
2835290 (1101493)
2848855 (1102932)
2699374 (1094326)
If no Audit Manager is running, no events are removed from shared memory, and no slots will ever become available. Therefore, use the new TIMEOUT option so that a client will only retry sending until the TIMEOUT duration is reached; after which, it will stop sending audit events. If Audit Manager is recycled, events will start to be sent again.
mfaudit.timeout = nWhere n is the timeout value in milliseconds.
To set the TIMEOUT for an individual Audit Manager client, use the ‘CBL_AUDIT_CONFIG_PROPERTY_SET’ API. It takes an integer property-value, which should be the timeout value in milliseconds.
If TIMEOUT is set using both methods, the client property TIMEOUT takes precedence, unless this property is set to zero; in such cases, the TIMEOUT in the configuration file is used. If you use the ‘CBL_AUDIT_CONFIG_PROPERTY_GET’ API on the ‘TIMEOUT’ property, it only returns the TIMEOUT value for the client property; it does not return the value set in the configuration file.
2838689 (1101685)
When CHARSET"EBCDIC" is in effect, the IS DBCS test returns true when each character in the string is deemed to be a valid DBCS character. A valid character has its first byte in the range 0x41 through 0xFE, and the second byte in the range 0x41 through 0xFE, or the character is an EBCDIC space (0x4040). When CHARSET"ASCII" is in effect, the DBCS test uses an OS call to determine if the string contains only valid double-byte character, and returns true if valid.
When CHARSET"EBCDIC" is in effect, the IS KANJI test returns true when each character in the string is deemed to be a valid Kanji character. A valid character has its first byte in the range 0x41 through 0x7F, and the second byte in the range 0x41 through 0xFE, or the character is an EBCDIC space (0x4040). When CHARSET"ASCII" is in effect, the IS KANJI test uses an OS call to determine if the string contains only valid Kanji character, and returns true if valid.
When CHARSET"EBCDIC" is in effect, the IS JAPANESE test is not supported, and will generate a COBCH1806 Feature not supported in selected charset message on compilation.
When CHARSET"ASCII" is in effect, the IS JAPANESE test returns true when the string contains only double-byte Japanese characters or single-byte Japanese Katakana characters, and returns true if valid. When NSYMBOL"NATIONAL" is in effect, these class tests are not supported, and will generate a COBCH0303 Operand has wrong data-type message on compilation.
2812895 (1098401)
2830383 (1100609)
This section describes significant changes in behavior or usage. These changes could potentially affect the behavior of existing applications or impact the way the tools are used.
Where present, the numbers that follow each issue are the Support Incident Numbers followed by the Reported Problem Incident (RPI) number (in parentheses).
2807531 (1097783)
2682101 (1092325)
2664675 (1091082)
2786397 (1095265)
2796076 (1096384)
COBDATA has no effect on compilation. The output of the Compiler is the same location regardless of whether COBDATA is set.
Previously, it was not possible to specify sign(EBCDIC) with sign-fixup, host-num-move or with host-num-compare. This combination is now supported in native COBOL but remains invalid for managed COBOL code. This is applicable to version 2.2 U2 HotFix 10 onwards.2824577 (1100823)
2795077 (1096322)
Example of potential changes in behavior:
With strict_file_locking=true, Process-B is unable to open the file, because Process-A has successfully opened the file allowing only read access.
With strict_file_locking=false, Process-B successfully opens the file.
If your application encounters unexpected OPEN conditions or fails to open files, it might be as a result of the new file locking behavior. In such circumstances, we recommend that you review the file locking and sharing requirements of your application and refactor your source code to work with the default setting. The original file locking and sharing behavior can be restored by setting strict_file_locking=false.
(609469)
2792882 (1096196)
2696707 (1095994)
2799213 (1096684)
2792382 (1096011)
Other COBOL subprograms built with previous versions of Visual COBOL are not required to be rebuilt.
This section describes significant changes in behavior or usage. These changes could potentially affect the behavior of existing applications or impact the way the tools are used.
The numbers that follow each issue are the Support Incident Numbers followed by the Reported Problem Incident (RPI) number (in parentheses).
2697615 (1094527)
2697571 (1094370)
The new algorithm also provides an optional "username substitution" feature. It can be enabled by setting "rule substitutions" to "yes" in the [Operation] section in the Security Manager configuration text area. When this is enabled, the string "${user}" in a resource-rule name will be replaced with the name of the user that makes the request. For example, a DATASET rule named "USERS.${user}.**" would apply to datasets with the requesting user's name as the second qualifier. In rare cases, customers with complex, ambiguous resource-access security rules might see experience changes in behavior as a result of the new algorithm. The old algorithm is still supported and can be enabled by setting "version 1 authentication" to "yes" in the [Operation] section of the Security Manager configuration.
2807531 (1097783)
This section describes significant changes in behavior or usage. These changes could potentially affect the behavior of existing applications or impact the way the tools are used.
The numbers that follow each issue are the Support Incident Numbers followed by the Reported Problem Incident (RPI) number (in parentheses).
2673619 (1093197)
This section describes significant changes in behavior or usage. These changes could potentially affect the behavior of existing applications or impact the way the tools are used.
The numbers that follow each issue are the Support Incident Numbers followed by the Reported Problem Incident (RPI) number (in parentheses).
2195519 (1062800)
2657471 (1090355)
2549904 (1082171)
2608496 (1088530)
2488419 (1077143)
2641890 (1088838)
2487164 (1081693)
2562118 (1083203)
The BIS_LOG variable is only examined when the BIS application pool is started or recycled. After setting or changing BIS_LOG, IIS must be restarted in order for the variable to take effect.
This section describes significant changes in behavior or usage. These changes could potentially affect the behavior of existing applications or impact the way the tools are used.
The numbers that follow each issue are the Support Incident Numbers followed by the Reported Problem Incident (RPI) number (in parentheses).
2552658 (1082755)
2606838 (1087239)
2606835 (1087238)
2593798 (1085945)
This section describes significant changes in behavior or usage. These changes could potentially affect the behavior of existing applications or impact the way the tools are used.
The numbers that follow each issue are the Support Incident Numbers followed by the Reported Problem Incident (RPI) number (in parentheses).
(589096)
2579335 (1084817)
2553438 (1082469)
This section describes significant changes in behavior or usage. These changes could potentially affect the behavior of existing applications or impact the way the tools are used.
The numbers that follow each issue are the Support Incident Numbers followed by the Reported Problem Incident (RPI) number (in parentheses).
2549058 (1082441)
2518330 (1079491)