The hidden landmine in COBOL’s PERFORM statement: a control flow puzzle
Blog post from Swimm
Swimm's exploration of COBOL's static code analysis reveals unexpected behaviors in the language's control flow, particularly with the PERFORM statement, which executes sequences of paragraphs similar to function calls in modern languages but relies on global variables for state management. An example illustrates how a GOTO statement can disrupt the normal control flow by leaving a "control block" on the stack, creating a scenario where execution unexpectedly jumps back to a previously executed section, akin to an "armed mine." This phenomenon highlights the complexity of accurately analyzing COBOL code, as it involves understanding not just the visible program structure but also the invisible control mechanisms that can alter execution paths dramatically. The article underscores the importance of comprehending these underlying mechanisms to effectively parse and analyze legacy COBOL code, given its potential for hidden states that influence program behavior beyond what is apparent in the source code.