Propose CICS READ response guards
ProprietaryPropose a guard for application-team review when a standalone CICS READ is immediately followed by a copy of its output. Require consecutive single-statement sentences in one paragraph, ordinary equal-width PIC X fields and an existing fullword binary RESP field. Support only FILE or DATASET, INTO, RIDFLD, RESP and optional NOHANDLE. Resolve ordinary disjoint character key and output fields. The file name must be an ASCII literal of one to eight characters or an ordinary PIC X(8) field. Preserve every original command option. Do not add RESP, RESP2 or NOHANDLE. Other options remain unchanged. Bind the supplied accepted responses and approved error paragraph to an exact source path, program, SHA-256 snapshot and command line. Insert a typed IF sentence before the copy. Reject every response outside the supplied set through the approved existing paragraph. Prove that its direct jump path reaches GOBACK or plain CICS RETURN within 64 statements and 16 paragraphs. Permit simple no-ops, literal DISPLAY and bounded literal MOVE stores into validated local scalar fields on that path. Stores require complete ordinary source and unaliased storage. Preserve original sentences, periods, comments and exit statements. Support fixed-format UTF-8 source with consistent LF or CRLF line endings. Aliases, incomplete source, source-mode barriers, ambiguous exits and unsupported layout prevent changes. Report the exact barrier. The supplied contract establishes exit suitability. The local proof establishes termination and an unchecked output copy. This proposed fix does not establish record completeness, command success, caller behavior or transaction correctness. It introduces no new error routine, ABEND, retry, commit or rollback. A jump path may also end in exactly EXEC CICS RETURN END-EXEC with no options. Validate the complete embedded command and retain the existing path budgets and source barriers. This exits the current CICS logical level. It does not establish that the whole task terminates. Commands with response, routing, data-passing or activity options remain outside this proof. Preserve the original return command and report its actual source line. Also permit bounded default INITIALIZE on these terminal jump paths. Validate at most 16 local fields or groups and 64 elementary writes. Require complete ordinary unaliased storage. Integer defaults are zero and PIC X defaults are spaces within 256 characters per field. VALUE and FILLER phrases, replacement phrases, FILLER members, tables and unsupported storage prevent this proof. An explicit TO DEFAULT retains default behavior. Preserve every initialization and message before the existing terminal.
io. moderne. mainframe. security. ProposeCicsReadResponseGuardRequired
Exact repository-relative source path covered by the approved contract.
Exact program ID. Retain quotes for a literal ID. Literal contents match case exactly.
Lowercase SHA-256 of the complete UTF-8 source text without a byte order mark. The approved contract must cover this exact snapshot. Any source change prevents application.
One-based EXEC CICS READ line in the approved source snapshot.
Complete approved set of primary response numbers that permit copying this READ output. Supply 1 to 16 distinct decimal strings from 0 through 99999999. No success value is inferred. Separate values with commas.
Existing paragraph approved for every other response at this exact site. An optional IN or OF section qualifier is supported. The contract must establish that this path preserves required cleanup, messages and transaction behavior.
Provenance of the approved response and exit contract. The recipe records this input and does not fetch or infer the contract.
mod run . --recipe= io. moderne. mainframe. security. ProposeCicsReadResponseGuard \
-P sourcePath= security/ cbl/ VSCGBAD. cbl \
-P programName= VSCGBAD \
-P sourceSha256=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef \
-P commandLine=15 \
-P acceptedResponses=0 \
-P approvedExit= 'READ-ERROR IN ERROR-HANDLERS' \
-P contractSource= 'mainframe-fixtures/ README. md fictional READ response contract'Install it once from Recipe actions, then run it on every repository under the current directory. New to the Moderne CLI? Set it up.