Move statement error on second MOVE from PIC 9(02) to UNSIGNED-INT

0 Likes

Problem:

lk-i-row-address is defined as pic 9(02) and ws-pos-row is defined as unsigned-int.  lk-i-row-address has a value of 4 yet after the move ws-pos-row contains a value of 60.

This only happens the second time into this subroutine.

Resolution:

This behavior was introduced in version 7.1.0 by ECN 3214 (text included below) and can be corrected by setting "ECN-3214   OFF" in a configuration file.

SUBJECT: LINKAGE data binding optimization

Change Number:  ECN-3214

Status:                 &nbsp ;   Complete

Type of Change:    Enhancement

Priority:                 &nb sp;  Medium

Incidents:                None

Date:                  & nbsp;    2005-08-11

Product:                 &nbs p;ACUCOBOL-GT

Module:                 &nbsp ;runtime

New Version:        7.1.0

Machines Affected:  All

Known Versions Affected: All

DESCRIPTION of problem or enhancement:

When a COBOL program calls a subprogram with linkage, part of the process

of beginning execution of the subprogram involves binding all of the LINKAGE

SECTION data to the items passed by the caller.  In some situations, in

which a program CALLs a subprogram multiple times from the same location

with the same variables (even with different data), that binding is not

needed because it has been done already.

This enhancement modifies the runtime so that the extraneous binding will

not be done, optimizing CALL statements.

WORKAROUND:

None.

INSTRUCTIONS for use:

Install the new runtime.  Note that this does not require any COBOL programs

to be recompiled.

There is a new config variable ECN-3214 which, when set to the non-default

value of FALSE, causes the runtime to bind data as it has in all previous

versions, essentially removing the benefits of this ECN.  When set to the

default value of TRUE, this ECN is in effect.

Old KB# 2745
Comment List
Related
Recommended