Skip to content

det/CICS: container and channel names use IBM's PUT CONTAINER character set (Part of #4950) - #5067

Merged
squid-protocol merged 1 commit into
mainfrom
det/4950-container-names
Oct 14, 2026
Merged

squid-protocol merged 1 commit into
mainfrom
det/4950-container-names

Conversation

@squid-protocol

Copy link
Copy Markdown
Owner

Part of #4950 (checklist box 3: container-command names move to IBM's character set).

What was wrong

Container and channel names on PUT / GET / DELETE CONTAINER, LINK / XCTL CHANNEL and the browse commands were checked only for "not blank, no embedded blank". ^, ~ or { were accepted, which IBM does not allow, and an illegal name had no IBM condition.

What IBM documents

Only PUT CONTAINER (CHANNEL) gives a set and conditions: "The acceptable characters are A-Z a-z 0-9 $ @ # / % ? ! : | " = , ; > . - and _. Leading and embedded blank characters are not permitted." An illegal CHANNEL name is CHANNELERR RESP2 1, an illegal CONTAINER name is CONTAINERERR RESP2 18. GET and DELETE CONTAINER give no set and no condition. RUN TRANSID's page lists three more characters (&, <, the not sign) that PUT CONTAINER's page omits.

Change (both runtimes, the C stub ggcics.c and CicsTask)

  • PUT CONTAINER: a name outside the set gives CHANNELERR 1 / CONTAINERERR 18 and creates nothing.
  • Refused by name (ASSUMED / REFUSED, X17): & < ¬ in a container-command name (IBM's two pages disagree); an illegal name on a command whose page says nothing of one; on PUT, two illegal names, or an illegal one with a negative FLENGTH or no channel in scope (IBM does not rank the conditions); a name over 16 characters.
  • RUN / START CHANNEL keep RUN's set, & < ¬ included. A channel RUN creates with one of them cannot be named by a container command (refused).
  • Spec (containers.py) states the two PUT outcomes and the new refusals; X17 rewritten.

Class table

member status
PUT CONTAINER CHANNEL / CONTAINER name modelled here (CHANNELERR 1 / CONTAINERERR 18)
GET / DELETE CONTAINER, LINK / XCTL CHANNEL, STARTBROWSE, MOVE, QUERY / DELETE CHANNEL names refused by name outside the set (IBM silent)
& < ¬ in a name refused by name (pages disagree)
RUN / START CHANNEL names unchanged (#5013)
scenario channel / container names in the case file (_CICS_NAME) unchanged: any name without a blank; Sibling gap

Evidence

  • tests/cics_crucible/test_cics_runtimes.py: same scripts on the stub and on CicsTask. Every IBM character accepted, 13 illegal names (leading / embedded blank, ^ ~ [ { \ ' * ( +`, an accented byte) on both CHANNEL and CONTAINER and through the current channel, the refusals above.
  • 947 CICS / det / equivalence / resources tests pass.
  • pr_gates --fast 6/6, --ratchets 7/7.
  • det_port check: 91 ports changed only in the shared CicsTask.java (85 lines, the name check). Re-proved a sample: asynccc-csstats2, asynccc-getname, cbsa-crdtagy1, cbsa-inqcust all PROVED. A full re-sweep was not run.
  • Golden masters: no parsing change, none moved.

Sibling gaps (not in this PR)

  • cics-crucible runners do not dispatch RUN children at waits or hand a START CHANNEL copy to the started task (separate corpus; no case uses either).
  • R1: a dispatched child's ENQ / DEQ / counter / SQL commands are refused rather than interleaved with the parent (needs a true interleaving scheduler; IBM silent on ordering).
  • asynccc ASYNCPNT (waiting FETCH CHILD with CHANNEL): no case; that corpus is not a burned estate.
  • The case file's channel / container names (equivalence_cics._CICS_NAME) are not checked against IBM's set.

🤖 Generated with Claude Code

…er set (Part of #4950)

CHANNELERR 1 / CONTAINERERR 18 on PUT CONTAINER; & < not-sign refused (IBM's pages disagree); other commands refuse.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

🐦‍⬛ Muninn Security Scan

✅ No security issues found.

🐦‍⬛ Powered by Muninn · Skald Lab

@squid-protocol squid-protocol added the shepherd:merge Maintainer: merge when green (auto-merge, squash). Guide: docs/ci.md label Oct 14, 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 14, 2026 00:48
@squid-protocol
squid-protocol enabled auto-merge (squash) October 14, 2026 00:48
@squid-protocol

Copy link
Copy Markdown
Owner Author

No description provided.

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