Skip to content

det/facade: a RETURN TRANSID COMMAREA crosses to the next task as its DTO only -- a numeric field holding spaces comes back as digits #4817

Closed

Description

@squid-protocol

Found while fixing #4806 (a LINK / XCTL COMMAREA through a DTO lost bytes the DTO cannot decode; that fix passes the bytes beside the DTO, so a det program takes them as they are).

Gap. A level-1 RETURN TRANSID ... COMMAREA still carries the COMMAREA as the DTO only (CicsTask.returnTransid -> returnedArea -> returned(type) / the facade's handleTransaction answer, #4343 / #4449). A field the DTO cannot decode -- a numeric DISPLAY field holding spaces, as CBSA's front ends leave in their RETURN COMMAREA -- is read as a number (spaces: -16) and, when the next request brings that DTO back, the next task's DFHCOMMAREA holds digits where the previous task left spaces.

IBM. RETURN TRANSID COMMAREA passes the bytes to the next task of the pseudo-conversation (a copy); every byte arrives as it was, invalid numeric content included.

Scope. The equivalence harness does not observe it: each scenario gives its own COMMAREA (the RETURN's is compared as an event). It is the deployed region / facade path. Related: #4695 (the facade gets byte[] for a RETURN LENGTH past the DTO).

Done when. The deployed pseudo-conversation keeps the bytes (e.g. a byte-carrying COMMAREA beside the DTO, or the DTO keeping the bytes it cannot decode), or such a COMMAREA is refused by name at the facade, never silently changed.

Part of #4270.

Activity

  1. added
    bugUnintended behavior or logic failure in the engine
    legacy-modernizationCOBOL refractor, dead-code extraction, and JCL forging
    priority: lowUI tweaks, documentation, and minor optimizations
    on Oct 9, 2026
  2. squid-protocol commented on Oct 9, 2026

    @squid-protocol
    OwnerAuthor

    Related: #4085 (carddemo-cardupdate: COCRDUPC's RETURN COMMAREA leaves blanks in a PIC 9(3) CVV that the typed DTO cannot hold; still the only unproven case of the #4806 sweep, as baselined). That issue is the compared RETURN event; this one is the deployed next task that gets the DTO back.

  3. added
    scope:sweepCompletes a class the burned estates already touch (siblings); blocks no program
    era:2Era CICS/MVS-ESA, COBOL II/85: RESP, SQL, DPL (~1988-96) (era_tags.py)
    on Oct 16, 2026
  4. squid-protocol commented on Oct 17, 2026

    @squid-protocol
    OwnerAuthor

    Acceptance met: the byte-carrying path (#4871, byte overload of handleTransaction) keeps RETURN COMMAREA bytes, and #5328 makes the DTO-only answer refuse by name when the DTO would silently change a byte. Both arms of 'Done when' hold. Remaining sibling (#5060 model-port String/number XCTL) is tracked separately.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugUnintended behavior or logic failure in the engineera:2Era CICS/MVS-ESA, COBOL II/85: RESP, SQL, DPL (~1988-96) (era_tags.py)legacy-modernizationCOBOL refractor, dead-code extraction, and JCL forgingpriority: lowUI tweaks, documentation, and minor optimizationsscope:sweepCompletes a class the burned estates already touch (siblings); blocks no program

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions