Repository navigation
det facade: a DTO-only answer of a RETURN COMMAREA refuses bytes the DTO cannot hold (Part of #4817) - #5328
Merged
Conversation
…DTO cannot hold (Part of #4817) CicsTask.returned() refuses by name when the DTO's layout bytes differ from a byte the RETURN passed (spaces excepted) and the bytes were not taken through returnedBytes(). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Owner
Author
|
No description provided. |
squid-protocol
marked this pull request as ready for review
October 17, 2026 10:52
squid-protocol
enabled auto-merge (squash)
October 17, 2026 10:53
Owner
Author
|
No description provided. |
Contributor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #4817.
A RETURN TRANSID COMMAREA reaches the next task as its bytes (#4871); the byte-carrying
handleTransaction(.., byte[])answers them. The DTO-only answer (the one-arghandleTransaction, and the REST endpoint over it) could not: a numeric DISPLAY field holding spaces and digits came back as digits. This closes the issue's "or refused by name at the facade, never silently changed" arm.Fix.
CicsTask.returned()(runtime incobol_to_java_transaction_forge.py) refuses by name when the task's bytes were not taken throughreturnedBytes()and the answered DTO'stoCommarea()differs from a byte the RETURN passed (cut at LENGTH), unless the DTO's byte is a space (0x20 / 0x40: FILLER, an unset field). No emission change: both facade emitters already readreturnedBytes()first in the byte overload. A DTO with no layout, a RETURN with no bytes beside the DTO, andbyte[]answers are unchanged. The check is a lower bound (a loss under a DTO space byte is not seen). Register X51 updated.handleTransactionreturned()(here)lastAnswerBytes()Evidence. New
tests/cobol_mainframe/test_return_dto_lossless_4817.py(fails without the fix): lossy / Object / bytes taken / clean / FILLER / EBCDIC space / LENGTH cut past and inside / no layout / no bytes / nothing returned, for RETURN and RETURN IMMEDIATE. Neighbouring commarea/facade/endpoint tests: 676 passed.pr_gates --fast6/6;--ratchets8/8, none skipped.det_port.py check: 103 of 119 ports change only inCicsTask.java(+36 lines). Re-proved withdet_port.py run: carddemo-cardupdate, cbsa-bnk1cca, carddemo-signon PROVED; cbsa-bnk1uac DIFFERS only by the existing #5076 byte[] refusal (not this change). The other ports were not re-proved here.Cross-repo: none.
🤖 Generated with Claude Code