Skip to content

CICS macro tables (DFHFCT/PCT/PPT/DCT/TST) into the resource map; CSD+macro merge names conflicts (Part of #5120) - #5153

Merged
squid-protocol merged 6 commits into
mainfrom
churn/5120-20261014T2130Z
Oct 14, 2026
Merged

squid-protocol merged 6 commits into
mainfrom
churn/5120-20261014T2130Z

Conversation

@squid-protocol

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

Copy link
Copy Markdown
Owner

Part of #5120.

What

The assembled CICS macro tables -- DFHFCT, DFHPCT, DFHPPT, DFHDCT, DFHTST -- are read as resource definitions in the same row shape the CSD path produces, and merged with CSD decks into one resource map.

  • core/cics_macro_tables.py (hlasm dialect -> csd_resources). Syntax read from IBM (cited in the module header with page numbers): CICS TS for OS/390 R3 CICS Resource Definition Guide SC33-1684-30 ch.13 (macro reference) and ch.16 (macro -> RDO attribute table); CICS for MVS/ESA Migration Guide V4R1 GC33-1162-04 ch.3; IBM APAR II05097.
    • FCT: TYPE=FILE,FILE= and the retained TYPE=DATASET,DATASET= ("exactly the same", RDG p.391/402), TYPE=REMOTE; DSNAME, RECFORM first element (U/V/F), KEYLEN, LRECL -> record_size.
    • PCT TYPE=ENTRY -> TRANSACTION; PPT TYPE=ENTRY -> PROGRAM, MAPSET or PARTITIONSET by the operand that names it.
    • DCT: INTRA / EXTRA / INDIRECT / REMOTE -> TDQUEUE. INTRA lifts TRANSID= (transid column) and TRIGLEV= (default 1 with TRANSID, max 32767, as TRIGGERLEVEL(n) in attributes). EXTRA takes ddname from DSCNAME and RECFORM/RECSIZE from its SDSCI; all twelve RECFORM words map to the CSD TDQUEUE spelling (FIXED/VARIABLE) with BLOCKFORMAT BLOCKED/UNBLOCKED and PRINTCONTROL ASA/MACHINE kept in attributes (RDG p.534 note 7). SDSCI has no DSNAME operand, so none is lifted.
    • TST: one TSMODEL per DATAID prefix; RECOVERY / SECURITY / REMOTESYSTEM / REMOTEPREFIX in attributes; TYPE=ENTRY = RECOVERY.
    • ASSUMED (manual not retrievable or silent): DFHPCT operand list (TRANSID/PROGRAM; the macro was removed from CICS/ESA 4.1), PPT PARTITIONSET=/PARTSET= spelling, SDSCI RECFORM=UNDEFINED (kept as text, no format claimed), VSAM-era FCT entries read with the BDAM operands. REFUSED: FCT RECSIZE (not an FCT operand), DATAID=(), TYPE=SHARED, INITIAL/FINAL/GROUP, unlisted TYPE / RECFORM words, DESTID over 4 chars is truncated only for EXTRA as the manual says.
  • Provenance: csd_resource_data gains source (CSD|MACRO) and macro_table; line_number is the macro statement's line. Healed into old DBs; a pre-scanner: parse CICS resource macro tables (DFHFCT / DFHPCT / DFHPPT / DFHDCT / DFHTST) into the resource map #5120 baseline restores as CSD. CSD rows gain no keys.
  • GalaxyIR.resource_map() / resource_conflicts(): per (type, name) merge with every definition's provenance; a field merges only if all stating definitions agree (no silent winner); attribute disagreements and only_in are named. Macro FILEs join dataset lineage via cics_file_datasets.

Class

Resource-definition sources (CSD, macro tables). Covered: FCT, PCT, PPT (program, mapset, partition set), DCT (incl. ATI trigger), TST.

Tests

tests/core_engine/test_cics_macro_tables.py (each table/TYPE, continuation, comments, lower case, malformed, CPU bound), tests/tools_recorders/test_csd_resource_data.py (round trip, delta, old-schema), tests/cobol_mainframe/test_cics_resource_map.py (real scans of tests/fixtures/cics_macro_estate/{tables_only,tables_and_csd}: merge, conflicts, only_in, dataset join).

Gates

pr_gates --fast 6/6; --ratchets 7 pass / 0 fail / 0 skipped (rerun after the IBM-syntax revision). Golden masters not re-run: no local language-crucible checkout; CSD rows are unchanged and the only new rows come from hlasm files that contain DFH table macros (CI's crucible-audit will show any mover).

Sibling gaps

DFHSIT/SRT/JCT/TCT/MCT; the CICS/VS and CICS/ESA 3.x Resource Definition (Macro) manuals themselves (to firm up the ASSUMED PCT/PPT operands); macro tables assembled inside JCL; runtime CEDA/CEMT state. tests/tools/era_tags.py untouched (PR #5150).

Cross-repo: none.

🤖 Generated with Claude Code

squid-protocol and others added 4 commits October 14, 2026 17:36
… provenance; merged CSD+macro map names conflicts (Part of #5120)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…s (Part of #5120)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…E=FILE + retained DATASET spelling, SDSCI RECFORM full value set, PPT MAPSET/PARTITIONSET, DCT INTRA TRANSID/TRIGLEV (Part of #5120)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@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 21:55
@squid-protocol
squid-protocol enabled auto-merge (squash) October 14, 2026 21:56
@squid-protocol

Copy link
Copy Markdown
Owner Author

PR #5153 @ bb8b75c: 1 failed check(s)

== Small audits (failure) -- real
https://github.com/squid-protocol/gitgalaxy/actions/runs/38643855142/job/116125765160
repro: no local equivalent; read the check page
errors:
##[error]Process completed with exit code 1.
log tail:
{
echo "## ⚠️ This PR modifies a golden-crucible fixture"
echo ""
echo "Files changed ($(echo "$CHANGED" | wc -l) golden-master part(s)):"
echo '' echo "$CHANGED" | head -n 100 echo ''
echo ""
echo "These files should only ever change via `tests/tools/update_golden_master.py`,"
echo "and the PR description should explain why GitGalaxy's output was expected to"
echo "change. Reviewers: confirm the description covers this before approving."
echo "For the semantic diff: `python tests/tools/bless_scope.py --from-head tests/golden_master_audit`."
} >> "$GITHUB_STEP_SUMMARY"
shell: /usr/bin/bash -e {0}
env:
pythonLocation: /opt/hostedtoolcache/Python/3.12.15/x64
PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.12.15/x64/lib/pkgconfig
Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.12.15/x64
Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.12.15/x64
Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.12.15/x64
LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.12.15/x64/lib
BASE_REF: main
##[endgroup]
No golden master fixture changes in this PR.
Post job cleanup.
[command]/usr/bin/git version
git version 2.55.0
Temporarily overriding HOME='/home/runner/work/_temp/fcf407b0-035c-45de-b13d-6591b8269f70' before making global git config changes
Adding repository directory to the temporary git global config as a safe directory
[command]/usr/bin/git config --global --add safe.directory /home/runner/work/gitgalaxy/gitgalaxy
Removing SSH command configuration
[command]/usr/bin/git config --local --name-only --get-regexp core.sshCommand
[command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
Removing HTTP extra header
[command]/usr/bin/git config --local --name-only --get-regexp http.https://github.com/.extraheader
[command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http.https://github.com/.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :"
Removing includeIf entries pointing to credentials config files
[command]/usr/bin/git config --local --name-only --get-regexp ^includeIf.gitdir:
[command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url
Cleaning up orphan processes

@squid-protocol squid-protocol added the shepherd:needs-fix Bot: a real failure on this head; see the digest comment. Guide: docs/ci.md label Oct 14, 2026
squid-protocol and others added 2 commits October 14, 2026 17:57
…s writes dynamically (Part of #5120)

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

Copy link
Copy Markdown
Owner Author

No description provided.

@squid-protocol squid-protocol removed the shepherd:needs-fix Bot: a real failure on this head; see the digest comment. Guide: docs/ci.md label Oct 14, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🐦‍⬛ Muninn Security Scan

✅ No security issues found.

🐦‍⬛ Powered by Muninn · Skald Lab

@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