Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
💻 COBOL

COBOL Report Writer Basics

Advanced 🕑 20 min read 👁 0 views

COBOL Report Writer Basics

Report Writer is a COBOL feature for producing formatted reports with automatic page handling, totals, and grouping.

Advantages

  • Automatic page breaks
  • Built-in subtotals and totals
  • Heading and footing control
  • Simplified report logic

Report Writer Sections

REPORT SECTION: ```cobol REPORT SECTION. RD report-name CONTROLS ARE control-1, control-2... PAGE LIMIT IS n LINES HEADING n FIRST DETAIL n LAST DETAIL n FOOTING n. ```

Report Groups

  • REPORT HEADING (RH)
  • PAGE HEADING (PH)
  • CONTROL HEADING (CH)
  • DETAIL (DE)
  • CONTROL FOOTING (CF)
  • PAGE FOOTING (PF)
  • REPORT FOOTING (RF)

Report Writer Statements

  • INITIATE: Start report processing
  • GENERATE: Produce report lines
  • TERMINATE: End report processing

Code Example

       IDENTIFICATION DIVISION.
       PROGRAM-ID. REPORT-DEMO.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT REPORT-FILE ASSIGN TO RPTFILE.
           SELECT INPUT-FILE ASSIGN TO INFILE.
       DATA DIVISION.
       FILE SECTION.
       FD INPUT-FILE.
       01 INPUT-REC.
           05 IN-DEPT PIC X(3).
           05 IN-NAME PIC X(20).
           05 IN-SALARY PIC 9(7)V99.
       FD REPORT-FILE REPORT IS SALARY-REPORT.
       
       REPORT SECTION.
       RD SALARY-REPORT
           CONTROLS ARE FINAL IN-DEPT
           PAGE LIMIT 60 LINES
           HEADING 1 FIRST DETAIL 5 LAST DETAIL 55.
       01 TYPE PAGE HEADING.
           05 LINE 1 COL 1 VALUE 'SALARY REPORT'.
       01 TYPE DETAIL.
           05 LINE PLUS 1.
               10 COL 1 PIC X(3) SOURCE IN-DEPT.
               10 COL 10 PIC X(20) SOURCE IN-NAME.
               10 COL 35 PIC $$$,$$$,$$9.99 SOURCE IN-SALARY.
       PROCEDURE DIVISION.
           OPEN INPUT INPUT-FILE OUTPUT REPORT-FILE
           INITIATE SALARY-REPORT
           READ INPUT-FILE AT END GO TO END-REPORT
           PERFORM UNTIL 1 = 0
               GENERATE SALARY-REPORT
               READ INPUT-FILE AT END EXIT PERFORM
           END-PERFORM.
       END-REPORT.
           TERMINATE SALARY-REPORT
           CLOSE INPUT-FILE REPORT-FILE
           STOP RUN.