💻 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