MainframeMaster

COBOL Tutorial

COBOL PROCEDURE

The COBOL PROCEDURE division represents comprehensive executable logic and sophisticated program control capabilities within enterprise business environments, providing advanced processing mechanisms for business logic implementation, enhanced structural features for modular programming, and intelligent execution control capabilities that enable precise program flow management, optimal procedural organization workflows, and systematic code execution while maintaining logic clarity, ensuring predictable program behavior, and enabling flexible programming architectures across business applications requiring exact procedural control, modular code organization, and reliable execution management throughout sophisticated enterprise processing and business logic implementation scenarios.

Basic PROCEDURE Division Structure

Fundamental Procedure Organization
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
*> Basic PROCEDURE division structure and organization IDENTIFICATION DIVISION. PROGRAM-ID. PROCEDURE-DEMO. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT EMPLOYEE-FILE ASSIGN TO "EMPLOYEE.DAT" ORGANIZATION IS SEQUENTIAL ACCESS IS SEQUENTIAL. DATA DIVISION. FILE SECTION. FD EMPLOYEE-FILE. 01 EMPLOYEE-RECORD. 05 EMP-ID PIC X(8). 05 EMP-NAME PIC X(30). 05 EMP-DEPARTMENT PIC X(15). 05 EMP-SALARY PIC 9(7)V99. 05 EMP-HIRE-DATE PIC 9(8). WORKING-STORAGE SECTION. 01 WS-CONTROL-FLAGS. 05 WS-EOF-FLAG PIC X VALUE 'N'. 05 WS-ERROR-FLAG PIC X VALUE 'N'. 05 WS-PROCESSING-FLAG PIC X VALUE 'Y'. 01 WS-COUNTERS. 05 WS-RECORD-COUNT PIC 9(6) VALUE 0. 05 WS-ERROR-COUNT PIC 9(4) VALUE 0. 05 WS-PROCESSED-COUNT PIC 9(6) VALUE 0. 01 WS-CALCULATIONS. 05 WS-TOTAL-SALARY PIC 9(9)V99 VALUE 0. 05 WS-AVERAGE-SALARY PIC 9(7)V99 VALUE 0. 05 WS-DEPARTMENT-TOTAL PIC 9(8)V99 VALUE 0. *> ================================================================ *> PROCEDURE DIVISION *> ================================================================ PROCEDURE DIVISION. *> ---------------------------------------------------------------- *> MAIN CONTROL SECTION *> ---------------------------------------------------------------- MAIN-CONTROL SECTION. PROGRAM-START. DISPLAY "=== PROCEDURE DIVISION DEMONSTRATION ===" DISPLAY " " *> Initialize program PERFORM INITIALIZATION-PROCEDURES *> Main processing logic PERFORM MAIN-PROCESSING-PROCEDURES *> Finalization and cleanup PERFORM FINALIZATION-PROCEDURES DISPLAY " " DISPLAY "=== PROGRAM EXECUTION COMPLETE ===" STOP RUN. *> ---------------------------------------------------------------- *> INITIALIZATION SECTION *> ---------------------------------------------------------------- INITIALIZATION-SECTION SECTION. INITIALIZATION-PROCEDURES. DISPLAY "Performing initialization procedures..." PERFORM INITIALIZE-VARIABLES PERFORM OPEN-FILES PERFORM VALIDATE-ENVIRONMENT DISPLAY "✅ Initialization complete" DISPLAY " ". INITIALIZE-VARIABLES. DISPLAY " Initializing program variables..." MOVE 'N' TO WS-EOF-FLAG MOVE 'N' TO WS-ERROR-FLAG MOVE 'Y' TO WS-PROCESSING-FLAG MOVE ZERO TO WS-RECORD-COUNT MOVE ZERO TO WS-ERROR-COUNT MOVE ZERO TO WS-PROCESSED-COUNT MOVE ZERO TO WS-TOTAL-SALARY MOVE ZERO TO WS-AVERAGE-SALARY MOVE ZERO TO WS-DEPARTMENT-TOTAL DISPLAY " ✓ Variables initialized". OPEN-FILES. DISPLAY " Opening required files..." OPEN INPUT EMPLOYEE-FILE IF FILE-STATUS NOT = "00" DISPLAY " ❌ Error opening employee file: " FILE-STATUS MOVE 'Y' TO WS-ERROR-FLAG ELSE DISPLAY " ✓ Employee file opened successfully" END-IF. VALIDATE-ENVIRONMENT. DISPLAY " Validating execution environment..." *> Check for errors during initialization IF WS-ERROR-FLAG = 'Y' DISPLAY " ❌ Environment validation failed" PERFORM EMERGENCY-SHUTDOWN ELSE DISPLAY " ✓ Environment validation passed" END-IF. *> ---------------------------------------------------------------- *> MAIN PROCESSING SECTION *> ---------------------------------------------------------------- MAIN-PROCESSING-SECTION SECTION. MAIN-PROCESSING-PROCEDURES. DISPLAY "Performing main processing procedures..." PERFORM EMPLOYEE-PROCESSING-LOOP PERFORM CALCULATE-STATISTICS PERFORM GENERATE-REPORTS DISPLAY "✅ Main processing complete" DISPLAY " ". EMPLOYEE-PROCESSING-LOOP. DISPLAY " Processing employee records..." PERFORM READ-FIRST-EMPLOYEE PERFORM UNTIL WS-EOF-FLAG = 'Y' OR WS-ERROR-FLAG = 'Y' PERFORM PROCESS-EMPLOYEE-RECORD PERFORM READ-NEXT-EMPLOYEE END-PERFORM DISPLAY " ✓ Processed " WS-PROCESSED-COUNT " employee records". READ-FIRST-EMPLOYEE. READ EMPLOYEE-FILE AT END MOVE 'Y' TO WS-EOF-FLAG DISPLAY " 📄 No employee records found" NOT AT END ADD 1 TO WS-RECORD-COUNT END-READ. READ-NEXT-EMPLOYEE. READ EMPLOYEE-FILE AT END MOVE 'Y' TO WS-EOF-FLAG DISPLAY " 📄 End of employee file reached" NOT AT END ADD 1 TO WS-RECORD-COUNT END-READ. PROCESS-EMPLOYEE-RECORD. DISPLAY " Processing employee: " EMP-ID " - " EMP-NAME PERFORM VALIDATE-EMPLOYEE-DATA IF WS-ERROR-FLAG = 'N' PERFORM CALCULATE-EMPLOYEE-METRICS PERFORM UPDATE-DEPARTMENT-TOTALS ADD 1 TO WS-PROCESSED-COUNT ELSE ADD 1 TO WS-ERROR-COUNT DISPLAY " ⚠️ Employee record validation failed" END-IF. VALIDATE-EMPLOYEE-DATA. *> Reset error flag for this record MOVE 'N' TO WS-ERROR-FLAG *> Validate employee ID IF EMP-ID = SPACES OR EMP-ID = LOW-VALUES DISPLAY " ❌ Invalid employee ID" MOVE 'Y' TO WS-ERROR-FLAG END-IF *> Validate employee name IF EMP-NAME = SPACES OR EMP-NAME = LOW-VALUES DISPLAY " ❌ Invalid employee name" MOVE 'Y' TO WS-ERROR-FLAG END-IF *> Validate salary IF EMP-SALARY <= 0 DISPLAY " ❌ Invalid salary amount: " EMP-SALARY MOVE 'Y' TO WS-ERROR-FLAG END-IF *> Validate hire date IF EMP-HIRE-DATE <= 0 OR EMP-HIRE-DATE > 99999999 DISPLAY " ❌ Invalid hire date: " EMP-HIRE-DATE MOVE 'Y' TO WS-ERROR-FLAG END-IF. CALCULATE-EMPLOYEE-METRICS. *> Add to total salary ADD EMP-SALARY TO WS-TOTAL-SALARY *> Display employee processing info DISPLAY " 💰 Salary: $" EMP-SALARY DISPLAY " 🏢 Department: " EMP-DEPARTMENT DISPLAY " 📅 Hire Date: " EMP-HIRE-DATE. UPDATE-DEPARTMENT-TOTALS. *> Update department-specific totals ADD EMP-SALARY TO WS-DEPARTMENT-TOTAL *> Log department processing DISPLAY " 📊 Updated " EMP-DEPARTMENT " department total". CALCULATE-STATISTICS. DISPLAY " Calculating employee statistics..." IF WS-PROCESSED-COUNT > 0 COMPUTE WS-AVERAGE-SALARY = WS-TOTAL-SALARY / WS-PROCESSED-COUNT DISPLAY " 📊 Average salary calculated: $" WS-AVERAGE-SALARY ELSE DISPLAY " ⚠️ No records processed - cannot calculate statistics" END-IF. GENERATE-REPORTS. DISPLAY " Generating processing reports..." PERFORM DISPLAY-PROCESSING-SUMMARY PERFORM DISPLAY-STATISTICAL-ANALYSIS DISPLAY " ✓ Reports generated". DISPLAY-PROCESSING-SUMMARY. DISPLAY " " DISPLAY " 📋 PROCESSING SUMMARY REPORT" DISPLAY " ================================" DISPLAY " Records read: " WS-RECORD-COUNT DISPLAY " Records processed: " WS-PROCESSED-COUNT DISPLAY " Records with errors: " WS-ERROR-COUNT DISPLAY " Total salary processed: $" WS-TOTAL-SALARY DISPLAY " ". DISPLAY-STATISTICAL-ANALYSIS. DISPLAY " 📊 STATISTICAL ANALYSIS" DISPLAY " =======================" DISPLAY " Average salary: $" WS-AVERAGE-SALARY DISPLAY " Department total: $" WS-DEPARTMENT-TOTAL *> Calculate processing efficiency IF WS-RECORD-COUNT > 0 COMPUTE WS-EFFICIENCY-RATE = (WS-PROCESSED-COUNT / WS-RECORD-COUNT) * 100 DISPLAY " Processing efficiency: " WS-EFFICIENCY-RATE "%" END-IF DISPLAY " ". *> ---------------------------------------------------------------- *> FINALIZATION SECTION *> ---------------------------------------------------------------- FINALIZATION-SECTION SECTION. FINALIZATION-PROCEDURES. DISPLAY "Performing finalization procedures..." PERFORM CLOSE-FILES PERFORM FINAL-VALIDATION PERFORM CLEANUP-RESOURCES DISPLAY "✅ Finalization complete". CLOSE-FILES. DISPLAY " Closing program files..." CLOSE EMPLOYEE-FILE DISPLAY " ✓ All files closed successfully". FINAL-VALIDATION. DISPLAY " Performing final validation..." *> Validate processing results IF WS-ERROR-COUNT > 0 DISPLAY " ⚠️ Processing completed with " WS-ERROR-COUNT " errors" ELSE DISPLAY " ✅ Processing completed without errors" END-IF *> Validate data consistency IF WS-PROCESSED-COUNT = (WS-RECORD-COUNT - WS-ERROR-COUNT) DISPLAY " ✅ Data processing consistency verified" ELSE DISPLAY " ⚠️ Data processing inconsistency detected" END-IF. CLEANUP-RESOURCES. DISPLAY " Cleaning up program resources..." *> Reset all working storage variables INITIALIZE WS-CONTROL-FLAGS INITIALIZE WS-COUNTERS INITIALIZE WS-CALCULATIONS DISPLAY " ✓ Resources cleaned up successfully". *> ---------------------------------------------------------------- *> ERROR HANDLING SECTION *> ---------------------------------------------------------------- ERROR-HANDLING-SECTION SECTION. EMERGENCY-SHUTDOWN. DISPLAY " " DISPLAY "🚨 EMERGENCY SHUTDOWN INITIATED" DISPLAY "================================" PERFORM CLOSE-FILES-EMERGENCY PERFORM LOG-EMERGENCY-STATE DISPLAY "❌ Program terminated due to critical errors" STOP RUN. CLOSE-FILES-EMERGENCY. DISPLAY " Emergency file closure..." IF EMPLOYEE-FILE IS OPEN CLOSE EMPLOYEE-FILE DISPLAY " • Employee file closed" END-IF. LOG-EMERGENCY-STATE. DISPLAY " Logging emergency state..." DISPLAY " • Records processed before shutdown: " WS-PROCESSED-COUNT DISPLAY " • Errors encountered: " WS-ERROR-COUNT DISPLAY " • Last successful operation: Employee processing". *> ---------------------------------------------------------------- *> UTILITY SECTION *> ---------------------------------------------------------------- UTILITY-SECTION SECTION. DISPLAY-PROGRAM-HEADER. DISPLAY "╔════════════════════════════════════════════════════════════╗" DISPLAY "║ COBOL PROCEDURE DIVISION DEMO ║" DISPLAY "║ ║" DISPLAY "║ Demonstrates structured procedure organization ║" DISPLAY "║ and modular programming techniques ║" DISPLAY "╚════════════════════════════════════════════════════════════╝" DISPLAY " ". CALCULATE-PROCESSING-EFFICIENCY. IF WS-RECORD-COUNT > 0 COMPUTE WS-EFFICIENCY-RATE = (WS-PROCESSED-COUNT / WS-RECORD-COUNT) * 100 ELSE MOVE 0 TO WS-EFFICIENCY-RATE END-IF. VALIDATE-NUMERIC-FIELD. USING FIELD-TO-VALIDATE, FIELD-NAME. IF FIELD-TO-VALIDATE IS NOT NUMERIC DISPLAY " ❌ Invalid numeric field: " FIELD-NAME MOVE 'Y' TO WS-ERROR-FLAG END-IF. FORMAT-CURRENCY-DISPLAY. USING AMOUNT-FIELD, FORMATTED-OUTPUT. *> Format amount for display MOVE AMOUNT-FIELD TO FORMATTED-OUTPUT *> Add currency symbol and formatting INSPECT FORMATTED-OUTPUT REPLACING LEADING ZEROS BY SPACES.
Program Logic
Procedure Division
Structured Programming

Advanced Procedure Techniques

Sophisticated Procedure Organization
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
*> Advanced procedure techniques and patterns *> ================================================================ *> ADVANCED PROCEDURE DIVISION *> ================================================================ PROCEDURE DIVISION. *> ---------------------------------------------------------------- *> DECLARATIVES SECTION *> ---------------------------------------------------------------- DECLARATIVES. INPUT-ERROR-DECLARATIVES SECTION. USE AFTER STANDARD ERROR PROCEDURE ON EMPLOYEE-FILE. HANDLE-INPUT-ERRORS. DISPLAY "🔥 Input file error detected: " FILE-STATUS EVALUATE FILE-STATUS WHEN "10" DISPLAY " End of file reached normally" WHEN "23" DISPLAY " Record not found" WHEN "24" DISPLAY " Boundary violation" WHEN OTHER DISPLAY " Unexpected file error" MOVE 'Y' TO WS-CRITICAL-ERROR-FLAG END-EVALUATE. OUTPUT-ERROR-DECLARATIVES SECTION. USE AFTER STANDARD ERROR PROCEDURE ON REPORT-FILE. HANDLE-OUTPUT-ERRORS. DISPLAY "🔥 Output file error detected: " FILE-STATUS EVALUATE FILE-STATUS WHEN "30" DISPLAY " Permanent file error" WHEN "34" DISPLAY " Boundary violation on write" WHEN "37" DISPLAY " File not available" WHEN OTHER DISPLAY " Unexpected output error" MOVE 'Y' TO WS-CRITICAL-ERROR-FLAG END-EVALUATE. END DECLARATIVES. *> ---------------------------------------------------------------- *> MAIN CONTROL WITH ADVANCED PATTERNS *> ---------------------------------------------------------------- MAIN-CONTROL SECTION. ADVANCED-PROGRAM-START. DISPLAY "=== ADVANCED PROCEDURE TECHNIQUES ===" PERFORM PROGRAM-INITIALIZATION PERFORM STRATEGIC-PROCESSING PERFORM INTELLIGENT-FINALIZATION DISPLAY "=== ADVANCED PROCESSING COMPLETE ===" STOP RUN. *> ---------------------------------------------------------------- *> STRATEGIC PROCESSING SECTION *> ---------------------------------------------------------------- STRATEGIC-PROCESSING-SECTION SECTION. STRATEGIC-PROCESSING. DISPLAY "Executing strategic processing workflow..." PERFORM MULTI-PHASE-PROCESSING PERFORM CONDITIONAL-LOGIC-DEMONSTRATIONS PERFORM ADVANCED-ERROR-RECOVERY PERFORM PERFORMANCE-OPTIMIZATION DISPLAY "✅ Strategic processing completed". MULTI-PHASE-PROCESSING. DISPLAY " Executing multi-phase processing..." *> Phase 1: Data Collection and Validation PERFORM PHASE-1-DATA-COLLECTION *> Phase 2: Business Logic Processing IF WS-PHASE-1-SUCCESS = 'Y' PERFORM PHASE-2-BUSINESS-LOGIC END-IF *> Phase 3: Results Consolidation IF WS-PHASE-2-SUCCESS = 'Y' PERFORM PHASE-3-CONSOLIDATION END-IF *> Phase 4: Output Generation IF WS-PHASE-3-SUCCESS = 'Y' PERFORM PHASE-4-OUTPUT-GENERATION END-IF. PHASE-1-DATA-COLLECTION. DISPLAY " Phase 1: Data Collection and Validation" MOVE 'N' TO WS-PHASE-1-SUCCESS PERFORM COLLECT-EMPLOYEE-DATA PERFORM VALIDATE-COLLECTED-DATA IF WS-DATA-VALIDATION-ERRORS = 0 MOVE 'Y' TO WS-PHASE-1-SUCCESS DISPLAY " ✅ Phase 1 completed successfully" ELSE DISPLAY " ❌ Phase 1 failed with " WS-DATA-VALIDATION-ERRORS " errors" END-IF. PHASE-2-BUSINESS-LOGIC. DISPLAY " Phase 2: Business Logic Processing" MOVE 'N' TO WS-PHASE-2-SUCCESS PERFORM APPLY-BUSINESS-RULES PERFORM CALCULATE-DERIVED-VALUES PERFORM VALIDATE-BUSINESS-CONSTRAINTS IF WS-BUSINESS-LOGIC-ERRORS = 0 MOVE 'Y' TO WS-PHASE-2-SUCCESS DISPLAY " ✅ Phase 2 completed successfully" ELSE DISPLAY " ❌ Phase 2 failed with " WS-BUSINESS-LOGIC-ERRORS " errors" END-IF. CONDITIONAL-LOGIC-DEMONSTRATIONS. DISPLAY " Demonstrating advanced conditional logic..." PERFORM COMPLEX-DECISION-TREES PERFORM NESTED-CONDITION-PROCESSING PERFORM EVALUATE-STATEMENT-PATTERNS DISPLAY " ✓ Conditional logic demonstrations complete". COMPLEX-DECISION-TREES. DISPLAY " Processing complex decision trees..." *> Multi-level decision processing EVALUATE TRUE WHEN EMP-SALARY >= 100000 AND EMP-DEPARTMENT = "EXECUTIVE" PERFORM EXECUTIVE-PROCESSING WHEN EMP-SALARY >= 75000 AND EMP-DEPARTMENT = "MANAGEMENT" PERFORM MANAGEMENT-PROCESSING WHEN EMP-SALARY >= 50000 AND (EMP-DEPARTMENT = "ENGINEERING" OR EMP-DEPARTMENT = "SALES") PERFORM SENIOR-STAFF-PROCESSING WHEN EMP-SALARY >= 35000 AND EMP-YEARS-SERVICE >= 5 PERFORM EXPERIENCED-STAFF-PROCESSING WHEN OTHER PERFORM STANDARD-STAFF-PROCESSING END-EVALUATE. NESTED-CONDITION-PROCESSING. DISPLAY " Processing nested conditions..." IF EMP-DEPARTMENT = "SALES" IF EMP-SALARY >= 60000 IF EMP-COMMISSION-RATE > 0.10 PERFORM HIGH-PERFORMER-BONUS-CALCULATION ELSE PERFORM STANDARD-BONUS-CALCULATION END-IF ELSE IF EMP-YEARS-SERVICE >= 3 PERFORM TENURE-BONUS-CALCULATION ELSE PERFORM ENTRY-LEVEL-PROCESSING END-IF END-IF ELSE PERFORM NON-SALES-PROCESSING END-IF. ADVANCED-ERROR-RECOVERY. DISPLAY " Implementing advanced error recovery..." PERFORM ERROR-DETECTION-AND-CLASSIFICATION PERFORM AUTOMATIC-ERROR-CORRECTION PERFORM GRACEFUL-DEGRADATION-HANDLING DISPLAY " ✓ Error recovery procedures complete". ERROR-DETECTION-AND-CLASSIFICATION. DISPLAY " Detecting and classifying errors..." *> Reset error classification counters MOVE 0 TO WS-CRITICAL-ERRORS MOVE 0 TO WS-WARNING-ERRORS MOVE 0 TO WS-INFORMATIONAL-ERRORS *> Scan for various error types PERFORM SCAN-FOR-CRITICAL-ERRORS PERFORM SCAN-FOR-WARNING-CONDITIONS PERFORM SCAN-FOR-INFORMATIONAL-ISSUES *> Display error classification summary DISPLAY " Critical errors: " WS-CRITICAL-ERRORS DISPLAY " Warning conditions: " WS-WARNING-ERRORS DISPLAY " Informational issues: " WS-INFORMATIONAL-ERRORS. AUTOMATIC-ERROR-CORRECTION. DISPLAY " Attempting automatic error correction..." *> Correct common data entry errors PERFORM CORRECT-FORMATTING-ERRORS PERFORM STANDARDIZE-DATA-VALUES PERFORM APPLY-DEFAULT-VALUES DISPLAY " ✓ Automatic corrections applied". PERFORMANCE-OPTIMIZATION. DISPLAY " Applying performance optimization techniques..." PERFORM OPTIMIZE-LOOP-PROCESSING PERFORM IMPLEMENT-CACHING-STRATEGIES PERFORM MINIMIZE-FILE-OPERATIONS DISPLAY " ✓ Performance optimizations applied". OPTIMIZE-LOOP-PROCESSING. DISPLAY " Optimizing loop processing..." *> Efficient loop with early termination PERFORM VARYING OPTIMIZATION-INDEX FROM 1 BY 1 UNTIL OPTIMIZATION-INDEX > WS-MAX-RECORDS OR WS-EARLY-TERMINATION-FLAG = 'Y' PERFORM PROCESS-RECORD-EFFICIENTLY *> Check for early termination conditions IF WS-TARGET-FOUND = 'Y' OR WS-CRITICAL-ERROR = 'Y' MOVE 'Y' TO WS-EARLY-TERMINATION-FLAG END-IF END-PERFORM DISPLAY " Records processed: " OPTIMIZATION-INDEX IF WS-EARLY-TERMINATION-FLAG = 'Y' DISPLAY " Early termination applied for efficiency" END-IF. *> ---------------------------------------------------------------- *> BUSINESS LOGIC IMPLEMENTATION *> ---------------------------------------------------------------- BUSINESS-LOGIC-SECTION SECTION. EXECUTIVE-PROCESSING. DISPLAY " 🏆 Processing executive-level employee" PERFORM CALCULATE-EXECUTIVE-BENEFITS PERFORM APPLY-EXECUTIVE-PRIVILEGES ADD 1 TO WS-EXECUTIVE-COUNT. MANAGEMENT-PROCESSING. DISPLAY " 👔 Processing management-level employee" PERFORM CALCULATE-MANAGEMENT-BENEFITS PERFORM APPLY-MANAGEMENT-PRIVILEGES ADD 1 TO WS-MANAGEMENT-COUNT. SENIOR-STAFF-PROCESSING. DISPLAY " 🎯 Processing senior staff employee" PERFORM CALCULATE-SENIOR-BENEFITS ADD 1 TO WS-SENIOR-STAFF-COUNT. APPLY-BUSINESS-RULES. DISPLAY " Applying business rules..." *> Salary range validation PERFORM VALIDATE-SALARY-RANGES *> Department-specific rules PERFORM APPLY-DEPARTMENT-RULES *> Experience-based rules PERFORM APPLY-EXPERIENCE-RULES DISPLAY " ✓ Business rules applied". VALIDATE-SALARY-RANGES. EVALUATE EMP-DEPARTMENT WHEN "EXECUTIVE" IF EMP-SALARY < 80000 DISPLAY " ⚠️ Executive salary below minimum threshold" ADD 1 TO WS-BUSINESS-LOGIC-ERRORS END-IF WHEN "MANAGEMENT" IF EMP-SALARY < 60000 OR EMP-SALARY > 150000 DISPLAY " ⚠️ Management salary outside normal range" ADD 1 TO WS-BUSINESS-LOGIC-ERRORS END-IF WHEN "ENGINEERING" IF EMP-SALARY < 45000 OR EMP-SALARY > 120000 DISPLAY " ⚠️ Engineering salary outside normal range" ADD 1 TO WS-BUSINESS-LOGIC-ERRORS END-IF END-EVALUATE. *> ---------------------------------------------------------------- *> UTILITY AND HELPER PROCEDURES *> ---------------------------------------------------------------- UTILITY-PROCEDURES-SECTION SECTION. CALCULATE-EXECUTIVE-BENEFITS. COMPUTE WS-EXECUTIVE-BONUS = EMP-SALARY * 0.25 COMPUTE WS-STOCK-OPTIONS = EMP-SALARY * 0.15 DISPLAY " 💰 Executive bonus: $" WS-EXECUTIVE-BONUS DISPLAY " 📈 Stock options: $" WS-STOCK-OPTIONS. CALCULATE-MANAGEMENT-BENEFITS. COMPUTE WS-MANAGEMENT-BONUS = EMP-SALARY * 0.15 COMPUTE WS-PERFORMANCE-BONUS = EMP-SALARY * 0.10 DISPLAY " 💰 Management bonus: $" WS-MANAGEMENT-BONUS DISPLAY " 🎯 Performance bonus: $" WS-PERFORMANCE-BONUS. PROCESS-RECORD-EFFICIENTLY. *> Optimized record processing ADD 1 TO WS-PROCESSED-EFFICIENTLY *> Check processing targets IF WS-PROCESSED-EFFICIENTLY >= WS-TARGET-PROCESSING-COUNT MOVE 'Y' TO WS-TARGET-FOUND END-IF. IMPLEMENT-CACHING-STRATEGIES. DISPLAY " Implementing data caching strategies..." *> Cache frequently accessed data IF WS-CACHE-INITIALIZED = 'N' PERFORM INITIALIZE-DATA-CACHE MOVE 'Y' TO WS-CACHE-INITIALIZED END-IF *> Use cached data when available IF WS-CACHE-HIT-RATE > 80 DISPLAY " 📈 High cache hit rate: " WS-CACHE-HIT-RATE "%" END-IF. GENERATE-PERFORMANCE-METRICS. DISPLAY " " DISPLAY " 📊 PERFORMANCE METRICS" DISPLAY " =====================" DISPLAY " Total records processed: " WS-TOTAL-PROCESSED DISPLAY " Processing efficiency: " WS-PROCESSING-EFFICIENCY "%" DISPLAY " Cache hit rate: " WS-CACHE-HIT-RATE "%" DISPLAY " Average processing time: " WS-AVG-PROCESSING-TIME " ms" DISPLAY " ". DISPLAY-ADVANCED-SUMMARY. DISPLAY " " DISPLAY "🎯 ADVANCED PROCESSING SUMMARY" DISPLAY "================================" DISPLAY "Executive employees: " WS-EXECUTIVE-COUNT DISPLAY "Management employees: " WS-MANAGEMENT-COUNT DISPLAY "Senior staff employees: " WS-SENIOR-STAFF-COUNT DISPLAY "Total bonus allocated: $" WS-TOTAL-BONUS-AMOUNT DISPLAY "Processing phases completed: " WS-PHASES-COMPLETED DISPLAY "Error recovery actions: " WS-ERROR-RECOVERIES DISPLAY "Performance optimizations: " WS-OPTIMIZATIONS-APPLIED DISPLAY " ".

PROCEDURE Features and Capabilities

Program Organization
  • • Structured section organization
  • • Modular paragraph design
  • • Declaratives for error handling
  • • Hierarchical program flow
Business Logic
  • • Complex decision processing
  • • Multi-phase workflows
  • • Error recovery mechanisms
  • • Performance optimization

Best Practices