MainframeMaster

COBOL Tutorial

COBOL REPORTS Clause - Quick Reference

Progress0 of 0 lessons

Overview

The REPORTS clause is used in COBOL's DATA DIVISION to define the REPORTS SECTION, which is where Report Writer report descriptions are specified. This section is essential for any COBOL program that uses Report Writer functionality.

Purpose and Usage

  • Section definition - Defines the REPORTS SECTION in DATA DIVISION
  • Report Writer support - Enables Report Writer functionality
  • Report descriptions - Contains RD (Report Description) entries
  • Structure definition - Establishes report structure and formatting
  • Compilation support - Signals Report Writer usage to compiler

REPORTS vs REPORT Concept

REPORTS: [Section Definition] → [Report Writer Context]
REPORT: [Individual Report] → [Report Structure]
REPORTS defines section, REPORT defines individual reports

REPORTS clause establishes the context for Report Writer definitions.

Syntax

The REPORTS clause follows specific syntax patterns within the DATA DIVISION and establishes the context for Report Writer definitions.

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
* Basic REPORTS clause syntax DATA DIVISION. REPORTS SECTION. RD report-name-1 PAGE LIMIT IS integer LINES HEADING integer FIRST DETAIL integer LAST DETAIL integer FOOTING integer. * Multiple reports in one section REPORTS SECTION. RD SALES-REPORT PAGE LIMIT IS 60 LINES HEADING 1 FIRST DETAIL 5 LAST DETAIL 55 FOOTING 58. RD INVENTORY-REPORT PAGE LIMIT IS 66 LINES HEADING 1 FIRST DETAIL 5 LAST DETAIL 60 FOOTING 64. * With report groups REPORTS SECTION. RD CUSTOMER-REPORT PAGE LIMIT IS 60 LINES HEADING 1 FIRST DETAIL 5 LAST DETAIL 55 FOOTING 58. 01 REPORT-HEADER TYPE IS REPORT HEADING LINE 1. 05 COLUMN 1 PIC X(30) VALUE "CUSTOMER REPORT". 01 DETAIL-LINE TYPE IS DETAIL LINE PLUS 1. 05 COLUMN 1 PIC X(10) SOURCE CUSTOMER-ID. 05 COLUMN 15 PIC X(20) SOURCE CUSTOMER-NAME.

REPORTS clause establishes the REPORTS SECTION for Report Writer definitions.

REPORTS vs REPORT Comparison

AspectREPORTSREPORT
LevelSection (DATA DIVISION)Report description (RD)
PurposeSection definitionReport structure
ScopeEntire sectionIndividual report
UsageOnce per programMultiple reports
ContentRD entriesReport groups

DATA DIVISION Structure

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
* Complete DATA DIVISION with REPORTS SECTION DATA DIVISION. FILE SECTION. FD INPUT-FILE LABEL RECORDS ARE STANDARD RECORD CONTAINS 80 CHARACTERS. 01 INPUT-RECORD. 05 CUSTOMER-ID PIC 9(6). 05 CUSTOMER-NAME PIC X(20). 05 CUSTOMER-BALANCE PIC 9(7)V99. WORKING-STORAGE SECTION. 01 EOF-FLAG PIC X VALUE "N". 88 END-OF-FILE VALUE "Y". * REPORTS SECTION - Required for Report Writer REPORTS SECTION. RD CUSTOMER-REPORT PAGE LIMIT IS 60 LINES HEADING 1 FIRST DETAIL 5 LAST DETAIL 55 FOOTING 58. * Report group definitions 01 REPORT-HEADER TYPE IS REPORT HEADING LINE 1. 05 COLUMN 1 PIC X(30) VALUE "CUSTOMER BALANCE REPORT". 01 DETAIL-LINE TYPE IS DETAIL LINE PLUS 1. 05 COLUMN 1 PIC X(6) SOURCE CUSTOMER-ID. 05 COLUMN 10 PIC X(20) SOURCE CUSTOMER-NAME. 05 COLUMN 35 PIC 9(7)V99 SOURCE CUSTOMER-BALANCE. 01 REPORT-FOOTER TYPE IS REPORT FOOTING LINE 58. 05 COLUMN 1 PIC X(20) VALUE "REPORT COMPLETE".

REPORTS SECTION is part of the DATA DIVISION structure.

Practical Examples

These examples demonstrate how to use the REPORTS clause effectively in different Report Writer scenarios.

Simple Customer Report

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
IDENTIFICATION DIVISION. PROGRAM-ID. CUSTOMER-REPORT-PROG. DATA DIVISION. FILE SECTION. FD CUSTOMER-FILE LABEL RECORDS ARE STANDARD RECORD CONTAINS 80 CHARACTERS. 01 CUSTOMER-RECORD. 05 CUSTOMER-ID PIC 9(6). 05 CUSTOMER-NAME PIC X(20). 05 CUSTOMER-BALANCE PIC 9(7)V99. WORKING-STORAGE SECTION. 01 EOF-FLAG PIC X VALUE "N". 88 END-OF-FILE VALUE "Y". * REPORTS SECTION - Required for Report Writer REPORTS SECTION. RD CUSTOMER-REPORT PAGE LIMIT IS 60 LINES HEADING 1 FIRST DETAIL 5 LAST DETAIL 55 FOOTING 58. * Report group definitions 01 REPORT-HEADER TYPE IS REPORT HEADING LINE 1. 05 COLUMN 1 PIC X(30) VALUE "CUSTOMER BALANCE REPORT". 01 PAGE-HEADER TYPE IS PAGE HEADING LINE 2. 05 COLUMN 1 PIC X(10) VALUE "CUST ID". 05 COLUMN 15 PIC X(20) VALUE "CUSTOMER NAME". 05 COLUMN 40 PIC X(10) VALUE "BALANCE". 01 DETAIL-LINE TYPE IS DETAIL LINE PLUS 1. 05 COLUMN 1 PIC 9(6) SOURCE CUSTOMER-ID. 05 COLUMN 15 PIC X(20) SOURCE CUSTOMER-NAME. 05 COLUMN 40 PIC 9(7)V99 SOURCE CUSTOMER-BALANCE. 01 REPORT-FOOTER TYPE IS REPORT FOOTING LINE 58. 05 COLUMN 1 PIC X(20) VALUE "REPORT COMPLETE". PROCEDURE DIVISION. MAIN-LOGIC. INITIATE CUSTOMER-REPORT PERFORM UNTIL END-OF-FILE READ CUSTOMER-FILE AT END MOVE "Y" TO EOF-FLAG NOT AT END GENERATE DETAIL-LINE END-READ END-PERFORM TERMINATE CUSTOMER-REPORT.

REPORTS SECTION enables simple Report Writer functionality.

Multiple Reports

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
* Multiple reports in one program DATA DIVISION. FILE SECTION. FD SALES-FILE LABEL RECORDS ARE STANDARD RECORD CONTAINS 100 CHARACTERS. 01 SALES-RECORD. 05 SALES-DATE PIC 9(8). 05 SALES-AMOUNT PIC 9(7)V99. 05 SALES-REGION PIC X(10). WORKING-STORAGE SECTION. 01 EOF-FLAG PIC X VALUE "N". 88 END-OF-FILE VALUE "Y". * REPORTS SECTION with multiple reports REPORTS SECTION. RD SALES-REPORT PAGE LIMIT IS 60 LINES HEADING 1 FIRST DETAIL 5 LAST DETAIL 55 FOOTING 58. RD REGIONAL-REPORT PAGE LIMIT IS 66 LINES HEADING 1 FIRST DETAIL 5 LAST DETAIL 60 FOOTING 64. * Sales report groups 01 SALES-HEADER TYPE IS REPORT HEADING LINE 1. 05 COLUMN 1 PIC X(20) VALUE "SALES REPORT". 01 SALES-DETAIL TYPE IS DETAIL LINE PLUS 1. 05 COLUMN 1 PIC 9(8) SOURCE SALES-DATE. 05 COLUMN 15 PIC 9(7)V99 SOURCE SALES-AMOUNT. * Regional report groups 01 REGIONAL-HEADER TYPE IS REPORT HEADING LINE 1. 05 COLUMN 1 PIC X(25) VALUE "REGIONAL SALES REPORT". 01 REGIONAL-DETAIL TYPE IS DETAIL LINE PLUS 1. 05 COLUMN 1 PIC X(10) SOURCE SALES-REGION. 05 COLUMN 15 PIC 9(7)V99 SOURCE SALES-AMOUNT. PROCEDURE DIVISION. GENERATE-REPORTS. * Generate sales report INITIATE SALES-REPORT PERFORM GENERATE-SALES-REPORT TERMINATE SALES-REPORT * Generate regional report INITIATE REGIONAL-REPORT PERFORM GENERATE-REGIONAL-REPORT TERMINATE REGIONAL-REPORT. GENERATE-SALES-REPORT. PERFORM UNTIL END-OF-FILE READ SALES-FILE AT END MOVE "Y" TO EOF-FLAG NOT AT END GENERATE SALES-DETAIL END-READ END-PERFORM. GENERATE-REGIONAL-REPORT. PERFORM UNTIL END-OF-FILE READ SALES-FILE AT END MOVE "Y" TO EOF-FLAG NOT AT END GENERATE REGIONAL-DETAIL END-READ END-PERFORM.

REPORTS SECTION supports multiple report definitions.

Complex Report with Grouping

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
* Complex report with control breaks DATA DIVISION. FILE SECTION. FD INVENTORY-FILE LABEL RECORDS ARE STANDARD RECORD CONTAINS 120 CHARACTERS. 01 INVENTORY-RECORD. 05 ITEM-CATEGORY PIC X(10). 05 ITEM-CODE PIC 9(6). 05 ITEM-NAME PIC X(20). 05 ITEM-QUANTITY PIC 9(5). 05 ITEM-PRICE PIC 9(5)V99. WORKING-STORAGE SECTION. 01 EOF-FLAG PIC X VALUE "N". 88 END-OF-FILE VALUE "Y". 01 PREV-CATEGORY PIC X(10). * REPORTS SECTION for complex report REPORTS SECTION. RD INVENTORY-REPORT PAGE LIMIT IS 66 LINES HEADING 1 FIRST DETAIL 5 LAST DETAIL 60 FOOTING 64. * Report group definitions 01 REPORT-HEADER TYPE IS REPORT HEADING LINE 1. 05 COLUMN 1 PIC X(30) VALUE "INVENTORY ANALYSIS REPORT". 01 CATEGORY-HEADER TYPE IS CONTROL HEADING ITEM-CATEGORY LINE PLUS 2. 05 COLUMN 1 PIC X(20) VALUE "CATEGORY: ". 05 COLUMN 11 PIC X(10) SOURCE ITEM-CATEGORY. 01 DETAIL-LINE TYPE IS DETAIL LINE PLUS 1. 05 COLUMN 1 PIC 9(6) SOURCE ITEM-CODE. 05 COLUMN 10 PIC X(20) SOURCE ITEM-NAME. 05 COLUMN 35 PIC 9(5) SOURCE ITEM-QUANTITY. 05 COLUMN 45 PIC 9(5)V99 SOURCE ITEM-PRICE. 05 COLUMN 55 PIC 9(8)V99 SOURCE ITEM-VALUE. 01 CATEGORY-FOOTER TYPE IS CONTROL FOOTING ITEM-CATEGORY LINE PLUS 1. 05 COLUMN 1 PIC X(15) VALUE "CATEGORY TOTAL:". 05 COLUMN 20 PIC 9(8)V99 SUM ITEM-VALUE. 01 REPORT-FOOTER TYPE IS REPORT FOOTING LINE 64. 05 COLUMN 1 PIC X(20) VALUE "GRAND TOTAL:". 05 COLUMN 20 PIC 9(8)V99 SUM ITEM-VALUE. PROCEDURE DIVISION. GENERATE-INVENTORY-REPORT. INITIATE INVENTORY-REPORT PERFORM UNTIL END-OF-FILE READ INVENTORY-FILE AT END MOVE "Y" TO EOF-FLAG NOT AT END * Calculate item value COMPUTE ITEM-VALUE = ITEM-QUANTITY * ITEM-PRICE * Generate detail line GENERATE DETAIL-LINE END-READ END-PERFORM TERMINATE INVENTORY-REPORT.

REPORTS SECTION enables complex Report Writer functionality with grouping.

Error Handling Report

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
* Report with error handling DATA DIVISION. FILE SECTION. FD PROCESSING-FILE LABEL RECORDS ARE STANDARD RECORD CONTAINS 100 CHARACTERS. 01 PROCESSING-RECORD. 05 RECORD-TYPE PIC X(1). 05 RECORD-DATA PIC X(99). WORKING-STORAGE SECTION. 01 EOF-FLAG PIC X VALUE "N". 88 END-OF-FILE VALUE "Y". 01 ERROR-COUNT PIC 9(4) VALUE 0. 01 SUCCESS-COUNT PIC 9(4) VALUE 0. * REPORTS SECTION for error handling REPORTS SECTION. RD PROCESSING-REPORT PAGE LIMIT IS 60 LINES HEADING 1 FIRST DETAIL 5 LAST DETAIL 55 FOOTING 58. * Report group definitions 01 REPORT-HEADER TYPE IS REPORT HEADING LINE 1. 05 COLUMN 1 PIC X(30) VALUE "PROCESSING STATUS REPORT". 01 SUCCESS-HEADER TYPE IS CONTROL HEADING LINE PLUS 2. 05 COLUMN 1 PIC X(20) VALUE "SUCCESSFUL RECORDS:". 01 SUCCESS-DETAIL TYPE IS DETAIL LINE PLUS 1. 05 COLUMN 1 PIC X(99) SOURCE RECORD-DATA. 01 ERROR-HEADER TYPE IS CONTROL HEADING LINE PLUS 2. 05 COLUMN 1 PIC X(15) VALUE "ERROR RECORDS:". 01 ERROR-DETAIL TYPE IS DETAIL LINE PLUS 1. 05 COLUMN 1 PIC X(99) SOURCE RECORD-DATA. 01 SUMMARY-FOOTER TYPE IS REPORT FOOTING LINE 58. 05 COLUMN 1 PIC X(15) VALUE "SUCCESS COUNT:". 05 COLUMN 20 PIC 9(4) SOURCE SUCCESS-COUNT. 05 COLUMN 30 PIC X(12) VALUE "ERROR COUNT:". 05 COLUMN 45 PIC 9(4) SOURCE ERROR-COUNT. PROCEDURE DIVISION. GENERATE-PROCESSING-REPORT. INITIATE PROCESSING-REPORT PERFORM UNTIL END-OF-FILE READ PROCESSING-FILE AT END MOVE "Y" TO EOF-FLAG NOT AT END * Process record based on type EVALUATE RECORD-TYPE WHEN "S" ADD 1 TO SUCCESS-COUNT GENERATE SUCCESS-DETAIL WHEN "E" ADD 1 TO ERROR-COUNT GENERATE ERROR-DETAIL WHEN OTHER ADD 1 TO ERROR-COUNT GENERATE ERROR-DETAIL END-EVALUATE END-READ END-PERFORM TERMINATE PROCESSING-REPORT.

REPORTS SECTION enables error handling and status reporting.

Best Practices and Tips

Following these best practices ensures effective use of the REPORTS clause in COBOL applications.

REPORTS Best Practices

  • Always include REPORTS SECTION - Required when using Report Writer
  • Use meaningful report names - Choose descriptive RD names
  • Plan page layouts carefully - Consider page limits and line allocations
  • Test report generation - Verify output with various data scenarios
  • Document report structures - Clearly document report group purposes
  • Optimize performance - Use appropriate page limits and line counts

Common Pitfalls to Avoid

PitfallProblemSolution
Missing REPORTS SECTIONCompilation errorsAlways include when using Report Writer
Incorrect page limitsPoor formattingPlan page layout carefully
Missing report groupsIncomplete reportsDefine all necessary report groups
Incorrect verb sequenceRuntime errorsUse INITIATE, GENERATE, TERMINATE
Poor naming conventionsMaintenance difficultiesUse descriptive names

Performance Considerations

  • Page limit optimization - Set appropriate page limits for output device
  • Line allocation planning - Allocate lines efficiently for headers and footers
  • Report group efficiency - Minimize unnecessary report groups
  • Memory usage - Report Writer requires specific memory structures
  • Processing overhead - Report Writer adds processing overhead

When to Use REPORTS vs Other Methods

ScenarioUse REPORTSUse Other Methods
Structured reportsYesNo
Formatted outputYesNo
Page numberingYesNo
Simple data outputNoYes (DISPLAY)
File processingNoYes (file operations)

REPORTS Clause Quick Reference

UsageSyntaxPurpose
Define REPORTS SECTIONREPORTS SECTION.Establish Report Writer context
Single reportRD report-nameDefine individual report
Multiple reportsMultiple RD entriesDefine several reports
Report groups01 group-name TYPE IS typeDefine report structure
Complete structureREPORTS SECTION + RD + groupsFull Report Writer setup

Test Your Knowledge

1. What is the primary purpose of the REPORTS clause in COBOL?

  • To create reports
  • To define the REPORTS SECTION in DATA DIVISION
  • To generate file reports
  • To create program documentation

2. In which division is the REPORTS clause used?

  • IDENTIFICATION DIVISION
  • ENVIRONMENT DIVISION
  • DATA DIVISION
  • PROCEDURE DIVISION

3. What happens when a REPORTS clause is executed?

  • A report is automatically generated
  • Report Writer section is defined
  • A report file is created
  • Report data is processed

4. What is the relationship between REPORTS and Report Writer verbs?

  • They are the same thing
  • REPORTS defines structure, verbs execute actions
  • REPORTS is faster than verbs
  • They cannot be used together

5. Which of the following is a valid REPORTS clause usage?

  • REPORTS SECTION.
  • REPORTS DIVISION.
  • REPORTS PARAGRAPH.
  • REPORTS SENTENCE.

Frequently Asked Questions