Skip to content

det: refuse a non-digit in the PERFORM VARYING variable and SET BY target (Part of #4692) - #5404

Merged
squid-protocol merged 1 commit into
mainfrom
churn/4692-20261018T0304Z
Oct 18, 2026
Merged

squid-protocol merged 1 commit into
mainfrom
churn/4692-20261018T0304Z

Conversation

@squid-protocol

@squid-protocol squid-protocol commented Oct 18, 2026 •

Copy link
Copy Markdown
Owner

Part of #4692 (follows #4889 receiver, #5327 counters/pointers, #4992/#4996 P-scaled).

What

The step of a PERFORM VARYING variable and SET x UP/DOWN BY read the item before storing it, as the receiver of ADD does, but through plain Cobol.num. They now use Cobol.receiverNum: a zoned item holding a non-digit is refused by name (register C11, IBM documents no result). Digit-only items step as before; the FROM store overwrites first, so spaces before the loop still translate.

Files: gen.py (2 sites), Cobol.java (javadoc), cobolrt_rules.json (rule title), test_det_nondigit_zoned.py (3 tests).

Class and gaps

Class: read-modify-write of a zoned item holding a non-digit. Not changed: the SEARCH implicit index +1 (gen.py ~2156), because the index is not a zoned field. SET BY on a zoned target is changed but has no test (no parseable zoned SET BY found); the code path is the same helper.
Burned-estate need: det_port check lists 19 ports whose generated service changed (the VARYING step), so burned programs do loop over zoned variables; none holds a non-digit in the proved scenarios.

Evidence

  • test_det_nondigit_zoned.py -k "varying or receiver or counter": 115 pass.
  • det_port.py check: 103/122 unchanged, 19 changed; det_port.py run on those 19: 17 PROVED, 2 DIFFERS (cbsa-crecust: oracle CEEDAYS: picture not modelled; cbsa-bnk1ccs: java-facade COMMAREA [B REFUSED). Neither message is a non-digit refusal; Re-run on origin/main (960d83a): both are DIFFERS there too, so pre-existing on main.
  • audit_check.py all clear, pr_gates.py --fast 6/6, test_cobolrt_rules.py 51 pass.

Cross-repo

None.

🤖 Generated with Claude Code

…WN BY target (Part of #4692)

The step of a PERFORM VARYING variable and SET x UP/DOWN BY read the item before storing it, as the receiver of
ADD does, but through plain Cobol.num; they now go through Cobol.receiverNum and are refused by name when a zoned
item holds a non-digit (register C11).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@squid-protocol squid-protocol added the shepherd:merge Maintainer: merge when green (auto-merge, squash). Guide: docs/ci.md label Oct 18, 2026
@squid-protocol

Copy link
Copy Markdown
Owner Author

No description provided.

@squid-protocol
squid-protocol marked this pull request as ready for review October 18, 2026 03:28
@github-actions

Copy link
Copy Markdown
Contributor

🐦‍⬛ Muninn Security Scan

✅ No security issues found.

🐦‍⬛ Powered by Muninn · Skald Lab

@squid-protocol
squid-protocol enabled auto-merge (squash) October 18, 2026 03:36
@squid-protocol
squid-protocol merged commit 6ffe21d into main Oct 18, 2026
77 checks passed
@squid-protocol
squid-protocol deleted the churn/4692-20261018T0304Z branch October 18, 2026 03:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

shepherd:merge Maintainer: merge when green (auto-merge, squash). Guide: docs/ci.md

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant