This article provides information on a fix for and workarounds for applications that produce a mismatched external data error when compiled after upgrading to ACUCOBOL-GT 8.0.
Problem:
After upgrading to ACUCOBOL-GT Version 8.0, some applications compiled with -Dw32 that compiled cleanly under previous versions halt with the error mismatched external data even when the programs were not changed.
Resolution:
This problem is fixed in ACUCOBOL-GT version 8.1.0. Upgrade to this version to resolve the problem.
However, you can also try any one of the three following workarounds with version 8.0:
- Compile with both -Dw32 and -Z72.
- Compile with neither -Dw32 nor -Z72. This might not be the best solution in some cases.
- Edit the lib/direct.c as follows; then relink the runtime.
In direct.c, add two lines of code by changing this block of code:
*************** *** 39,45 **** --- 39,47 ---- #endif /* ACU_SOURCE_FILENAME */ #define ACU_SOURCE_FILENAME "lib/direct.c" structEXTRNTABLE EXTDATA[] = { { NULL, NULL } };to this:
*************** *** 39,45 **** --- 39,47 ---- #endif /* ACU_SOURCE_FILENAME */ #define ACU_SOURCE_FILENAME "lib/direct.c" staticvoid *exc_obj; structEXTRNTABLE EXTDATA[] = { { "EXCEPTION-OBJECT", (char *) &exc_obj }, { NULL, NULL } };



