Changes Affecting Version 5.0

The following paragraphs describe changes that can affect programs originally written with ACUCOBOL-GT Version 5.0.

Compiler Changes

Two compilation switches provide compatibility with Version 5.0:

-C50    Causes the compiler to generate code according to the rules used by Version 5.0.
-Z50 Creates object code that can be run with a Version 5.0 runtime.

Runtime Changes

  • In versions prior to 5.1, a CMD-ACTIVATE event would be generated only if there was an active ACCEPT statement running to receive it. Under some (unusual) circumstances, this could cause the runtime to enter a state where it believed the wrong window was active.

    In Version 5.1, this rule is modified so that CMD-ACTIVATE events are generated unless the window generating the event is in the process of being built. It no longer matters whether or not an ACCEPT statement is running. The new rule is needed to prevent the first ACCEPT in each window from immediately terminating due to a queued CMD-ACTIVATE event (generated by the window's own creation).

    Note: This is a change in the rules for when CMD-ACTIVATE is generated. As a result, it is possible for CMD-ACTIVATE events to occur in cases where they did not previously. In order to prevent this change from adversely affecting a working program, the new rule is used only for programs compiled for 5.1 semantics. This means that the 5.1 runtime will not behave any differently in this regard when executing programs compiled with 5.0 or earlier (or compiled with the -C50 switch). You can explicitly enable this rule by setting the configuration variable ECN1660 to 1 or disable it by setting it to 0. When the variable is set to -1 (the default), the program semantics apply as described above.
  • In Version 5.1, you can assign pop-up menus to labels. This change has the side-effect that labels are now aware of mouse-clicks where previously they were not. This matters only if you happen to have a label and another control (like a push button) that overlap. Previously, the push button would always get all the mouse events. In Version 5.1, the label could start getting them. This can prevent the push button from working (because it is not "seeing" the mouse clicks). Normally, you would not overlap controls, but it can happen unintentionally if the label contains only spaces.

    To correct this situation, make the controls not overlap or make label invisible instead of setting it to spaces if you want to hide it. You can inhibit this change by compiling for 5.0 or earlier semantics (this also means that you must compile for 5.1 or later semantics if you want to attach a pop-up menu to a label).

  • The configuration variable V42_TRANSPARENT is now obsolete. Transparent labels always appear transparently. If this variable is set in your environment or in the runtime configuration file, it is simply ignored.