Backward Compatibility with Earlier Micro Focus COBOL Products

Backward Compatibility with Studio Enterprise Edition

File Control Description (FCD)
The FCD format for file handling operations in 32-bit applications defaults to FCD3 in Enterprise Developer; in Studio Enterprise Edition, it defaulted to FCD2.

Backward Compatibility with Net Express and Net Express with .NET 5.1

Treatment of DBCS literals
In Net Express, under the NCHAR directive, if an alphanumeric literal contained only DBCS characters, then the literal was treated as class NCHAR. In Enterprise Developer, this is not true, and you are required to prefix literals in the procedure division with N to achieve equivalent behavior (for example: IF N"dbcs-chars" = data-item-1.), which is significant when performing comparisons, where NCHAR literals get padded with double byte spaces. In Enterprise Developer, all literals that are surrounded by quotes without any character specified (B", N", etc...) are always treated as alphanumeric.
Note: In the following scenario, the literal is still treated as a NCHAR literal:
01 data-item pic N value "dbcs-charaters".
Default working mode
In versions of Visual COBOL R4 and earlier, the default working mode set by the COBMODE environment variable was 32-bit. With the current release of Visual COBOL and Enterprise Developer, it is 64-bit.
Format of the index files
In Net Express, the default setting of the IDXFORMAT option was 4. With the current release of Enterprise Developer, it is 8.
FILEMAXSIZE File Handler configuration option

In Net Express, the default setting for FILEMAXSIZE was 4. With the current release of Enterprise Developer, it is 8.

Applications developed using Net Express 5.1 or Net Express with .NET 5.1 might require some changes when you move it to Enterprise Developer. In particular, Enterprise Developer does not include support for the following functionality that was available in Net Express 5.1:

  • Debugging tools:
    • Animator
    • FSView
    • Remote development
  • Diagnostic tools:
    • FaultFinder

      The FaultFinder tool has been removed from the current version of Enterprise Developer. This includes the removal of the following tunables:

      • faultfind_level
      • faultfind_outfile
      • faultfind_recsize
      • faultfind_config
      • faultfind_cache_enable

      You should either remove these tunables from your application or set the tunable cobconfig_error_report=false in your configuration file.

  • Runtime/Deployment support:
    • Single-threaded run-time system
    • Static-linked run-time system
  • Programming features:
    • Btrieve
    • ISAPI
    • NSAPI

Coexisting with Earlier Micro Focus COBOL Products

Important: Enterprise Developer cannot co-exist with Visual COBOL on the same machine.
Run-time system error due to COBCONFIG
A run-time system error occurs if the COBCONFIG environment variable is set when you run Enterprise Developer applications or when you use Enterprise Developer to edit or create projects and the configuration file it refers to contains entries that are not valid for Enterprise Developer.

For example, this might happen if you have Net Express or Studio Enterprise Edition installed and COBCONFIG is set for it.

To work around this issue, ensure that Enterprise Developer is not running and then modify the configuration file by doing one of the following:

  • If the invalid tunable is not needed by another application, remove it from the run-time configuration file.
  • Add the following as the first line in the configuration file:
    set cobconfig_error_report=false
  • Unset COBCONFIG (or COBCONFIG_) or set it to another configuration file that does not contain the invalid tunable for the particular session you are running in.
Licensing error due to environment settings
The message "Micro Focus License Manager service is not running" can occur when you invoke a Net Express, Mainframe Express or Studio Enterprise Edition utility from Enterprise Developer. This happens when the tool is invoked with Enterprise Developer environment settings while it requires the Net Express or Studio Enterprise Edition ones.

This happens when you edit files such as .dat that have a file association with Net Express or Studio Enterprise Edition. This can also happen when invoking a utility within the Net Express or Studio Enterprise Edition products as an external tool from Enterprise Developer.

You can workaround this problem in Enterprise Developer as follows:

  1. Create a batch file that unsets COBREG_PARSED before the tool is invoked. The batch file contains:
    Set COBREG_PARSED=
    Call [PathToUtility] %1

    Where PathToUtility is the path to the Net Express or Studio Enterprise Edition utility.

  2. In the Visual Studio IDE, add the batch file instead of the utility itself as an external tool.

    This ensures that the proper environment is established when running that tool.

Performance Monitoring Issue
Having an Enterprise Developer product and Studio Enterprise Edition 6.0 or Server Enterprise Edition 6.0 installed on the same machine, and trying to uninstall one of them, breaks performance monitoring and it is not possible to see the Enterprise Server performance counters. To resolve this problem, run the installer of the product you wish to retain on your machine, and repair the installation.

Directives Scan

The default options for directives scan (click Tools > Options > Micro Focus Tools > Directives > COBOL in the IDE) have been changed since the previous Micro Focus products based on Visual Studio.

Backward Compatibility with Earlier Versions of Enterprise Developer

Updated run-time system

Enterprise Server now provides an execution environment capable of running applications that were each built using different development products. A consequence of this is that If your application has a main COBOL executable (.exe) that was built with a version of Enterprise Developer prior to version 2.3, you should ensure that the executable is rebuilt and packaged with the new run-time system. This does not affect mainframe subsystem projects deployed to Enterprise Server. You can rebuild from the IDE or the command line.

Other COBOL subprograms built with previous versions of Enterprise Developer are not required to be rebuilt.

Calling program search order
In previous versions of Enterprise Developer (and earlier Micro Focus products) you could use a run-time tunable to define a specific order in which the run-time system searches for called sub-programs. Due to changes in the run-time system, there is only one viable specific search order, and therefore the program_search_order tunable is no longer available; remove the tunable from any configuration you have set. The default (and only) order used is:
  • If the sub-program is already loaded, or is statically linked, it is located and the search ends.
  • If COBPATH is set, the list of paths in the variable are searched, in order; if COBPATH is not set, the current directory is searched.
  • On Windows platforms, if you are calling dynamic link libraries (.dll files) without a specific path, the COBPATH environment variable is searched.
  • The path of the calling program is searched.

If the sub-program cannot be located using one of the above methods, a run-time error is produced.

Casspool recovery
Following the detection of an unrecoverable file status error on the casspool file, a message is displayed on the console and an ACCEPT statement is issued. This stops processing, allowing you to fix the underlying file problem, before continuing the job.
ACUCOBOL-GT and RM/COBOL file handling under Enterprise Server
Two file handling configuration options have been introduced that enable or disable all types of file handling for ACUCOBOL-GT and RM/COBOL data files.
ACUFH has overall control, but is enabled by default, which means that there should be no change in behavior when handling files when not running under enterprise server. However, ESACUFH enables and disables file handling of these types under enterprise server, and is disabled by default. To continue handling ACUCOBOL-GT and RM/COBOL data files, ensure both options are enabled in your file handling configuration file.
Using parentheses in member reference
In .NET COBOL syntax, you may only use parentheses when referencing methods. You can no longer specify parentheses when referencing fields or properties, as this will produce a syntax error.

For example:

set intLength to testString::Length()

must change to:

set intLength to testString::Length
Calling RM/COBOL compatible library routines
Previously, to call an RM/COBOL compatible library routine, you had to set the DIALECT"RM" Compiler directive, which ensured the correct call-convention was used. To set this functionality now, you must explicitly use the correct call-convention in the CALL statement.
DIALECT"ENTCOBOL"
DIALECT"ENTCOBOL" now sets NSYSMBOL"NATIONAL"; previously, this set NSYMBOL"DBCS".
DIALECT"RM"
DIALECT"RM" now sets PERFORM-TYPE"RM". If you recompile an application that uses DIALECT"RM", the behavior may change for nested PERFORM statements. If that is the case, explicitly set PERFORM-TYPE"MF" after DIALECT"RM" to continue with the previous behavior.
ILUSING
If you set this Compiler directive using the $set command, the imported namespace is only applicable to programs, classes and referenced copybooks in that file. If you set the directive through the IDE or from the command line, the imported namespace is applicable to all programs and classes in the project or specified on the command line.
FLAGCD
This Compiler directive is no longer available in Enterprise Developer. Remove it from your code, otherwise you receive a COBCH0053 Directive invalid or not allowed here error.
CALLFH
If your code specifies the ACUFH parameter, it may now produce adverse effects when used. You should replace it with the methods described in Configuring Access to Vision Data Files or Configuring Access to RM/COBOL Data Files. Both of these methods offer a fuller-functioning solution to handling these types of data files.
Compatible ACUCOBOL-GT file handling environment variables
The following environment variables, introduced for ACUCOBOL-GT compatibility, have been replaced with other environment variables or configuration options that you add to your File Handler configuration file. No other ACUCOBOL-GT file handling environment variables are supported.
Redundant variable Replaced with
FILE_CASE FILECASE configuration option
FILE_PREFIX COBDATA environment variable
FILE_SUFFIX FILESUFFIX configuration option
APPLY_FILE_PATH n/a
FILE_ALIAS_PREFIX dd_ mapping

Setting these environment variables will have no effect.

Open PL/I Compiler
Important: If you are installing this release as an upgrade to Enterprise Developer 2.2 Update 1, after the upgrade you must rebuild any applications that are compiled using the –zp1 option.

The behavior of the –zp1 option has been reverted to that of versions of Enterprise Developer earlier than 2.2 Update 1, with an additional correction relating to Char Varying data items.

The behavior has been restored to that in Enterprise Developer versions earlier than 2.2 where, when compiling with –zp1, all parameters are treated as unaligned. (In Enterprise Developer 2.2 Update 1, the behavior when compiling with –zp1 was to not treat parameters as if unaligned).

When using the –zp1 compiler option, all Character Varying data items are now treated as if unaligned. In previous versions of Open PL/I, for Character Varying data items, the –zp1 unaligned requirement was applied only to structure members and parameters.

To illustrate the change, consider the following example:

zptest: proc options(main); 
 
   dcl 1 st1, 
     2 c char, 
     2 x(4) char(7) var init ('a', 'xx', 'yyy', 'zzzz'); 
 
   dcl y(4) char(7) var init ('a', 'xx', 'yyy', 'zzzz'); 
 
   dcl sub entry ((4) char(7) var); 
 
   call sub (x); 
 
   call sub (y); 
 
end; 
 
sub: proc (z); 
 
   dcl z(4) char(7) var; 
 
   dcl i fixed bin(31); 
 
  do i = 1 to hbound(z); 
      z(i)  = 'x'; 
  end; 
 
end; 

Where:

  • For x and z, each char (7) var item is 7 plus 2 bytes which equals 9 and then multiplied by 4 equals 36.
  • If y were aligned on half-word by default, each array element is half-word aligned and each equals 10 bytes (9 + 1 pad byte), and the total size equals 40 bytes.
  • At call sub (x), the calling argument and parameter are matched.
  • At the call sub (y), the y element size (10 bytes) is mismatched against the parameter z element size (9 bytes) due to –zp1. This is incorrect and causes unexpected program behavior.

Due to this correction of treating all Char Varying data items as if unaligned when using –zp1, the size of CHAR VARYING arrays now differs from previous versions of Open-PL/I. For example:

   dcl X(4) char(7) var; 
 
   Put skip list (size(X))  /* size is 36 bytes vs. 40 bytes in previous versions of Open-PL1 */