Analyze current payload lengths before parser calls

Proprietary

Prove an exact whole-field COMPUTE of FUNCTION LENGTH with FUNCTION TRIM TRAILING before the approved parser CALL. Require complete rejection checks that leave only nonempty lengths within the approved bound. Evaluate numeric comparisons, Boolean combinations and numeric level-88 ranges over zero through the payload capacity. Preserve evidence through disjoint literal stores, default initialization and bounded read-only branches. Writes to the payload or counter, calls and unsupported effects discard it. Bound each computation to 64 following statements and branch nesting to 16 levels. Report plain field LENGTH as declared capacity. Require complete ordinary source and unaliased records. REPOSITORY declarations, alternate ENTRY, NEXT SENTENCE and address changes prevent proof. The contract supplies complete input and trailing-space padding semantics. This does not prove original transport length, general whitespace handling or payload syntax. Report evidence without source changes or vulnerability findings.

io.moderne.mainframe.security.AnalyzeCurrentPayloadLength

Required

Exact repository-relative source covered by the payload contract.

Exact program ID. Retain quotes for a literal ID.

Exact literal CALL target approved to consume the configured payload and content length.

One to 16 distinct outermost-first dotted declarations of complete records. The call must pass these records in this order by reference. The contract must establish their addressability and disjointness. Separate values with commas.

Exact outermost-first dotted PIC X field with one to 32767 characters. Its complete input must fit without upstream truncation. Local storage and explicitly approved incoming records are supported.

Exact ordinary local integer field consumed by the parser. Support DISPLAY, binary and packed decimal representations of at most 18 digits that represent zero through the payload capacity.

Approved upper bound from one through the payload capacity. The approved minimum is one.

Explicit approval that trailing spaces are padding and leading spaces are content. False reports that the required padding contract is missing.

Provenance of the complete input, padding policy, parser interface and addressable disjoint records. The recipe records this input and does not infer or fetch it.

mod run . --recipe=io.moderne.mainframe.security.AnalyzeCurrentPayloadLength \ -P sourcePath=security/cbl/VSPDGOOD.cbl \ -P programName=VSPDGOOD \ -P parserRoutine=VSPARSE \ -P parserArguments='[VS-PAYLOAD]' \ -P payloadField=VS-PAYLOAD.VS-PAYLOAD-TEXT \ -P lengthField=VS-PAYLOAD.VS-PAYLOAD-LENGTH \ -P maximumContentLength=8 \ -P trailingSpacesArePadding=true \ -P contractSource='mainframe-fixtures fictional current payload length 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.