Skip to content

COBOL semantic-coverage assessment: new CICS corpus revealed 7 uncovered verb families (Async API scores zero concurrency) #2990

Description

@squid-protocol

What surfaced this

Four repos were added to data/corpus_cobol/ on 2026-09-13 to broaden CICS coverage — aws-mainframe-modernization-carddemo, cics-async-api-credit-card-application-example, cics-async-fetch-variation-example, cics-event-consumer. An empirical audit (every EXEC CICS line in the new repos run against all 52 rules in gitgalaxy/standards/language_standards/languages/cobol.py) found no verb is invisible (the EXEC CICS blanket in the embedded-language rule catches everything) but seven verb families carry no semantic signal — they fall through to the blanket only:

verbs (n in new corpus) semantics rule that should own it
RUN TRANSID (11) + FETCH CHILD/ANY/COMMANDS (9) Async API — CICS's task spawn/join model concurrency (currently ENQ/DEQ/WAIT/START/DELAY — pre-async-era)
STARTBR/READNEXT/READPREV/ENDBR (21) VSAM browse (cursor iteration) io
SEND / SEND TEXT (36) bare terminal output (non-map) ui_framework (has SEND MAP only)
HANDLE ABEND (10) abend-handler registration the handler/events rule (has HANDLE CONDITION only)
SYNCPOINT (7) UOW commit/rollback io or state_mutation (design call)
ASKTIME/FORMATTIME (10) time logic time_date_logic (rule exists, lacks the CICS idioms)
RETRIEVE (3) START's data partner concurrency

The headline: the Async API registers zero arch_concurrency — a modern CICS app full of parallel tasks scores as single-threaded.

Why the scope should be broader than these 7 rows

Four sample repos found seven gaps in an afternoon — the honest conclusion is not "add 7 verbs" but that the COBOL standard has never had a systematic semantic-coverage assessment against the language's real surface. Scope for this issue:

  1. Full CICS command inventory (the IBM command reference lists ~150 API commands) mapped to rule-or-deliberately-blanket, with the mapping recorded — so future gaps are diffs against a table, not archaeology. The audit harness from 2026-09-13 (rules × every EXEC CICS line, per-verb rule attribution) is the method; commit it as a reusable tool.
  2. The other embedded surfaces: EXEC SQL (Db2) and EXEC DLI (IMS) deserve the same table — SQL verbs are security-relevant (GRANT, dynamic PREPARE/EXECUTE IMMEDIATE = injection surface).
  3. Native COBOL beyond CICS: intrinsic functions, JSON PARSE/XML PARSE (modern COBOL 6), UNSTRING/STRING (buffer-adjacent), file-status idioms.
  4. JCL sibling pass (languages/jcl.py): the corpus now carries substantial JCL (GenApp 24%, CardDemo 6%); same method.
  5. Acceptance: every verb/idiom in the corpus ground-truth inventory is either (a) owned by a semantic rule, or (b) recorded as deliberately blanket-only with a one-line reason.

Process note

Rule changes go through the rule-contract discipline (crucible bless, baselines, ruff/mypy audits) — this is a dedicated-session task, not a drive-by patch. The corpus that powers the assessment is already in place.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature, sensor, or structural signaturelegacy-modernizationCOBOL refractor, dead-code extraction, and JCL forging

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions