Skip to content

Releases: squid-protocol/cics-crucible

v0.9.0

Choose a tag to compare

@squid-protocol squid-protocol released this 16 Oct 18:22
3ca75ae

v0.9.0

Format cics-crucible/1 unchanged. SPEC changes are additive (an HTTP peer model for inbound requests; browse and SET forms for file control; QIDERR for an undefined TD queue). Eight cases added (25 scenarios): 43 cases, 156 scenarios in all (v0.8.0: 35 and 131). All 43 pass tools/validate.py, and the 35 v0.8.0 cases still validate under this release's validator and schemas. No log corrected: no file under a pre-existing case changed.

Cases added

  • commarea-mismatch: ca-get-container-set (GET CONTAINER SET(ptr) FLENGTH: output-only FLENGTH, repeated GET SET, GET SET after a replacing PUT, CONTAINERERR RESP2 10, CHANNELERR RESP2 2), 2 scenarios, gitgalaxy#5042 C3 (#30)
  • commarea-mismatch: ca-address-twa-tctua (ADDRESS TWA / TCTUA: a TWA shared by the programs of a task, TWASIZE(0) gives X'FF000000', a TCTUA outlives the task), 3 scenarios, gitgalaxy#5079 C2 (#32)
  • commarea-mismatch: ca-address-eib-commarea (ADDRESS EIB read after a READQ TD QIDERR, ADDRESS COMMAREA written through, no COMMAREA gives the null value), 3 scenarios, gitgalaxy#5079 X59 (#38)
  • condition-handling: hc-readq-td (READQ TD destructive FIFO read, QZERO, QIDERR, DELETEQ TD then READQ, LENGERR), 6 scenarios, gitgalaxy#5079 C4 (#33)
  • condition-handling: hc-file-read-set (READ SET, STARTBR / READNEXT / READPREV SET, NOTFND RESP2 80, ENDFILE RESP2 90), 4 scenarios, gitgalaxy#5042 C4 (#34)
  • condition-handling: hc-counter-increment-wrap (GET DCOUNTER INCREMENT, WRAP at the default maximum, GET at the limit without WRAP is SUPPRESSED RESP2 101), 3 scenarios, gitgalaxy#4770 C2 (#35)
  • condition-handling: hc-counter-shared-namespace (a DCOUNTER read by COUNTER commands: LENGERR RESP2 001 / 002 / 003; DEFINE of a name under the other command is INVREQ 202), 3 scenarios, gitgalaxy#4770 C3 (#37)
  • ghost-tasks: gt-http-inbound (an inbound HTTP request is a task: SERVER URIMAP to an alias transaction, WEB RECEIVE, WEB SEND to a stated client peer), 1 scenario, gitgalaxy#4767 C2 (#31)

SPEC and tooling (additive)

  • HTTP peer: scenario requests, case peers, WEB-RECEIVE / WEB-SEND events, http tasks, validator rule 9 (#31).
  • File control: STARTBR, READNEXT / READPREV, ENDBR events, the set flag on READ, and the browse validator rules (#34).
  • TD queues: QIDERR for a queue the CSD does not define, and READQ TD after DELETEQ TD is QZERO (#33). These tighten the wording of three existing event rows; no existing case changes.

Not in this release

  • #39 (gt-web-server-receive, gitgalaxy#4767 C3) merged after the tagged commit and goes in the next release.

gitgalaxy pins this release in a separate PR, which re-baselines the runner and re-proves the committed ports.

v0.8.0

Choose a tag to compare

@squid-protocol squid-protocol released this 15 Oct 13:17
afc1db0

v0.8.0

Format cics-crucible/1 unchanged. SPEC changes are additive (intrapartition TD queues: CSD TDQUEUE, td_queues, READQ / WRITEQ / DELETEQ TD events; file-control events READ UPDATE / REWRITE / UNLOCK with final.files and a data/ seed). Nine cases added (23 scenarios), no log corrected (no expected log under a pre-existing case changed; one citation line in ca-channel-containers/NOTES.md was corrected: RETURN CHANNEL is not described on the IBM "current channel" page).

Cases added

  • commarea-mismatch: ca-container-ccsid (FROMCCSID / INTOCCSID 037 and 1208, DATATYPE(CHAR), CCSIDERR RESP2 3 on a BIT container), 2 scenarios, gitgalaxy#5005 C2
  • commarea-mismatch: ca-container-byteoffset (GET CONTAINER BYTEOFFSET: partial reads, FLENGTH, negative offset, PREPEND), 2 scenarios, gitgalaxy#5005 C3
  • pseudo-conversational: pc-return-channel (RETURN TRANSID CHANNEL: carry, modify across turns, INVREQ RESP2 2 below level 1), 3 scenarios, gitgalaxy#5005 C1
  • commarea-mismatch: ca-address-commarea (ADDRESS COMMAREA), 3 scenarios, gitgalaxy#5079
  • commarea-mismatch: ca-getmain-pointer (GETMAIN SET FLENGTH INITIMG, SET ADDRESS OF, pointer arithmetic), 2 scenarios, gitgalaxy#5042
  • commarea-mismatch: ca-receive-retrieve-set (RECEIVE SET / RETRIEVE SET into a POINTER), 3 scenarios, gitgalaxy#5042
  • ghost-tasks: gt-web-parse-url (WEB PARSE URL: parts, default ports, INVREQ 28 / 65, LENGERR 8 / 29 / 30), 3 scenarios, gitgalaxy#4767
  • condition-handling: hc-dcounters (DEFINE / GET / QUERY / DELETE DCOUNTER, 8-byte unsigned VALUE as hex), 2 scenarios, gitgalaxy#4770
  • condition-handling: hc-file-unlock (READ UPDATE / REWRITE / UNLOCK), 3 scenarios, gitgalaxy#5079 C5

v0.6.0

Choose a tag to compare

@squid-protocol squid-protocol released this 09 Oct 05:01
b794aa8

v0.6.0

Format cics-crucible/1 unchanged. SPEC changes are additive (RETURN IMMEDIATE: immediate trigger, optional immediate/resp/resp2 on RETURN events). Four cases added (11 scenarios), no log corrected (no file under a pre-existing case changed).

Cases added

  • condition-handling: hc-deedit-uctranst (BIF DEEDIT; INQUIRE / SET TERMINAL UCTRANST), 3 scenarios, gitgalaxy#4728
  • condition-handling: hc-resp-options (FORMATTIME RESP, ASKTIME NOHANDLE, READQ TS LENGTH(LENGTH OF), RECEIVE MAP ASIS), 3 scenarios, gitgalaxy#4748
  • pseudo-conversational: pc-return-immediate (RETURN ... IMMEDIATE; LINK ... SYNCONRETURN), 4 scenarios, gitgalaxy#4739
  • ghost-tasks: gt-send-text-terminal (SEND TEXT ... TERMINAL, the default disposition), 1 scenario, gitgalaxy#4270

v0.5.0

Choose a tag to compare

@squid-protocol squid-protocol released this 06 Oct 19:27
9ee42d1

Format unchanged: cics-crucible/1 (SPEC.md), with additive SPEC additions only, so every v0.4.0 file still validates. 18 cases (was 16) and 86 scenarios (was 76). No log was corrected: no file under an existing case changed.

Two cases cover interval control and ASSIGN, for gitgalaxy#4270 (slices 2 and 3, gitgalaxy PRs #4578 and #4582). The expected logs were written by hand from IBM's CICS Application Programming Reference before running against any implementation. The citations are in each case's NOTES.md. All 18 cases pass tools/validate.py.

Added, by trap

Both cases are in ghost-tasks.

  • gt-start-options (7 scenarios, #7). START options beyond INTERVAL / TIME:
    • the data options RTRANSID / RTERMID / QUEUE, and RETRIEVE's ENVDEFERR;
    • RETRIEVE with no INTO;
    • AFTER / AT, and INVREQ's RESP2;
    • a REQID reused with FROM (IOERR);
    • a RUN TRANSID child task.
  • gt-assign-startcode (3 scenarios, #9). ASSIGN STARTCODE, USERID, FACILITY, SCRNHT and SCRNWD:
    • how a task was started (terminal input, or START with or without FROM);
    • the default user;
    • the terminal facts a task with no terminal does not have (INVREQ).

SPEC additions (additive)

  • START / RETRIEVE events may carry rtransid / rtermid / queue.
  • AFTER / AT are recorded as the interval / time they amount to.
  • TIME / AT rules are filled in from IBM's expiration-time rules:
    • a time not later than now is tomorrow, unless it is within the last six hours (then it expires immediately);
    • an hours component above 23 means a following day.
  • New RUN event, and a {"kind": "run"} task trigger for a RUN TRANSID child.
  • The reference region's default user is CICSUSER.

Also on main since v0.4.0

  • RELEASING.md lists v0.4.0 (#8).

gitgalaxy moves its pin to v0.5.0 in a separate PR, which re-baselines the runner (30 added cells, no existing cell changed) and re-proves the committed ports.

v0.4.0

Choose a tag to compare

@squid-protocol squid-protocol released this 06 Oct 17:08
2d01515

Format unchanged: cics-crucible/1 (SPEC.md). Every v0.3.0 file still validates, and no SPEC or tool changed. 16 cases (was 15) and 76 scenarios (was 74). No log was corrected: no file under an existing case changed.

One new case covers CICS channels and containers, for gitgalaxy#4270 (slice 1, gitgalaxy PR #4575). Its expected logs were written by hand from IBM's CICS Application Programming Reference before running against any implementation. The citations and the ambiguities the scenarios avoid are in the case's NOTES.md. All 16 cases pass tools/validate.py.

Added, by trap

One case in commarea-mismatch. No other trap changed.

  • ca-channel-containers (CACHAN / CACHSUB / CACHXB / CACHERR, 2 scenarios, gitgalaxy#4270). A channel passes the data instead of a COMMAREA.
    • round-trip: PUT CONTAINER (CHAR, APPEND, BIT), LINK CHANNEL to a program that works only through its current channel, and XCTL CHANNEL. The callee reads (whole, truncated with LENGERR, NODATA), misses a container (CONTAINERERR) and a channel (CHANNELERR), deletes, replies, and handles CONTAINERERR. The caller sees the callee's changes.
    • unhandled-containererr: GET CONTAINER of a missing container with neither RESP nor HANDLE CONDITION abends AEZJ.

Also on main since v0.3.0

  • RELEASING.md now covers tags v0.1.0 to v0.3.0 and the PINNED_REF pin (#5).

gitgalaxy moves its pin to v0.4.0 in a separate PR, which re-baselines the runner and re-proves the committed ports.

v0.3.0

Choose a tag to compare

@squid-protocol squid-protocol released this 06 Oct 08:03
f8aaf95

Format unchanged: cics-crucible/1 (SPEC.md). The additions are additive and every v0.2.0 file still validates. 15 cases (was 10) and 74 scenarios (was 44). No log was corrected: no file under an existing case changed.

Five condition-handling cases cover the terminal-RECEIVE conditions and the handler forms that gitgalaxy #4413 and #4414 (with #4502) asked for. Each expected log was written by hand from IBM's documentation before it was run against any implementation. Every citation, and every ambiguity the scenarios were built to avoid, is in the case's NOTES.md. All 15 cases pass tools/validate.py.

Added, by trap

All five are in condition-handling. No other trap changed.

  • hc-terminal-receive (HCTERM, 7 scenarios, gitgalaxy#4413). Covers unformatted terminal RECEIVE and SEND CONTROL.
    • lengerr-resp, lengerr-handled and lengerr-default: LENGTH in/out, with LENGERR caught by RESP, by HANDLE CONDITION, or by default (AEIV).
    • handler-unused: a HANDLE CONDITION that is set but never fires.
    • in-pieces: MAXLENGTH NOTRUNCATE keeps the rest of the input for the next RECEIVE.
    • set-address: SET(ADDRESS OF).
    • device-controls: SEND CONTROL with CURSOR.
  • hc-terminal-eoc (HCEOC, 3 scenarios, gitgalaxy#4413). The RECEIVE on an LUTYPE2 terminal raises EOC.
    • eoc-resp: caught by RESP.
    • eoc-handled: caught by HANDLE CONDITION.
    • eoc-default: ignored by default.
  • hc-handle-aid (HCAID, 9 scenarios, gitgalaxy#4414). Covers HANDLE AID after a terminal RECEIVE.
    • own-label: a key's own label.
    • anykey-not-enter and anykey-pf: ANYKEY, which does not take ENTER.
    • deactivated: a key deactivated by a HANDLE AID that has no label.
    • resp-no-aid: RESP ignores the AID.
    • push-suspends and pop-restores: PUSH HANDLE and POP HANDLE.
    • clear-no-data and pa1-anykey: CLEAR or PA1 starts a task whose first RECEIVE returns no data.
  • hc-ignore-error (HCIGN, 9 scenarios, gitgalaxy#4414 / #4502)
    • ignored: one LENGERR under IGNORE CONDITION.
    • error-label: HANDLE CONDITION ERROR.
    • own-before-error and ignore-before-error: a condition's own HANDLE or IGNORE takes precedence over ERROR.
    • ignore-overrides-handle: IGNORE overrides HANDLE.
    • push-suspends-ignore and push-suspends-error: PUSH HANDLE suspends IGNORE and ERROR (AEIV).
    • pop-restores-ignore: POP HANDLE restores them.
    • pop-nothing-pushed: POP HANDLE with nothing pushed raises INVREQ, which goes to ERROR.
  • hc-eoc-error (HCEOE, 2 scenarios, LUTYPE2 terminal, gitgalaxy#4414)
    • eoc-not-error: HANDLE CONDITION ERROR does not take EOC, whose default action is to ignore it.
    • eoc-own-label: EOC's own label does take it.

Format additions (still cics-crucible/1)

  • SPEC section 2, Terminal. The reference terminal is a 3270 logical unit (DEVICE(3270)), whose RECEIVE raises no EOC. A case CSD may define the terminal as DEVICE(LUTYPE2) instead. On that device an input message is one chain, and the RECEIVE that returns its last byte raises EOC. This follows IBM, EXEC CICS RECEIVE (3270 logical) vs RECEIVE (LUTYPE2/LUTYPE3).
  • SPEC section 6, SEND-CONTROL. options is a sorted subset of ERASE ERASEAUP FREEKB ALARM FRSET CURSOR. With CURSOR, the event carries cursor: {"offset": n}. schema/expected.schema.json and tools/validate.py check both rules, and validate.py also rejects any TYPETERM DEVICE other than 3270 or LUTYPE2.

Log corrections

None.

Lower-confidence statement added (README)

Case / scenario Statement What IBM says
hc-terminal-eoc (all) An LUTYPE2 input message of a few bytes is a single-RU chain, so the RECEIVE that returns it raises EOC. RECEIVE (LUTYPE2/LUTYPE3) lists EOC; RECEIVE (3270 logical) does not. That an inbound 3270 message is one chain comes from SNA, not from a CICS sentence.

Downstream (gitgalaxy)

gitgalaxy re-baselined at this commit (f8aaf95) with tests/tools/cics_crucible.py --update-baseline. That adds 130 cells.

  • 40 pass: engine-facts and forge-compile for each new case, and cobol-stub for each of the 30 new scenarios.
  • 90 are ledgered expected failures:
    • 30 on the java side: the generated runTask is still the unported stub.
    • 30 on java-ported and 30 on java-facade: the new cases have no committed ports yet.

No cell of any v0.2.0 case moved, and no coverage record of a v0.2.0 program moved. The pin bump is the gitgalaxy PR "chore: pin cics-crucible v0.3.0 (#4413, #4414 cases)".

One coverage note for a future scenario: HCEOE's GOT-ERROR label is never entered. hc-eoc-error shows that ERROR does not take EOC, so no scenario reaches that paragraph. A scenario that raises some other condition under ERROR would reach it.

v0.2.0

Choose a tag to compare

@squid-protocol squid-protocol released this 30 Sep 12:30
94f2afc

Format unchanged: cics-crucible/1 (SPEC.md). 10 cases, 44 scenarios (was 37). No log was corrected.

Seven scenarios close every COBOL coverage gap that gitgalaxy's tracer found (gitgalaxy #4023). With them, every program's live paragraphs and branch outcomes are reached. Each log was written by hand from IBM's documentation before it was run against any implementation. Citations are in each case's NOTES.md.

Added, by trap

  • commarea-mismatch / ca-xctl-versions: direct-entry. CA03 typed directly, so there is no COMMAREA and EIBCALEN is 0 (EIB fields).
  • ghost-tasks / gt-start-retrieve: unknown-mode. GT01 Z matches no EVALUATE arm, so no START is issued.
  • hex-attributes / hx-attr-bytes: pa-key-mapfail. PA1 on the second task: RECEIVE MAP gets MAPFAIL, handled by RESP. The DATAONLY reply is in the README's lower-confidence table.
  • pseudo-conversational / pc-aid-menu: invalid-option. OPT 9 takes the menu's WHEN OTHER.
  • pseudo-conversational / pc-wizard:
    • clear-and-bad-amount: CLEAR on the confirm screen, a MAPFAIL amount, and PF5.
    • back-clear-keeps-amount: PF7, CLEAR, then ENTER with no data. The amount keeps MDT off, so MAPFAIL.
    • cancel-first-screen: PF3 on the first screen.

Merged in #2.

v0.1.0

Choose a tag to compare

@squid-protocol squid-protocol released this 29 Sep 16:53
0c942cb

First release: case format cics-crucible/1 (SPEC.md), schema + validator + GnuCOBOL syntax CI, 10 original cases / 37 scenarios over 5 traps (condition handling, hex attributes, COMMAREA mismatch, ghost tasks, pseudo-conversational). Expected logs hand-written from IBM CICS documentation and independently reviewed (0 wrong-oracle findings; see PR #1). Pinned by gitgalaxy (squid-protocol/gitgalaxy#3989).