MainframeMaster

COBOL Tutorial

COBOL RELEASE Statement - Quick Reference

Progress0 of 0 lessons

Overview

The RELEASE statement is used in sort operations to write records to a sort work file. It is specifically designed to work within the INPUT PROCEDURE of a SORT statement, allowing you to process, filter, or transform records before they are sorted.

Purpose and Usage

  • Sort work file writing - Write records to sort work file
  • INPUT PROCEDURE support - Used within SORT INPUT PROCEDUREs
  • Record filtering - Select which records to include in sort
  • Data transformation - Modify records before sorting
  • Sort optimization - Control sort input processing

Sort Operation Flow

1. INPUT PROCEDURE executes
2. RELEASE statements write records to sort work file
3. SORT automatically sorts all released records
4. OUTPUT PROCEDURE processes sorted records
RELEASE → Sort Work File → SORT → Output

RELEASE is part of the sort process, not a standalone file operation.

Syntax

The RELEASE statement follows specific syntax patterns within SORT operations and INPUT PROCEDUREs.

Basic Syntax

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
* Basic RELEASE statement syntax RELEASE record-name * With FROM clause RELEASE record-name FROM data-name * Complete SORT example with RELEASE SORT SORT-WORK-FILE ON ASCENDING KEY SORT-KEY INPUT PROCEDURE IS INPUT-PROC OUTPUT PROCEDURE IS OUTPUT-PROC. INPUT-PROC SECTION. INPUT-PROCESS. OPEN INPUT INPUT-FILE PERFORM READ-AND-RELEASE UNTIL END-OF-FILE CLOSE INPUT-FILE. READ-AND-RELEASE. READ INPUT-FILE AT END MOVE 'Y' TO EOF-FLAG NOT AT END RELEASE SORT-RECORD FROM INPUT-RECORD END-READ.

RELEASE is used within INPUT PROCEDUREs to write records to the sort work file.

RELEASE vs WRITE Comparison

AspectRELEASEWRITE
Usage contextSORT INPUT PROCEDUREFile processing
Target fileSort work fileRegular file
File managementAutomaticManual
Record orderingSorted automaticallyProgram controlled
Error handlingFILE STATUSFILE STATUS

Error Handling Syntax

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
* RELEASE with error handling RELEASE sort-record FROM input-record ON OVERFLOW DISPLAY "Sort work file overflow" PERFORM ERROR-HANDLING NOT ON OVERFLOW ADD 1 TO RECORD-COUNT END-RELEASE * Using FILE STATUS SORT SORT-WORK-FILE ON ASCENDING KEY SORT-KEY INPUT PROCEDURE IS INPUT-PROC OUTPUT PROCEDURE IS OUTPUT-PROC FILE STATUS IS SORT-STATUS. * Check status after RELEASE RELEASE sort-record IF SORT-STATUS NOT = "00" DISPLAY "RELEASE error: " SORT-STATUS PERFORM ERROR-HANDLING END-IF

RELEASE supports error handling with ON OVERFLOW and FILE STATUS.

Practical Examples

These examples demonstrate how to use the RELEASE statement effectively in different sort scenarios.

Basic Sort with RELEASE

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
IDENTIFICATION DIVISION. PROGRAM-ID. BASIC-SORT. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INPUT-FILE ASSIGN TO "INPUT.DAT" ORGANIZATION IS SEQUENTIAL FILE STATUS IS INPUT-STATUS. SELECT OUTPUT-FILE ASSIGN TO "OUTPUT.DAT" ORGANIZATION IS SEQUENTIAL FILE STATUS IS OUTPUT-STATUS. DATA DIVISION. FILE SECTION. FD INPUT-FILE. 01 INPUT-RECORD. 05 INPUT-KEY PIC 9(5). 05 INPUT-DATA PIC X(20). SD SORT-WORK-FILE. 01 SORT-RECORD. 05 SORT-KEY PIC 9(5). 05 SORT-DATA PIC X(20). FD OUTPUT-FILE. 01 OUTPUT-RECORD. 05 OUTPUT-KEY PIC 9(5). 05 OUTPUT-DATA PIC X(20). WORKING-STORAGE SECTION. 01 FILE-STATUSES. 05 INPUT-STATUS PIC XX. 05 OUTPUT-STATUS PIC XX. 01 EOF-FLAG PIC X VALUE 'N'. 88 END-OF-FILE VALUE 'Y'. PROCEDURE DIVISION. MAIN-PROCESS. SORT SORT-WORK-FILE ON ASCENDING KEY SORT-KEY INPUT PROCEDURE IS INPUT-PROC OUTPUT PROCEDURE IS OUTPUT-PROC STOP RUN. INPUT-PROC SECTION. INPUT-PROCESS. OPEN INPUT INPUT-FILE PERFORM READ-AND-RELEASE UNTIL END-OF-FILE CLOSE INPUT-FILE. READ-AND-RELEASE. READ INPUT-FILE AT END MOVE 'Y' TO EOF-FLAG NOT AT END RELEASE SORT-RECORD FROM INPUT-RECORD END-READ. OUTPUT-PROC SECTION. OUTPUT-PROCESS. OPEN OUTPUT OUTPUT-FILE PERFORM READ-AND-WRITE UNTIL END-OF-FILE CLOSE OUTPUT-FILE. READ-AND-WRITE. RETURN SORT-WORK-FILE AT END MOVE 'Y' TO EOF-FLAG NOT AT END WRITE OUTPUT-RECORD FROM SORT-RECORD END-RETURN.

This example shows a complete sort operation using RELEASE in the INPUT PROCEDURE.

Filtered Sort with RELEASE

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
* Sort only records that meet certain criteria INPUT-PROCESS. OPEN INPUT INPUT-FILE PERFORM READ-AND-FILTER UNTIL END-OF-FILE CLOSE INPUT-FILE. READ-AND-FILTER. READ INPUT-FILE AT END MOVE 'Y' TO EOF-FLAG NOT AT END * Only RELEASE records that meet criteria IF INPUT-KEY > 1000 AND INPUT-KEY < 5000 RELEASE SORT-RECORD FROM INPUT-RECORD END-IF END-READ. * Sort with data transformation READ-AND-TRANSFORM. READ INPUT-FILE AT END MOVE 'Y' TO EOF-FLAG NOT AT END * Transform data before sorting MOVE INPUT-KEY TO SORT-KEY MOVE FUNCTION UPPER-CASE(INPUT-DATA) TO SORT-DATA RELEASE SORT-RECORD END-READ.

RELEASE allows filtering and transformation of records before sorting.

Multi-Key Sort with RELEASE

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
* Sort with multiple keys SORT SORT-WORK-FILE ON ASCENDING KEY PRIMARY-KEY ON DESCENDING KEY SECONDARY-KEY INPUT PROCEDURE IS INPUT-PROC OUTPUT PROCEDURE IS OUTPUT-PROC. * Data structure for multi-key sort 01 SORT-RECORD. 05 PRIMARY-KEY PIC 9(5). 05 SECONDARY-KEY PIC X(10). 05 SORT-DATA PIC X(20). * RELEASE with multiple keys READ-AND-RELEASE-MULTI. READ INPUT-FILE AT END MOVE 'Y' TO EOF-FLAG NOT AT END * Set up sort keys MOVE INPUT-DEPT TO PRIMARY-KEY MOVE INPUT-NAME TO SECONDARY-KEY MOVE INPUT-RECORD TO SORT-DATA RELEASE SORT-RECORD END-READ.

RELEASE supports complex sorting with multiple keys and different sort orders.

Performance Considerations

Understanding the performance implications of using RELEASE statements helps optimize sort operations.

Performance Impact Analysis

  • I/O operations - Each RELEASE requires a write to sort work file
  • Memory usage - Sort work file size affects memory requirements
  • Processing overhead - INPUT PROCEDURE adds processing time
  • Filtering efficiency - RELEASE can reduce sort data volume
  • Sort algorithm impact - Reduced data improves sort performance

Optimization Strategies

StrategyBenefitImplementation
Early filteringReduce sort data volumeUse IF conditions before RELEASE
Data transformationOptimize sort keysTransform data before RELEASE
Batch processingReduce I/O overheadProcess multiple records together
Memory optimizationImprove sort performanceUse appropriate sort work file size
Key optimizationFaster sortingUse efficient key structures

When to Use RELEASE vs Direct Sort

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
* Use RELEASE when you need filtering/transformation SORT SORT-WORK-FILE ON ASCENDING KEY SORT-KEY INPUT PROCEDURE IS INPUT-PROC * Use when filtering needed OUTPUT PROCEDURE IS OUTPUT-PROC. * Use direct sort when processing all records SORT SORT-WORK-FILE ON ASCENDING KEY SORT-KEY USING INPUT-FILE * Direct sort - no filtering GIVING OUTPUT-FILE. * RELEASE is beneficial when: * - Only some records need sorting * - Data transformation is required * - Complex filtering logic is needed * - Multiple input files need merging

Choose between RELEASE and direct sort based on your processing requirements.

Best Practices and Tips

Following these best practices ensures effective use of the RELEASE statement in sort operations.

RELEASE Best Practices

  • Use for filtering - RELEASE when you need to filter records
  • Transform data early - Do transformations before RELEASE
  • Handle errors properly - Check FILE STATUS after RELEASE
  • Optimize sort keys - Use efficient key structures
  • Document INPUT PROCEDUREs - Clearly document filtering logic
  • Test with large datasets - Verify performance with realistic data

Common Pitfalls to Avoid

PitfallProblemSolution
Using RELEASE outside SORTCompilation errorOnly use in INPUT PROCEDUREs
Ignoring error handlingSilent failuresCheck FILE STATUS
Inefficient filteringPoor performanceFilter before RELEASE
Memory issuesSort work file overflowMonitor sort work file size
Complex transformationsSlow processingKeep transformations simple

Error Handling Best Practices

  • Check FILE STATUS - Monitor for RELEASE errors
  • Use ON OVERFLOW - Handle sort work file overflow
  • Log errors - Record error conditions for debugging
  • Provide recovery - Implement error recovery procedures
  • Validate data - Check data before RELEASE
  • Monitor performance - Track sort operation performance

RELEASE Statement Quick Reference

UsageSyntaxExample
Basic RELEASERELEASE record-nameRELEASE SORT-RECORD
With FROM clauseRELEASE record-name FROM data-nameRELEASE SORT-RECORD FROM INPUT-RECORD
With error handlingRELEASE record-name ON OVERFLOWRELEASE SORT-RECORD ON OVERFLOW
In INPUT PROCEDUREINPUT PROCEDURE IS proc-nameINPUT PROCEDURE IS INPUT-PROC
With filteringIF condition RELEASE record-nameIF KEY > 1000 RELEASE SORT-RECORD

Test Your Knowledge

1. What is the primary purpose of the RELEASE statement in COBOL?

  • To free memory
  • To write records to a sort work file
  • To close files
  • To delete records

2. In which context is the RELEASE statement most commonly used?

  • File processing
  • Sort operations
  • Memory management
  • Screen handling

3. What happens when a RELEASE statement is executed?

  • A record is written to the sort work file
  • Memory is freed
  • A file is closed
  • A record is deleted

4. What is the relationship between RELEASE and SORT statements?

  • They are the same thing
  • RELEASE is used within SORT operations
  • SORT is used within RELEASE operations
  • They are unrelated

5. Which of the following is a valid RELEASE statement syntax?

  • RELEASE record-name
  • RELEASE FROM data-name
  • RELEASE record-name FROM data-name
  • All of the above

Frequently Asked Questions