Error EZTC0392E or EZTC0288E during Easytrieve 11.6 compilation
search cancel

Error EZTC0392E or EZTC0288E during Easytrieve 11.6 compilation

book

Article ID: 446185

calendar_today

Updated On:

Products

Easytrieve Report Generator

Issue/Introduction

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.

Environment

Easytrieve Report Generator, release 11.6

Cause

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).

Resolution

  1. Resolving EZTC0392E (Positional Parameter Mismatch)

    To fix the parameter mismatch enforced by New Function Mode:

    1. Check Macro Prototype: Locate the macro in your macro library (e.g., `PANDD`).
    2. Validate Parameters: Ensure the `MACRO` statement count matches the actual usage in the program.
    3. Action: Either update the program to pass the correct number of parameters or update the macro prototype to reflect the expected input (e.g., change `MACRO 2` to `MACRO 1`).

    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:

    1. Enable Macro Source Listing: Add the following statement before your `PARM` line in the JCL to force the compiler to display the expanded macro source:
      ```ezt
      LIST ON MACROS
        ```
    2. Check Column Alignment: If the error persists and seems related to syntax that appears correct, it may be a column-shifting issue. Ensure the compiler is configured to ignore the first 6 columns if your source uses them for line numbers.
    3. Update your Options Table to specify `SCANCOLS(7)`.
    4. Refer to the Easytrieve Compiler Options documentation.