MainframeMaster

COBOL Tutorial

COBOL END-RETURN Statement

The END-RETURN statement represents a fundamental component of sort and merge operations in COBOL, serving as an explicit scope terminator that clearly defines the boundaries of RETURN statement blocks. This statement embodies modern data processing principles by providing unambiguous termination points for sorted data retrieval operations, enabling sophisticated error handling for sort/merge scenarios, and supporting the development of robust data processing applications that require precise control over sorted data access and manipulation.

In contemporary enterprise COBOL development, END-RETURN plays a vital role in creating sophisticated data processing systems that must handle large volumes of sorted data, complex merge operations, and various data transformation scenarios. By providing explicit termination for RETURN blocks, this statement enables developers to implement comprehensive sort processing logic while maintaining code clarity and ensuring that sort operations are properly bounded and controlled within the application's data processing flow.

Basic END-RETURN Usage

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
IDENTIFICATION DIVISION. PROGRAM-ID. END-RETURN-DEMO. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INPUT-FILE ASSIGN TO 'UNSORTED.DAT' ORGANIZATION IS SEQUENTIAL. SELECT OUTPUT-FILE ASSIGN TO 'SORTED.DAT' ORGANIZATION IS SEQUENTIAL. SELECT SORT-WORK ASSIGN TO 'SORTWORK'. DATA DIVISION. FILE SECTION. FD INPUT-FILE. 01 INPUT-RECORD. 05 CUSTOMER-ID PIC X(10). 05 CUSTOMER-NAME PIC X(30). 05 CUSTOMER-BALANCE PIC S9(9)V99. 05 CUSTOMER-REGION PIC X(5). 05 CUSTOMER-TYPE PIC X(2). FD OUTPUT-FILE. 01 OUTPUT-RECORD. 05 CUSTOMER-ID PIC X(10). 05 CUSTOMER-NAME PIC X(30). 05 CUSTOMER-BALANCE PIC S9(9)V99. 05 CUSTOMER-REGION PIC X(5). 05 CUSTOMER-TYPE PIC X(2). SD SORT-WORK. 01 SORT-RECORD. 05 CUSTOMER-ID PIC X(10). 05 CUSTOMER-NAME PIC X(30). 05 CUSTOMER-BALANCE PIC S9(9)V99. 05 CUSTOMER-REGION PIC X(5). 05 CUSTOMER-TYPE PIC X(2). WORKING-STORAGE SECTION. 01 SORT-CONTROLS. 05 RECORDS-READ PIC 9(7) VALUE 0. 05 RECORDS-WRITTEN PIC 9(7) VALUE 0. 05 RECORDS-PROCESSED PIC 9(7) VALUE 0. 05 SORT-RETURN-CODE PIC 9(2) VALUE 0. 01 PROCESSING-FLAGS. 05 EOF-FLAG PIC X VALUE 'N'. 88 END-OF-SORT VALUE 'Y'. 88 MORE-RECORDS VALUE 'N'. 05 ERROR-FLAG PIC X VALUE 'N'. 88 SORT-ERROR VALUE 'Y'. 88 SORT-OK VALUE 'N'. 01 SUMMARY-TOTALS. 05 REGION-TOTALS. 10 NORTH-TOTAL PIC S9(11)V99 VALUE 0. 10 SOUTH-TOTAL PIC S9(11)V99 VALUE 0. 10 EAST-TOTAL PIC S9(11)V99 VALUE 0. 10 WEST-TOTAL PIC S9(11)V99 VALUE 0. 05 TYPE-TOTALS. 10 PREMIUM-TOTAL PIC S9(11)V99 VALUE 0. 10 STANDARD-TOTAL PIC S9(11)V99 VALUE 0. 10 BASIC-TOTAL PIC S9(11)V99 VALUE 0. PROCEDURE DIVISION. MAIN-PROCESSING. PERFORM SORT-CUSTOMER-DATA PERFORM DISPLAY-SORT-STATISTICS STOP RUN. SORT-CUSTOMER-DATA. DISPLAY 'Starting customer data sort operation...' SORT SORT-WORK ON ASCENDING KEY CUSTOMER-REGION ON ASCENDING KEY CUSTOMER-TYPE ON DESCENDING KEY CUSTOMER-BALANCE USING INPUT-FILE OUTPUT PROCEDURE IS PROCESS-SORTED-RECORDS DISPLAY 'Sort operation completed'. PROCESS-SORTED-RECORDS. DISPLAY 'Processing sorted records...' OPEN OUTPUT OUTPUT-FILE PERFORM RETURN-SORTED-RECORDS CLOSE OUTPUT-FILE DISPLAY 'Sorted records processing completed'. RETURN-SORTED-RECORDS. SET MORE-RECORDS TO TRUE PERFORM UNTIL END-OF-SORT RETURN SORT-WORK AT END DISPLAY 'All sorted records processed' SET END-OF-SORT TO TRUE NOT AT END ADD 1 TO RECORDS-PROCESSED PERFORM PROCESS-INDIVIDUAL-RECORD PERFORM WRITE-OUTPUT-RECORD END-RETURN END-PERFORM. PROCESS-INDIVIDUAL-RECORD. *> Accumulate regional totals EVALUATE CUSTOMER-REGION WHEN 'NORTH' ADD CUSTOMER-BALANCE TO NORTH-TOTAL WHEN 'SOUTH' ADD CUSTOMER-BALANCE TO SOUTH-TOTAL WHEN 'EAST' ADD CUSTOMER-BALANCE TO EAST-TOTAL WHEN 'WEST' ADD CUSTOMER-BALANCE TO WEST-TOTAL WHEN OTHER DISPLAY 'Unknown region: ' CUSTOMER-REGION END-EVALUATE *> Accumulate type totals EVALUATE CUSTOMER-TYPE WHEN 'PR' ADD CUSTOMER-BALANCE TO PREMIUM-TOTAL WHEN 'ST' ADD CUSTOMER-BALANCE TO STANDARD-TOTAL WHEN 'BA' ADD CUSTOMER-BALANCE TO BASIC-TOTAL WHEN OTHER DISPLAY 'Unknown customer type: ' CUSTOMER-TYPE END-EVALUATE *> Display progress every 1000 records IF FUNCTION MOD(RECORDS-PROCESSED, 1000) = 0 DISPLAY 'Processed ' RECORDS-PROCESSED ' records' END-IF. WRITE-OUTPUT-RECORD. MOVE SORT-RECORD TO OUTPUT-RECORD WRITE OUTPUT-RECORD ADD 1 TO RECORDS-WRITTEN. DISPLAY-SORT-STATISTICS. DISPLAY 'Sort Processing Statistics:' DISPLAY 'Records processed: ' RECORDS-PROCESSED DISPLAY 'Records written: ' RECORDS-WRITTEN DISPLAY '' DISPLAY 'Regional Totals:' DISPLAY 'North: ' NORTH-TOTAL DISPLAY 'South: ' SOUTH-TOTAL DISPLAY 'East: ' EAST-TOTAL DISPLAY 'West: ' WEST-TOTAL DISPLAY '' DISPLAY 'Customer Type Totals:' DISPLAY 'Premium: ' PREMIUM-TOTAL DISPLAY 'Standard: ' STANDARD-TOTAL DISPLAY 'Basic: ' BASIC-TOTAL.

Advanced END-RETURN Patterns

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
IDENTIFICATION DIVISION. PROGRAM-ID. ADVANCED-END-RETURN. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT SALES-FILE ASSIGN TO 'SALES.DAT' ORGANIZATION IS SEQUENTIAL. SELECT INVENTORY-FILE ASSIGN TO 'INVENTORY.DAT' ORGANIZATION IS SEQUENTIAL. SELECT MERGED-OUTPUT ASSIGN TO 'MERGED.DAT' ORGANIZATION IS SEQUENTIAL. SELECT SALES-SORT ASSIGN TO 'SALES-SORT'. SELECT INVENTORY-SORT ASSIGN TO 'INVENTORY-SORT'. SELECT MERGE-WORK ASSIGN TO 'MERGE-WORK'. DATA DIVISION. FILE SECTION. FD SALES-FILE. 01 SALES-RECORD. 05 PRODUCT-CODE PIC X(10). 05 SALE-DATE PIC X(8). 05 QUANTITY-SOLD PIC 9(7). 05 UNIT-PRICE PIC 9(7)V99. 05 SALES-AMOUNT PIC 9(9)V99. FD INVENTORY-FILE. 01 INVENTORY-RECORD. 05 PRODUCT-CODE PIC X(10). 05 INVENTORY-DATE PIC X(8). 05 QUANTITY-RECEIVED PIC 9(7). 05 UNIT-COST PIC 9(7)V99. 05 INVENTORY-VALUE PIC 9(9)V99. FD MERGED-OUTPUT. 01 MERGED-RECORD. 05 PRODUCT-CODE PIC X(10). 05 TRANSACTION-DATE PIC X(8). 05 TRANSACTION-TYPE PIC X(1). 05 QUANTITY PIC 9(7). 05 UNIT-AMOUNT PIC 9(7)V99. 05 TOTAL-AMOUNT PIC 9(9)V99. SD SALES-SORT. 01 SALES-SORT-RECORD. 05 PRODUCT-CODE PIC X(10). 05 SALE-DATE PIC X(8). 05 QUANTITY-SOLD PIC 9(7). 05 UNIT-PRICE PIC 9(7)V99. 05 SALES-AMOUNT PIC 9(9)V99. SD INVENTORY-SORT. 01 INVENTORY-SORT-RECORD. 05 PRODUCT-CODE PIC X(10). 05 INVENTORY-DATE PIC X(8). 05 QUANTITY-RECEIVED PIC 9(7). 05 UNIT-COST PIC 9(7)V99. 05 INVENTORY-VALUE PIC 9(9)V99. SD MERGE-WORK. 01 MERGE-RECORD. 05 PRODUCT-CODE PIC X(10). 05 TRANSACTION-DATE PIC X(8). 05 TRANSACTION-TYPE PIC X(1). 05 QUANTITY PIC 9(7). 05 UNIT-AMOUNT PIC 9(7)V99. 05 TOTAL-AMOUNT PIC 9(9)V99. WORKING-STORAGE SECTION. 01 PROCESSING-CONTROLS. 05 SALES-RECORDS-COUNT PIC 9(7) VALUE 0. 05 INVENTORY-RECORDS-COUNT PIC 9(7) VALUE 0. 05 MERGED-RECORDS-COUNT PIC 9(7) VALUE 0. 05 CURRENT-PRODUCT PIC X(10) VALUE SPACES. 05 PRODUCT-BREAK-FLAG PIC X VALUE 'N'. 88 PRODUCT-BREAK VALUE 'Y'. 01 PRODUCT-SUMMARY. 05 PRODUCT-TOTALS. 10 TOTAL-SALES PIC 9(11)V99 VALUE 0. 10 TOTAL-INVENTORY PIC 9(11)V99 VALUE 0. 10 TOTAL-QUANTITY-SOLD PIC 9(9) VALUE 0. 10 TOTAL-QUANTITY-RECV PIC 9(9) VALUE 0. 05 PRODUCT-COUNTS. 10 SALES-TRANSACTIONS PIC 9(5) VALUE 0. 10 INVENTORY-TRANSACTIONS PIC 9(5) VALUE 0. 01 ADVANCED-PROCESSING. 05 BATCH-CONTROLS. 10 BATCH-SIZE PIC 9(5) VALUE 5000. 10 CURRENT-BATCH PIC 9(5) VALUE 0. 10 RECORDS-IN-BATCH PIC 9(5) VALUE 0. 05 VALIDATION-CONTROLS. 10 VALIDATION-ERRORS PIC 9(5) VALUE 0. 10 DATA-QUALITY-SCORE PIC 9(3)V99 VALUE 0. 01 COMPLEX-SORT-CONTROLS. 05 SORT-PHASE PIC 9(1) VALUE 1. 88 PHASE-1-SORT VALUE 1. 88 PHASE-2-SORT VALUE 2. 88 PHASE-3-MERGE VALUE 3. 05 SORT-STATISTICS. 10 PHASE-1-RECORDS PIC 9(7) VALUE 0. 10 PHASE-2-RECORDS PIC 9(7) VALUE 0. 10 MERGE-RECORDS PIC 9(7) VALUE 0. PROCEDURE DIVISION. MAIN-PROCESSING. PERFORM EXECUTE-MULTI-PHASE-SORT PERFORM DISPLAY-COMPREHENSIVE-STATISTICS STOP RUN. EXECUTE-MULTI-PHASE-SORT. DISPLAY 'Starting multi-phase sort and merge operation...' PERFORM PHASE-1-SALES-SORT PERFORM PHASE-2-INVENTORY-SORT PERFORM PHASE-3-MERGE-OPERATION DISPLAY 'Multi-phase sort and merge completed'. PHASE-1-SALES-SORT. DISPLAY 'Phase 1: Sorting sales data...' SET PHASE-1-SORT TO TRUE SORT SALES-SORT ON ASCENDING KEY PRODUCT-CODE ON ASCENDING KEY SALE-DATE USING SALES-FILE OUTPUT PROCEDURE IS PROCESS-SORTED-SALES DISPLAY 'Phase 1 completed. Records processed: ' PHASE-1-RECORDS. PROCESS-SORTED-SALES. PERFORM RETURN-SALES-RECORDS PERFORM GENERATE-SALES-SUMMARY. RETURN-SALES-RECORDS. PERFORM UNTIL END-OF-SORT RETURN SALES-SORT AT END DISPLAY 'All sales records processed' SET END-OF-SORT TO TRUE NOT AT END ADD 1 TO PHASE-1-RECORDS PERFORM VALIDATE-SALES-RECORD PERFORM CONVERT-SALES-TO-MERGE-FORMAT END-RETURN END-PERFORM. VALIDATE-SALES-RECORD. *> Validate product code IF PRODUCT-CODE = SPACES OR LOW-VALUES ADD 1 TO VALIDATION-ERRORS DISPLAY 'Invalid product code in sales record: ' PHASE-1-RECORDS END-IF *> Validate sale date IF SALE-DATE NOT NUMERIC ADD 1 TO VALIDATION-ERRORS DISPLAY 'Invalid sale date in record: ' PHASE-1-RECORDS END-IF *> Validate amounts IF QUANTITY-SOLD <= 0 OR UNIT-PRICE <= 0 ADD 1 TO VALIDATION-ERRORS DISPLAY 'Invalid quantity or price in record: ' PHASE-1-RECORDS END-IF. CONVERT-SALES-TO-MERGE-FORMAT. MOVE PRODUCT-CODE TO PRODUCT-CODE OF MERGE-RECORD MOVE SALE-DATE TO TRANSACTION-DATE OF MERGE-RECORD MOVE 'S' TO TRANSACTION-TYPE OF MERGE-RECORD MOVE QUANTITY-SOLD TO QUANTITY OF MERGE-RECORD MOVE UNIT-PRICE TO UNIT-AMOUNT OF MERGE-RECORD MOVE SALES-AMOUNT TO TOTAL-AMOUNT OF MERGE-RECORD *> Release to merge file RELEASE MERGE-RECORD. GENERATE-SALES-SUMMARY. DISPLAY 'Generating sales summary...' DISPLAY 'Sales records processed: ' PHASE-1-RECORDS DISPLAY 'Sales validation errors: ' VALIDATION-ERRORS. PHASE-2-INVENTORY-SORT. DISPLAY 'Phase 2: Sorting inventory data...' SET PHASE-2-SORT TO TRUE MOVE 0 TO VALIDATION-ERRORS SORT INVENTORY-SORT ON ASCENDING KEY PRODUCT-CODE ON ASCENDING KEY INVENTORY-DATE USING INVENTORY-FILE OUTPUT PROCEDURE IS PROCESS-SORTED-INVENTORY DISPLAY 'Phase 2 completed. Records processed: ' PHASE-2-RECORDS. PROCESS-SORTED-INVENTORY. PERFORM RETURN-INVENTORY-RECORDS PERFORM GENERATE-INVENTORY-SUMMARY. RETURN-INVENTORY-RECORDS. SET MORE-RECORDS TO TRUE PERFORM UNTIL END-OF-SORT RETURN INVENTORY-SORT AT END DISPLAY 'All inventory records processed' SET END-OF-SORT TO TRUE NOT AT END ADD 1 TO PHASE-2-RECORDS PERFORM VALIDATE-INVENTORY-RECORD PERFORM CONVERT-INVENTORY-TO-MERGE-FORMAT END-RETURN END-PERFORM. VALIDATE-INVENTORY-RECORD. *> Validate product code IF PRODUCT-CODE = SPACES OR LOW-VALUES ADD 1 TO VALIDATION-ERRORS DISPLAY 'Invalid product code in inventory record: ' PHASE-2-RECORDS END-IF *> Validate inventory date IF INVENTORY-DATE NOT NUMERIC ADD 1 TO VALIDATION-ERRORS DISPLAY 'Invalid inventory date in record: ' PHASE-2-RECORDS END-IF *> Validate amounts IF QUANTITY-RECEIVED <= 0 OR UNIT-COST <= 0 ADD 1 TO VALIDATION-ERRORS DISPLAY 'Invalid quantity or cost in record: ' PHASE-2-RECORDS END-IF. CONVERT-INVENTORY-TO-MERGE-FORMAT. MOVE PRODUCT-CODE TO PRODUCT-CODE OF MERGE-RECORD MOVE INVENTORY-DATE TO TRANSACTION-DATE OF MERGE-RECORD MOVE 'I' TO TRANSACTION-TYPE OF MERGE-RECORD MOVE QUANTITY-RECEIVED TO QUANTITY OF MERGE-RECORD MOVE UNIT-COST TO UNIT-AMOUNT OF MERGE-RECORD MOVE INVENTORY-VALUE TO TOTAL-AMOUNT OF MERGE-RECORD *> Release to merge file RELEASE MERGE-RECORD. GENERATE-INVENTORY-SUMMARY. DISPLAY 'Generating inventory summary...' DISPLAY 'Inventory records processed: ' PHASE-2-RECORDS DISPLAY 'Inventory validation errors: ' VALIDATION-ERRORS. PHASE-3-MERGE-OPERATION. DISPLAY 'Phase 3: Merging sales and inventory data...' SET PHASE-3-MERGE TO TRUE MERGE MERGE-WORK ON ASCENDING KEY PRODUCT-CODE ON ASCENDING KEY TRANSACTION-DATE ON ASCENDING KEY TRANSACTION-TYPE USING SALES-SORT, INVENTORY-SORT OUTPUT PROCEDURE IS PROCESS-MERGED-DATA DISPLAY 'Phase 3 completed. Records processed: ' MERGE-RECORDS. PROCESS-MERGED-DATA. OPEN OUTPUT MERGED-OUTPUT PERFORM RETURN-MERGED-RECORDS PERFORM GENERATE-FINAL-SUMMARY CLOSE MERGED-OUTPUT. RETURN-MERGED-RECORDS. MOVE SPACES TO CURRENT-PRODUCT PERFORM INITIALIZE-PRODUCT-TOTALS PERFORM UNTIL END-OF-SORT RETURN MERGE-WORK AT END DISPLAY 'All merged records processed' IF CURRENT-PRODUCT NOT = SPACES PERFORM WRITE-PRODUCT-SUMMARY END-IF SET END-OF-SORT TO TRUE NOT AT END ADD 1 TO MERGE-RECORDS PERFORM CHECK-PRODUCT-BREAK PERFORM ACCUMULATE-PRODUCT-TOTALS PERFORM WRITE-MERGED-RECORD END-RETURN END-PERFORM. CHECK-PRODUCT-BREAK. IF CURRENT-PRODUCT = SPACES MOVE PRODUCT-CODE TO CURRENT-PRODUCT ELSE IF PRODUCT-CODE NOT = CURRENT-PRODUCT PERFORM WRITE-PRODUCT-SUMMARY PERFORM INITIALIZE-PRODUCT-TOTALS MOVE PRODUCT-CODE TO CURRENT-PRODUCT END-IF END-IF. ACCUMULATE-PRODUCT-TOTALS. EVALUATE TRANSACTION-TYPE WHEN 'S' *> Sales ADD TOTAL-AMOUNT TO TOTAL-SALES ADD QUANTITY TO TOTAL-QUANTITY-SOLD ADD 1 TO SALES-TRANSACTIONS WHEN 'I' *> Inventory ADD TOTAL-AMOUNT TO TOTAL-INVENTORY ADD QUANTITY TO TOTAL-QUANTITY-RECV ADD 1 TO INVENTORY-TRANSACTIONS END-EVALUATE. WRITE-MERGED-RECORD. MOVE MERGE-RECORD TO MERGED-RECORD WRITE MERGED-RECORD ADD 1 TO MERGED-RECORDS-COUNT. WRITE-PRODUCT-SUMMARY. DISPLAY 'Product Summary for: ' CURRENT-PRODUCT DISPLAY 'Total Sales: ' TOTAL-SALES DISPLAY 'Total Inventory: ' TOTAL-INVENTORY DISPLAY 'Quantity Sold: ' TOTAL-QUANTITY-SOLD DISPLAY 'Quantity Received: ' TOTAL-QUANTITY-RECV DISPLAY 'Sales Transactions: ' SALES-TRANSACTIONS DISPLAY 'Inventory Transactions: ' INVENTORY-TRANSACTIONS DISPLAY '---'. INITIALIZE-PRODUCT-TOTALS. MOVE 0 TO TOTAL-SALES MOVE 0 TO TOTAL-INVENTORY MOVE 0 TO TOTAL-QUANTITY-SOLD MOVE 0 TO TOTAL-QUANTITY-RECV MOVE 0 TO SALES-TRANSACTIONS MOVE 0 TO INVENTORY-TRANSACTIONS. GENERATE-FINAL-SUMMARY. DISPLAY 'Generating final processing summary...' DISPLAY 'Merged records written: ' MERGED-RECORDS-COUNT. DISPLAY-COMPREHENSIVE-STATISTICS. DISPLAY 'Comprehensive Processing Statistics:' DISPLAY '==================================' DISPLAY 'Phase 1 (Sales Sort): ' PHASE-1-RECORDS ' records' DISPLAY 'Phase 2 (Inventory Sort): ' PHASE-2-RECORDS ' records' DISPLAY 'Phase 3 (Merge): ' MERGE-RECORDS ' records' DISPLAY 'Final Output: ' MERGED-RECORDS-COUNT ' records' DISPLAY '' DISPLAY 'Data Quality:' IF PHASE-1-RECORDS + PHASE-2-RECORDS > 0 COMPUTE DATA-QUALITY-SCORE = ((PHASE-1-RECORDS + PHASE-2-RECORDS - VALIDATION-ERRORS) / (PHASE-1-RECORDS + PHASE-2-RECORDS)) * 100 DISPLAY 'Data Quality Score: ' DATA-QUALITY-SCORE '%' END-IF DISPLAY 'Total Validation Errors: ' VALIDATION-ERRORS.

Best Practices and FAQ

Best Practices
  • • Always use END-RETURN with conditional processing
  • • Implement proper end-of-file handling
  • • Validate sorted data during processing
  • • Use meaningful progress indicators
  • • Handle sort errors gracefully
Common Mistakes
  • • Omitting END-RETURN in complex structures
  • • Poor sort key specification
  • • Missing data validation
  • • Inefficient sort processing
  • • Not handling sort completion properly