Repository navigation
CICS: DEFINE COUNTER, DELETE COUNTER; GET COUNTER of a missing counter is INVREQ RESP2 201 (Part of #4270) - #4762
Merged
Merged
Conversation
…r is INVREQ RESP2 201, not NOTFND (Part of #4270) DEFINE COUNTER (VALUE, initial zero, INVREQ RESP2 202 for a duplicate, 403 / 404 for names outside IBM's characters) and DELETE COUNTER (INVREQ RESP2 201) in both runtimes (CicsTask / DetCics and the stub's GGCDCNT / GGCXCNT). GET and QUERY COUNTER answer INVREQ RESP2 201 for a counter that is not there, where GET answered NOTFND; IBM lists none. What IBM leaves open is refused by name (register X30). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MQNoe4wPJgr7dbUvs3DG6D
Contributor
… (Part of #4270) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MQNoe4wPJgr7dbUvs3DG6D
squid-protocol
marked this pull request as ready for review
October 9, 2026 08:25
This was referenced Oct 9, 2026
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 #4270.
What
Register X30 in
oracle_assumptions.md(IBM's pages cited there). Chosen by programs made whole (cics_census.py blockers, baseline origin/main 82918f0, 111/179 whole).DEFINE COUNTER(COUNTER / POOL / VALUE): the counter is created with VALUE, or "an initial value of zero" when it is omitted (IBM); a counter of that name and pool that exists is INVREQ RESP2 202 "Duplicate counter name" (IBM's page lists no DUPREC); a pool or counter name outside IBM's characters is INVREQ RESP2 403 / 404. No POOL is 8 blanks, a different pool fromHCPOOL.DELETE COUNTER: removes it; a counter that is not there is INVREQ RESP2 201 "Named counter not found" (IBM lists no NOTFND); a bad pool 403 (the page lists no 404).CicsTask.getCounternow returns {RESP, RESP2, value}; the det translator writes both; the stub'sGGCGCNT); GET and QUERY COUNTER also answer 403 / 404 for a pool / name outside IBM's characters. GET COUNTER now accepts RESP2.GET-COUNTERevent line is gone (the Java side never had one; the crucible converter rejects it).GET COUNTER fix: impact on proven cases
No verdict moved. The only committed cases that run GET COUNTER are the equivalence cases
genapp-lgacdb01andgenapp-lgacus01(scenarioadd-without-counter): LGACDB01 testsWS-RESP Not = DFHRESP(NORMAL), so NOTFND and INVREQ take the same branch. Theirwhytext said "(NOTFND)"; corrected per IBM.det_port.py checkvs origin/main: 77/79 ports unchanged, those two changed (the GET COUNTER codegen) anddet_port.py run genapp-lgacdb01 genapp-lgacus01re-proves both (PROVED, 151/151 and 185/185 statements). No cics-crucible case, committed port or other equivalence case used GET COUNTER.Proof
New cics-crucible case
condition-handling/hc-named-counters(companion below; 2 scenarios, 24 breadcrumbs, traced by hand from IBM's four counter pages,check-hand-derivedOK,validate.py24/24, no SPEC change: the case defines its own counters): cobol-stub 2/2 and java-ported (det port HCCNTR 90/90 statements, 0 holes) 2/2, with--unpinned; a mutated log (L1R=13) fails both sides. Unit tests: translator, spec entries, harness,CicsTaskand the stub C (compiled), including the 403 / 404 rules and the refusals.pr_gates --ratchets7/7 (against a v0.6.0 checkout),--fast5/5.Census (before -> after, translation only, burned + census corpora, baseline 82918f0)
GET DCOUNTER, refused by name).LayoutErrorfixed-form literal past column (8, non-burned), missing copybook BOOKFUNC (7), BAQRINFO (2), CMQGMOV (2), ISPF screens (2),InqacccuDfhcommarea: data after a POINTER(2, CBSA),<name>: undeclared item(1 / 4 touched).Cross-repo
Companion: squid-protocol/cics-crucible#16 (the case). Merge it first; this PR's CI cics-crucible job does not see the case until a release + pin bump (not done here: no tag, the pin untouched).
🤖 Generated with Claude Code
https://claude.ai/code/session_01MQNoe4wPJgr7dbUvs3DG6D