MainframeMaster

COBOL Tutorial

COBOL PROCEED

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.

Legacy PROCEED Usage

Historical Flow Control Patterns
Understanding PROCEED in legacy COBOL programs
cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
*> 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.
Legacy Programming
Flow Control
Obsolete Syntax

Modern Alternatives to PROCEED

Structured Programming Patterns
Modern replacements for legacy PROCEED statements

EVALUATE Statement Pattern

cobol
1
2
3
4
5
6
7
8
9
10
11
*> 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

Structured PERFORM Pattern

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
*> 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

Migration Examples

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
IDENTIFICATION 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.

PROCEED Features and Capabilities

Legacy Functionality
  • • Dynamic procedure branching
  • • ALTER statement integration
  • • Sequential execution control
  • • Backward compatibility
Modern Alternatives
  • • EVALUATE statements
  • • PERFORM procedures
  • • IF-ELSE constructs
  • • Structured programming
Migration Benefits
  • • Improved code readability
  • • Better maintainability
  • • Easier debugging
  • • Reduced complexity
Best Practices
  • • Avoid in new development
  • • Refactor during maintenance
  • • Use structured alternatives
  • • Document legacy patterns

Best Practices

Related Pages