The following paragraphs describe changes that can affect programs originally written with ACUCOBOL-GT Version 5.1.
Licensing Changes
The licensing mechanism changed with the release of Version 5.0. In Version 5.2, this mechanism has been simplified:
- Node IDs are no longer used.
- When the license is installed, the Windows version of the Activator creates a separate license file for each product, in the
same manner as UNIX.
- The Activator utility is not backwards compatible. You must use the version of the Activator utility that corresponds to the
version of the product you are installing in order to create a proper license file.
A complete description of the current licensing mechanism is available in Getting Started with ACUCOBOL-GT.
Compiler Changes
- Two compilation switches provide compatibility with Version 5.1:
-C51
|
Causes the compiler to generate code according to the rules used by Version 5.1.
|
-Z51
|
Creates object code that can be run with a Version 5.1 runtime.
|
- Compiler switch
-Zt is not supported in Version 5.2.
- In versions prior to 5.2, the grid would not pass a MSG-GOTO-CELL-MOUSE event to the program when the user clicked on the
cell containing the grid cursor. This was done to prevent extraneous messages from being sent to the program. However, this
message can be useful in some cases, for example, to allow a user to deselect something that is already selected. Therefore,
in Version 5.2 and later, the runtime no longer filters out MSG-GOTO-CELL-MOUSE messages just because the destination cell
is the same as the current cell.
Note: This change is active only for programs compiled for Version 5.2 or later. This means that the Version 5.2 runtime will use
the old behavior when executing programs compiled with versions prior to 5.2, or compiled with the
C51 or the
Z51 switch. You can disable the new behavior by setting the configuration variable
V52_GRID_GOTO to
0.
- Version 5.2 introduces
ENTRY as a new reserved word in ACUCOBOL-GT. A program that compiled with a previous version of the compiler will not compile with
Version 5.2 if it uses
entry in certain places. For example:
If
entry appears in a paragraph name in your program, the compiler returns the error:
Identifier expected, ENTRY found
If
entry appears in a variable in your program, the compiler returns the error:
syntax error scanning ENTRY
See the ENTRY Statement in Procedure Division Statements, for usage syntax and rules.
Runtime Changes
- The ACUCOBOL-GT Version 5.2 runtime on SCO UNIX systems runs in the ELF binary format. Prior to Version 5.2, the runtime ran
in the COFF format, but COFF does not support calling shared libraries so it was changed to ELF. If you have your own C routines
that you used to link to the runtime, you will need to recompile those C routines to create ELF objects to link to the 5.2
runtime. For details on calling shared library routines in UNIX environments, see Working with C and C++ Programs in A Guide to Interoperating with ACUCOBOL-GT.
- In versions prior to 5.2, the runtime would eliminate requests to resize a screen control if the new size and position matched
the control's current size and position on the screen. With the current version, the runtime optimizes the control resize
request using the SIZE and LINES indicated (or implied) by your program instead of the current size and position.
These two ways of optimizing control resize requests produce nearly identical results. However, there are a few cases where
the results can differ. For example, if you change the size of the subwindow that contains the control in such a way that
the control would crop differently, then a comparison of the "actual" size shows a difference, while a comparison of the "requested"
size does not. In this case, earlier versions of the runtime would resize the control, while the current version will not.
This change was made to provide more predictable behavior and to improve efficiency when the display service is on a remote
machine.
If necessary, you can disable this behavior by setting OPTIMIZE_CONTROL_RESIZE to "0" (off, false, no). This prevents any
optimization of control resizing operations. Note that this can result in additional screen painting (in which controls may
appear to flicker) and should be used only as a short-term fix while any required coding changes are made.
- The way the runtime handles mouse click events in COBOL programs that contain both bitmap push buttons and multiple windows
under the control of a single thread has changed.
In Version 5.1 and earlier, in some cases, simply clicking down on the mouse button when a bitmap push button was selected,
generated a CMD-CLICK event. This was not consistent with the way Microsoft Windows handles these events.
In Version 5.2 and later, clicking down on a bitmap pushbutton on a non-active window running in the same thread will cause
the current ACCEPT to terminate with CMD-ACTIVATE event. The pushbutton is not considered clicked until the COBOL program
performs some action that allows it to activate, such as ACCEPTing some control in the newly activated window. For self-activating
pushbuttons, this allows the pushbutton to self activate. For non-self-activating pushbuttons, the new ACCEPT will terminate
with a CMD-GOTO so that the COBOL program can ACCEPT the correct control.
This change is only available in COBOL objects compiled for Version 5.2 or later and run with a Version 5.2 or later runtime.
COBOL objects compiled with Versions 5.1 or earlier will still exhibit the old behavior, even if they are run with a Version
5.2 or later runtime.
- The resolution of the ACCEPT BEFORE TIME timer has been substantially increased in Version 5.2. In rare cases, this could
affect existing programs. To forestall any such problems, the runtime automatically uses the pre-5.2 resolution when running
pre-5.2 objects and objects compiled for pre-5.2 compatibility (e.g.
-C51).