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

COBOL WRITE Statement

Intermediate 🕑 10 min read 👁 0 views

COBOL WRITE Statement

The WRITE statement outputs a record to a file.

Syntax

WRITE record-name [FROM identifier]
    [BEFORE/AFTER ADVANCING {integer LINES | PAGE | mnemonic-name}]
    [INVALID KEY imperative-statement]
[END-WRITE]

Example Program

       IDENTIFICATION DIVISION.
       PROGRAM-ID. WRITE-DEMO.

       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT REPORT-FILE ASSIGN TO 'REPORT.TXT'
               FILE STATUS IS WS-FILE-STATUS.

       DATA DIVISION.
       FILE SECTION.
       FD REPORT-FILE.
       01 REPORT-RECORD   PIC X(80).

       WORKING-STORAGE SECTION.
       01 WS-FILE-STATUS  PIC XX.
       01 WS-HEADER       PIC X(80) VALUE
           'EMPLOYEE REPORT'.
       01 WS-DETAIL.
          05 WS-ID        PIC 9(5).
          05 FILLER       PIC X(3) VALUE SPACES.
          05 WS-NAME      PIC X(30).
          05 FILLER       PIC X(3) VALUE SPACES.
          05 WS-SALARY    PIC $$$,$$$,$$9.99.

       PROCEDURE DIVISION.
           OPEN OUTPUT REPORT-FILE

      * Write header with page advance
           WRITE REPORT-RECORD FROM WS-HEADER
               AFTER ADVANCING PAGE

      * Write blank line
           MOVE SPACES TO REPORT-RECORD
           WRITE REPORT-RECORD AFTER ADVANCING 1 LINE

      * Write detail lines
           MOVE 00001 TO WS-ID
           MOVE 'John Smith' TO WS-NAME
           MOVE 55000.00 TO WS-SALARY
           WRITE REPORT-RECORD FROM WS-DETAIL
               AFTER ADVANCING 1 LINE

           MOVE 00002 TO WS-ID
           MOVE 'Jane Doe' TO WS-NAME
           MOVE 62500.00 TO WS-SALARY
           WRITE REPORT-RECORD FROM WS-DETAIL
               AFTER ADVANCING 1 LINE

           CLOSE REPORT-FILE
           DISPLAY 'Report written successfully'
           STOP RUN.

Expected Output (Console)

Report written successfully

Report File Contents

EMPLOYEE REPORT

00001   John Smith                         $55,000.00
00002   Jane Doe                           $62,500.00

Key Points

  • WRITE uses record name, not file name
  • FROM copies from working storage
  • ADVANCING controls line spacing
  • AFTER ADVANCING PAGE starts new page