COBOL PROCEED represents legacy flow control mechanisms and historical program branching capabilities within traditional programming environments, providing obsolescent continuation behavior for modified procedure branches, enabling sequential execution patterns following ALTER statement modifications, and maintaining backward compatibility with early COBOL programming paradigms that utilized dynamic procedure modification techniques. While PROCEED functionality remains supported for legacy system maintenance, modern COBOL programming practices favor structured programming constructs including PERFORM statements, conditional logic blocks, and explicit procedure calls that provide enhanced code readability, improved maintainability, and predictable execution flows across enterprise applications requiring clear program logic, systematic control structures, and reliable execution patterns throughout contemporary business application development and maintenance scenarios.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253*> Legacy PROCEED usage with ALTER statements *> WARNING: This is obsolete programming style - shown for historical reference IDENTIFICATION DIVISION. PROGRAM-ID. LEGACY-PROCEED-DEMO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-CONTROL-FLAGS. 05 WS-PROCESSING-MODE PIC X(10) VALUE "NORMAL". 05 WS-STEP-COUNTER PIC 9(3) VALUE 0. 05 WS-PROCESS-COUNT PIC 9(4) VALUE 0. PROCEDURE DIVISION. MAIN-LEGACY-DEMO. DISPLAY "=== LEGACY PROCEED DEMONSTRATION ===" DISPLAY "WARNING: This demonstrates obsolete programming techniques" *> Example of legacy ALTER/PROCEED pattern DISPLAY "Legacy Pattern Example:" *> Initialize processing MOVE "STEP-1" TO WS-PROCESSING-MODE PERFORM LEGACY-PROCESSING-LOOP *> Change processing mode using ALTER DISPLAY "Modifying flow with ALTER statement" ALTER LEGACY-BRANCH-POINT TO PROCEED TO STEP-2-PROCESSING MOVE "STEP-2" TO WS-PROCESSING-MODE PERFORM LEGACY-PROCESSING-LOOP DISPLAY "=== LEGACY DEMO COMPLETE ===" STOP RUN. LEGACY-PROCESSING-LOOP. DISPLAY "Processing in mode: " WS-PROCESSING-MODE ADD 1 TO WS-STEP-COUNTER GO TO LEGACY-BRANCH-POINT. LEGACY-BRANCH-POINT. *> This paragraph gets modified by ALTER statements GO TO STEP-1-PROCESSING. STEP-1-PROCESSING. DISPLAY "Executing Step 1 processing" MOVE "Initial processing completed" TO WS-OUTPUT-RECORD ADD 1 TO WS-PROCESS-COUNT. STEP-2-PROCESSING. DISPLAY "Executing Step 2 processing" MOVE "Secondary processing completed" TO WS-OUTPUT-RECORD ADD 1 TO WS-PROCESS-COUNT.
1234567891011*> Modern EVALUATE pattern replaces ALTER/PROCEED EVALUATE processing-mode WHEN "NORMAL" PERFORM normal-processing WHEN "PRIORITY" PERFORM priority-processing WHEN "EMERGENCY" PERFORM emergency-processing WHEN OTHER PERFORM default-processing END-EVALUATE
12345678910111213*> PERFORM with inline logic PERFORM VARYING step-counter FROM 1 BY 1 UNTIL step-counter > 5 EVALUATE step-counter WHEN 1 PERFORM setup-processing WHEN 2 PERFORM validation-processing WHEN 3 PERFORM business-logic WHEN OTHER PERFORM cleanup-processing END-EVALUATE END-PERFORM
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122IDENTIFICATION DIVISION. PROGRAM-ID. MIGRATION-DEMO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-MODERN-CONTROLS. 05 WS-PROCESSING-MODE PIC X(10). 05 WS-STEP-COUNTER PIC 9(3) VALUE 0. 05 WS-SUCCESS-COUNT PIC 9(4) VALUE 0. PROCEDURE DIVISION. MODERN-PROCESSING-DEMO. DISPLAY "=== MODERN STRUCTURED PROCESSING ===" PERFORM DEMONSTRATE-STRUCTURED-APPROACH PERFORM DEMONSTRATE-EVALUATE-PATTERN PERFORM DEMONSTRATE-PERFORM-PATTERN DISPLAY "=== MODERN DEMO COMPLETE ===" STOP RUN. DEMONSTRATE-STRUCTURED-APPROACH. DISPLAY "1. Structured Programming Approach:" *> Modern structured approach MOVE "NORMAL" TO WS-PROCESSING-MODE PERFORM MODERN-PROCESSING-FLOW MOVE "PRIORITY" TO WS-PROCESSING-MODE PERFORM MODERN-PROCESSING-FLOW. MODERN-PROCESSING-FLOW. ADD 1 TO WS-STEP-COUNTER DISPLAY "Modern processing in mode: " WS-PROCESSING-MODE EVALUATE WS-PROCESSING-MODE WHEN "NORMAL" PERFORM MODERN-STEP-1 WHEN "PRIORITY" PERFORM MODERN-STEP-2 WHEN OTHER PERFORM MODERN-DEFAULT-STEP END-EVALUATE DISPLAY "Modern processing completed for step " WS-STEP-COUNTER. MODERN-STEP-1. DISPLAY "Executing modern step 1 (Normal processing)" ADD 1 TO WS-SUCCESS-COUNT. MODERN-STEP-2. DISPLAY "Executing modern step 2 (Priority processing)" ADD 2 TO WS-SUCCESS-COUNT. MODERN-DEFAULT-STEP. DISPLAY "Executing default processing" ADD 1 TO WS-SUCCESS-COUNT. DEMONSTRATE-EVALUATE-PATTERN. DISPLAY " " DISPLAY "2. EVALUATE Pattern (replaces complex ALTER/PROCEED):" MOVE 0 TO WS-STEP-COUNTER PERFORM VARYING WS-STEP-COUNTER FROM 1 BY 1 UNTIL WS-STEP-COUNTER > 3 PERFORM EVALUATE-PROCESSING-STEP END-PERFORM. EVALUATE-PROCESSING-STEP. DISPLAY "Evaluating step " WS-STEP-COUNTER EVALUATE WS-STEP-COUNTER WHEN 1 DISPLAY " Initial setup processing" PERFORM SETUP-PROCESSING WHEN 2 DISPLAY " Data validation processing" PERFORM VALIDATION-PROCESSING WHEN 3 DISPLAY " Business logic processing" PERFORM BUSINESS-LOGIC-PROCESSING WHEN OTHER DISPLAY " Unknown step - skipping" END-EVALUATE. SETUP-PROCESSING. DISPLAY " Setting up data structures". VALIDATION-PROCESSING. DISPLAY " Validating input data". BUSINESS-LOGIC-PROCESSING. DISPLAY " Applying business rules". DEMONSTRATE-PERFORM-PATTERN. DISPLAY " " DISPLAY "3. PERFORM Pattern (structured loops and calls):" PERFORM PERFORM-BASED-PROCESSING. PERFORM-BASED-PROCESSING. DISPLAY "PERFORM-based processing:" MOVE 0 TO WS-STEP-COUNTER PERFORM PROCESS-RECORD VARYING WS-STEP-COUNTER FROM 1 BY 1 UNTIL WS-STEP-COUNTER > 3. PROCESS-RECORD. DISPLAY " Processing record " WS-STEP-COUNTER IF WS-STEP-COUNTER = 1 DISPLAY " First record - special handling" ELSE IF WS-STEP-COUNTER = 3 DISPLAY " Last record - finalization" ELSE DISPLAY " Standard record processing" END-IF END-IF.