Repository navigation
det + stub: EXEC CICS RETURN ... IMMEDIATE and LINK ... SYNCONRETURN (Part of #4270) - #4739
Merged
Merged
Conversation
…(Part of #4270) RETURN TRANSID ... IMMEDIATE attaches TRANSID's task at once with the COMMAREA, ahead of the terminal's next input (CicsTask.returnImmediate, GGCRETI, the crucible runner's new `immediate` trigger); INVREQ RESP2 1 (no terminal) / 2 (below the highest level) and LENGERR RESP2 11 return to the program. LINK SYNCONRETURN is "ignored if the link is local" (IBM), so it is accepted and does nothing. What IBM leaves open is refused by name (register X27). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MQNoe4wPJgr7dbUvs3DG6D
…'s own (an XCTL always has one) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MQNoe4wPJgr7dbUvs3DG6D
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MQNoe4wPJgr7dbUvs3DG6D
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 #4270 (slice: RETURN ... IMMEDIATE, LINK ... SYNCONRETURN).
What
After #4728 the census named
RETURN IMMEDIATE(9 programs, 5 of them the CBSA set BNK1CAC / BNK1CRA / BNK1DAC / BNK1DCS / BNK1TFN) andLINK SYNCONRETURN(10 programs) as the next blockers. Both were refused whole ("IMMEDIATE ignored" was the old test comment: no corpus program may have the option silently dropped). IBM is the reference (CICS TS 6.x), register X27:RETURN TRANSID(x) [COMMAREA LENGTH] IMMEDIATE(EXEC CICS RETURN): "ensures that the transaction specified in the TRANSID option is attached as the next transaction regardless of any other transactions enqueued by ATI for this terminal. The next transaction starts immediately and appears to the operator as having been started by terminal data"; the COMMAREA "is passed to the next program that runs at the terminal".CicsTask.returnImmediate/GGCRETIend the task with a RETURN event that saysimmediate; the cics-crucible runner (both sides) attaches the task at once, at the same virtual time, ahead of any expired START request, without using up the terminal's next operator step (a newimmediatetrigger). It can fail and then returns to the program: INVREQ RESP2 1 (task with no terminal), INVREQ RESP2 2 (below the highest logical level), LENGERR RESP2 11 (COMMAREA length below 0 or past 32763), all as IBM lists them. Nothing is guessed: the task's terminal is a stated fact (withTermid,$GGCICS_FACILITY; unstated in the stub, refused).LINK ... SYNCONRETURN(EXEC CICS LINK): "SYNCONRETURN is only applicable to remote links, it is ignored if the link is local." Every program here is local (SYSID stays refused by name), so the option is accepted and changes nothing: the linked program does not get a unit of work of its own, a SYNCPOINT in it is the caller's. The remote-only conditions (INVREQ RESP2 14, ROLLEDBACK RESP2 29, SYSIDERR, TERMERR) cannot occur.TD. IBM does not state the immediate task's EIBAID or what a terminal RECEIVE returns in it, so the runner gives it none (the log'seibaidis null) and the case reads neither.The spec entries (
gitgalaxy/standards/cics/commands/program.py) gainIMMEDIATE,SYNCONRETURNand RETURN's INVREQ / LENGERR outcomes; the stub reads them.Proof (against the case branch,
--unpinned: no tag, no pin bump)New cics-crucible case
pseudo-conversational/pc-return-immediate(companion PR below), 4 scenarios hand-traced from IBM's pages (immediate,synconreturn,link-level2,no-terminal): cobol-stub 4/4; java-ported (det port, 34 + 12 + 7 + 5 statements, 0 holes) 4/4.det_port.py checkvs origin/main: 79/79 ports unchanged (no translation moved).proof_sweep.py --det-only --skip-db2: "sweep: as expected" (mortgage-mpmt NOT PROVEN, a baseline entry; Db2 cases skipped, as the det-sweep workflow does; the first run caught my stub-side XCTL parse bug, fixed in this PR).pr_gates --ratchets7/7,--fast5/5.evidence.py status: the same 45 records stale as on origin/main (harness / generator / oracle fingerprints; none stale by this slice's port, case, corpus, differences or options). Unit tests for the translator, the CicsTask runtime, the stub C, the harness, the spec entries and the crucible event table (the table check leaves the keys the pinned schema lacks out until the pin moves:crucible_events.UNRELEASED).Census (before -> after, translation only, burned + census corpora, base 63c1a6a)
COMPUTE FUNCTION NUMVALin a floating-point expression (oracle_assumptions.md C6): BNK1CAC and BNK1TFN (whole with it: it is their only gap), BNK1CRA (also an INQUIRE), BNK1UACSET ... TO NULLpointers: BNK1DAC (its only remaining holes, 4 statements), BNK1DCS, BNK1UAC, BNK1CCA: it needs a decision on the 4-byte (IBM) vs 8-byte (GnuCOBOL) pointer in a COMMAREA (the "data after a POINTER" refusal CREACC and INQACCCU already carry)RECEIVE MAP ... ASIS: BNK1DCS, BNK1CCSINQUIRE(BNK1CRA)Cross-repo
Companion: squid-protocol/cics-crucible#13 (the case, plus the additive SPEC change: the
immediatetrigger kind, RETURN's optionalimmediate/resp/resp2, schema and validate.py). Merge it first, then a crucible release + pin bump (not done here; the pin is untouched, so CI's cics-crucible job does not see the new case until then).🤖 Generated with Claude Code
https://claude.ai/code/session_01MQNoe4wPJgr7dbUvs3DG6D