The REPORT clause is used in COBOL's Report Writer feature to define report specifications. It enables automated report generation with consistent formatting, pagination, and calculations.
REPORT clause defines specifications for automated report generation.
The REPORT clause follows specific syntax patterns within the REPORTS SECTION and can include various report specifications.
12345678910111213141516171819202122232425262728293031323334353637383940414243* Basic REPORT clause syntax REPORTS SECTION. RD report-name [IS GLOBAL] [PAGE LIMIT IS integer LINES] [HEADING integer] [FIRST DETAIL integer] [LAST DETAIL integer] [FOOTING integer] [CODE "literal"]. * Complete example REPORTS SECTION. RD SALES-REPORT PAGE LIMIT IS 60 LINES HEADING 1 FIRST DETAIL 5 LAST DETAIL 55 FOOTING 58 CODE "SR". * With global specification RD INVENTORY-REPORT IS GLOBAL PAGE LIMIT IS 66 LINES HEADING 2 FIRST DETAIL 8 LAST DETAIL 60 FOOTING 64. * Multiple reports RD DAILY-REPORT PAGE LIMIT IS 50 LINES HEADING 1 FIRST DETAIL 4 LAST DETAIL 45 FOOTING 48. RD MONTHLY-REPORT PAGE LIMIT IS 80 LINES HEADING 3 FIRST DETAIL 10 LAST DETAIL 70 FOOTING 75.
REPORT clause defines the structure and formatting parameters for reports.
Aspect | REPORT | File Processing |
---|---|---|
Formatting | Automatic | Manual coding |
Pagination | Built-in | Manual control |
Totals | Automatic | Manual calculation |
Flexibility | Standardized | Highly flexible |
Development time | Faster | Slower |
123456789101112131415161718192021222324252627282930* PAGE LIMIT - Total lines per page RD REPORT-1 PAGE LIMIT IS 60 LINES * HEADING - Line number for page headers RD REPORT-2 HEADING 1 * FIRST DETAIL - First line for detail records RD REPORT-3 FIRST DETAIL 5 * LAST DETAIL - Last line for detail records RD REPORT-4 LAST DETAIL 55 * FOOTING - Line number for page footers RD REPORT-5 FOOTING 58 * CODE - Report identification code RD REPORT-6 CODE "RPT" * GLOBAL - Report available to subprograms RD REPORT-7 IS GLOBAL * Combined parameters RD COMPLETE-REPORT PAGE LIMIT IS 66 LINES HEADING 1 FIRST DETAIL 5 LAST DETAIL 60 FOOTING 64 CODE "CR" IS GLOBAL
Different parameters control various aspects of report formatting.
These examples demonstrate how to use the REPORT clause effectively in different report generation scenarios.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576IDENTIFICATION DIVISION. PROGRAM-ID. SALES-REPORT-GEN. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT SALES-FILE ASSIGN TO "SALES.DAT" ORGANIZATION IS SEQUENTIAL. SELECT REPORT-FILE ASSIGN TO "SALES-REPORT.OUT" ORGANIZATION IS SEQUENTIAL. DATA DIVISION. FILE SECTION. FD SALES-FILE. 01 SALES-RECORD. 05 SALES-DATE PIC 9(8). 05 SALES-AMOUNT PIC 9(7)V99. 05 SALES-REGION PIC X(10). 05 SALES-PRODUCT PIC X(20). FD REPORT-FILE. REPORTS SECTION. RD SALES-REPORT PAGE LIMIT IS 60 LINES HEADING 1 FIRST DETAIL 5 LAST DETAIL 55 FOOTING 58 CODE "SR". * Report groups follow the RD 01 REPORT-HEADING TYPE IS REPORT HEADING. 05 LINE 1. 10 COLUMN 1 PIC X(20) VALUE "SALES REPORT". 10 COLUMN 40 PIC X(10) VALUE "DATE: ". 10 COLUMN 50 PIC 9(8) SOURCE CURRENT-DATE. 05 LINE 2. 10 COLUMN 1 PIC X(20) VALUE "REGION". 10 COLUMN 15 PIC X(20) VALUE "PRODUCT". 10 COLUMN 40 PIC X(10) VALUE "AMOUNT". 01 DETAIL-LINE TYPE IS DETAIL. 05 LINE PLUS 1. 10 COLUMN 1 PIC X(10) SOURCE SALES-REGION. 10 COLUMN 15 PIC X(20) SOURCE SALES-PRODUCT. 10 COLUMN 40 PIC 9(7)V99 SOURCE SALES-AMOUNT. 01 REPORT-FOOTING TYPE IS REPORT FOOTING. 05 LINE 58. 10 COLUMN 1 PIC X(20) VALUE "END OF REPORT". WORKING-STORAGE SECTION. 01 CURRENT-DATE PIC 9(8). PROCEDURE DIVISION. MAIN-PROCESS. OPEN INPUT SALES-FILE OPEN OUTPUT REPORT-FILE INITIATE SALES-REPORT PERFORM UNTIL END-OF-FILE READ SALES-FILE AT END MOVE "Y" TO EOF-FLAG NOT AT END GENERATE DETAIL-LINE END-READ END-PERFORM TERMINATE SALES-REPORT CLOSE SALES-FILE CLOSE REPORT-FILE STOP RUN.
REPORT clause defines the structure for automated sales report generation.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162* Inventory report with automatic totals REPORTS SECTION. RD INVENTORY-REPORT PAGE LIMIT IS 66 LINES HEADING 1 FIRST DETAIL 5 LAST DETAIL 60 FOOTING 64 CODE "INV". 01 PAGE-HEADER TYPE IS PAGE HEADING. 05 LINE 1. 10 COLUMN 1 PIC X(30) VALUE "INVENTORY STATUS REPORT". 10 COLUMN 50 PIC X(10) VALUE "PAGE: ". 10 COLUMN 60 PIC ZZZ9 SOURCE PAGE-COUNTER. 05 LINE 3. 10 COLUMN 1 PIC X(10) VALUE "ITEM CODE". 10 COLUMN 15 PIC X(20) VALUE "DESCRIPTION". 10 COLUMN 40 PIC X(10) VALUE "QUANTITY". 10 COLUMN 55 PIC X(10) VALUE "VALUE". 01 DETAIL-LINE TYPE IS DETAIL. 05 LINE PLUS 1. 10 COLUMN 1 PIC X(10) SOURCE ITEM-CODE. 10 COLUMN 15 PIC X(20) SOURCE ITEM-DESC. 10 COLUMN 40 PIC 9(5) SOURCE ITEM-QTY. 10 COLUMN 55 PIC 9(7)V99 SOURCE ITEM-VALUE. 01 CONTROL-FOOTING TYPE IS CONTROL FOOTING CATEGORY. 05 LINE PLUS 2. 10 COLUMN 1 PIC X(15) VALUE "CATEGORY TOTAL:". 10 COLUMN 40 PIC 9(5) SUM ITEM-QTY. 10 COLUMN 55 PIC 9(7)V99 SUM ITEM-VALUE. 01 REPORT-FOOTING TYPE IS REPORT FOOTING. 05 LINE 64. 10 COLUMN 1 PIC X(15) VALUE "GRAND TOTAL:". 10 COLUMN 40 PIC 9(5) SUM ITEM-QTY. 10 COLUMN 55 PIC 9(7)V99 SUM ITEM-VALUE. * Data structure for inventory records 01 INVENTORY-RECORD. 05 ITEM-CODE PIC X(10). 05 ITEM-DESC PIC X(20). 05 ITEM-QTY PIC 9(5). 05 ITEM-VALUE PIC 9(7)V99. 05 ITEM-CATEGORY PIC X(10). 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 GENERATE DETAIL-LINE END-READ END-PERFORM TERMINATE INVENTORY-REPORT.
REPORT clause enables automatic totals and subtotals in inventory reports.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283* Financial statement with multiple sections REPORTS SECTION. RD FINANCIAL-REPORT PAGE LIMIT IS 80 LINES HEADING 3 FIRST DETAIL 8 LAST DETAIL 70 FOOTING 75 CODE "FIN". 01 REPORT-HEADING TYPE IS REPORT HEADING. 05 LINE 1. 10 COLUMN 1 PIC X(40) VALUE "FINANCIAL STATEMENT". 10 COLUMN 50 PIC X(10) VALUE "PERIOD: ". 10 COLUMN 60 PIC 9(8) SOURCE REPORT-PERIOD. 05 LINE 3. 10 COLUMN 1 PIC X(30) VALUE "ACCOUNT". 10 COLUMN 35 PIC X(20) VALUE "DESCRIPTION". 10 COLUMN 60 PIC X(15) VALUE "AMOUNT". 01 ASSETS-HEADING TYPE IS CONTROL HEADING ASSET-TYPE. 05 LINE PLUS 2. 10 COLUMN 1 PIC X(20) VALUE "ASSETS". 01 ASSET-DETAIL TYPE IS DETAIL. 05 LINE PLUS 1. 10 COLUMN 1 PIC X(10) SOURCE ACCOUNT-NUM. 10 COLUMN 15 PIC X(20) SOURCE ACCOUNT-DESC. 10 COLUMN 40 PIC 9(10)V99 SOURCE ACCOUNT-AMOUNT. 01 ASSET-TOTAL TYPE IS CONTROL FOOTING ASSET-TYPE. 05 LINE PLUS 1. 10 COLUMN 1 PIC X(15) VALUE "TOTAL ASSETS:". 10 COLUMN 40 PIC 9(10)V99 SUM ACCOUNT-AMOUNT. 01 LIABILITIES-HEADING TYPE IS CONTROL HEADING LIABILITY-TYPE. 05 LINE PLUS 2. 10 COLUMN 1 PIC X(25) VALUE "LIABILITIES". 01 LIABILITY-DETAIL TYPE IS DETAIL. 05 LINE PLUS 1. 10 COLUMN 1 PIC X(10) SOURCE ACCOUNT-NUM. 10 COLUMN 15 PIC X(20) SOURCE ACCOUNT-DESC. 10 COLUMN 40 PIC 9(10)V99 SOURCE ACCOUNT-AMOUNT. 01 LIABILITY-TOTAL TYPE IS CONTROL FOOTING LIABILITY-TYPE. 05 LINE PLUS 1. 10 COLUMN 1 PIC X(20) VALUE "TOTAL LIABILITIES:". 10 COLUMN 40 PIC 9(10)V99 SUM ACCOUNT-AMOUNT. 01 REPORT-FOOTING TYPE IS REPORT FOOTING. 05 LINE 75. 10 COLUMN 1 PIC X(20) VALUE "NET WORTH:". 10 COLUMN 40 PIC 9(10)V99 SOURCE NET-WORTH. * Financial data structure 01 FINANCIAL-RECORD. 05 ACCOUNT-NUM PIC X(10). 05 ACCOUNT-DESC PIC X(20). 05 ACCOUNT-AMOUNT PIC 9(10)V99. 05 ACCOUNT-TYPE PIC X(1). 88 ASSET-TYPE VALUE "A". 88 LIABILITY-TYPE VALUE "L". WORKING-STORAGE SECTION. 01 REPORT-PERIOD PIC 9(8). 01 NET-WORTH PIC 9(10)V99. PROCEDURE DIVISION. GENERATE-FINANCIAL-REPORT. INITIATE FINANCIAL-REPORT PERFORM UNTIL END-OF-FILE READ FINANCIAL-FILE AT END MOVE "Y" TO EOF-FLAG NOT AT END GENERATE ASSET-DETAIL GENERATE LIABILITY-DETAIL END-READ END-PERFORM TERMINATE FINANCIAL-REPORT.
REPORT clause supports complex financial reports with multiple sections.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374* Program with multiple reports REPORTS SECTION. RD DAILY-REPORT PAGE LIMIT IS 50 LINES HEADING 1 FIRST DETAIL 4 LAST DETAIL 45 FOOTING 48 CODE "DLY". RD MONTHLY-REPORT PAGE LIMIT IS 80 LINES HEADING 3 FIRST DETAIL 8 LAST DETAIL 70 FOOTING 75 CODE "MTH". RD SUMMARY-REPORT PAGE LIMIT IS 40 LINES HEADING 2 FIRST DETAIL 5 LAST DETAIL 35 FOOTING 38 CODE "SUM". * Daily report groups 01 DAILY-HEADER TYPE IS REPORT HEADING. 05 LINE 1. 10 COLUMN 1 PIC X(20) VALUE "DAILY ACTIVITY REPORT". 01 DAILY-DETAIL TYPE IS DETAIL. 05 LINE PLUS 1. 10 COLUMN 1 PIC X(10) SOURCE ACTIVITY-DATE. 10 COLUMN 15 PIC X(20) SOURCE ACTIVITY-DESC. 10 COLUMN 40 PIC 9(7)V99 SOURCE ACTIVITY-AMOUNT. * Monthly report groups 01 MONTHLY-HEADER TYPE IS REPORT HEADING. 05 LINE 1. 10 COLUMN 1 PIC X(25) VALUE "MONTHLY SUMMARY REPORT". 01 MONTHLY-DETAIL TYPE IS DETAIL. 05 LINE PLUS 1. 10 COLUMN 1 PIC X(10) SOURCE MONTH-YEAR. 10 COLUMN 15 PIC X(15) SOURCE CATEGORY. 10 COLUMN 35 PIC 9(10)V99 SOURCE MONTHLY-TOTAL. * Summary report groups 01 SUMMARY-HEADER TYPE IS REPORT HEADING. 05 LINE 1. 10 COLUMN 1 PIC X(20) VALUE "ANNUAL SUMMARY REPORT". 01 SUMMARY-DETAIL TYPE IS DETAIL. 05 LINE PLUS 1. 10 COLUMN 1 PIC X(10) SOURCE YEAR. 10 COLUMN 15 PIC X(15) SOURCE ANNUAL-TOTAL. PROCEDURE DIVISION. GENERATE-ALL-REPORTS. * Generate daily report INITIATE DAILY-REPORT PERFORM GENERATE-DAILY-REPORT TERMINATE DAILY-REPORT * Generate monthly report INITIATE MONTHLY-REPORT PERFORM GENERATE-MONTHLY-REPORT TERMINATE MONTHLY-REPORT * Generate summary report INITIATE SUMMARY-REPORT PERFORM GENERATE-SUMMARY-REPORT TERMINATE SUMMARY-REPORT.
Multiple REPORT clauses enable different report types in a single program.
Following these best practices ensures effective use of the REPORT clause in COBOL applications.
Pitfall | Problem | Solution |
---|---|---|
Insufficient page space | Content overflow | Increase page limits |
Poor line allocation | Formatting issues | Plan line spacing carefully |
Missing report groups | Incomplete reports | Define all necessary groups |
Incorrect file association | Output errors | Verify file definitions |
Complex report logic | Maintenance difficulties | Keep reports simple |
Scenario | Use REPORT | Use Manual Processing |
---|---|---|
Standard business reports | Yes | No |
Complex custom formatting | No | Yes |
Automatic totals | Yes | No |
Rapid development | Yes | No |
Non-standard output | No | Yes |
Parameter | Syntax | Purpose |
---|---|---|
Basic report | RD report-name | Define report structure |
Page limit | PAGE LIMIT IS n LINES | Set page size |
Heading | HEADING n | Set header line |
Detail range | FIRST DETAIL n LAST DETAIL n | Set detail area |
Footing | FOOTING n | Set footer line |
Code | CODE "literal" | Set report identifier |
Global | IS GLOBAL | Make available to subprograms |
1. What is the primary purpose of the REPORT clause in COBOL?
2. In which section is the REPORT clause most commonly used?
3. What happens when a REPORT clause is executed?
4. What is the relationship between REPORT and Report Writer verbs?
5. Which of the following is a valid REPORT clause usage?