Analyze local COBOL PERFORM structure

Proprietary

Explain whether each PERFORM has a structure that the bounded local value models can inspect. Resolve noniterative calls to unique paragraphs. Allow explicit IN or OF section qualifiers. Inspect the expanded call tree across every branch. Report the first structural barrier and its source line. Explain unsupported target forms, procedural copies, missing names and ambiguous names separately. Bound inspection to 64 statements, 16 active paragraphs, 16 nested conditions and 64 WHEN labels per EVALUATE. Accept simple EXIT as a no-op. Other EXIT forms remain unsupported. Reject recursion, unsupported targets, transfers and unknown statement kinds. Report source barriers separately. Structural eligibility does not validate conditions, assignment effects, storage or caller values. Inspect SUBTRACT, SET, INITIALIZE and STRING structure without asserting supported operands or assignment effects. This supporting analysis produces no vulnerability findings or source changes. Plain DISPLAY of quoted ASCII text preserves local fields and does not inspect a status value or terminate processing. Accept at most 16 literals of at most 256 characters each. Device options, screen positioning, exception clauses, field reads and functions remain barriers.

io.moderne.mainframe.security.AnalyzeLocalPerformStructure
mod run . --recipe=io.moderne.mainframe.security.AnalyzeLocalPerformStructure

Install it once from Recipe actions, then run it on every repository under the current directory. New to the Moderne CLI? Set it up.