Users may encounter compilation failures in Easytrieve 11.6, particularly when migrating or enabling 31-bit addressing (`AMODE31=Y`). Two common errors occur:
EZTC0392E >>> `$` too few positional parameters
EZTC0288E >>> Often accompanied by a lack of visible source statements in the listing to diagnose the cause.
Easytrieve Report Generator, release 11.6
EZTC0392E: This is typically caused by the New Function Mode (enabled by `AMODE31=Y`) enforcing strict validation of macro prototypes. If a macro definition (`MACRO 2`) expects two parameters but the program invokes it with only one, the 11.6 compiler flags it as an error, whereas legacy versions may have ignored it.
EZTC0288E: This general compilation error may occur without showing the specific offending line in the listing. It can also be triggered by alignment issues where the compiler expects source code to start in a specific column (e.g., Column 7).
Resolving EZTC0392E (Positional Parameter Mismatch)
To fix the parameter mismatch enforced by New Function Mode:
Important: Perform Impact Analysis: Before modifying a macro definition (e.g., changing MACRO 2 to MACRO 1), you must conduct an impact analysis. This macro may be shared across multiple programs; changing the prototype could resolve the issue for one program while causing compilation failures or logic errors in others.
If the macro is shared, it is often safer to update the specific program invoking the macro to pass the expected number of parameters rather than changing the macro itself.
See documentation on the MACRO Statement.
Resolving EZTC0288E (Hidden Statement Errors)
If you cannot see the statements causing the error in the job log: