The END-WRITE statement represents a fundamental component of file output and record writing operations in COBOL, serving as an explicit scope terminator that clearly defines the boundaries of WRITE statement blocks. This statement embodies modern file processing principles by providing unambiguous termination points for record output operations, enabling sophisticated error handling for file writing scenarios, and supporting the development of robust data output applications that require precise control over record creation and file management operations.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576IDENTIFICATION DIVISION. PROGRAM-ID. END-WRITE-DEMO. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT OUTPUT-FILE ASSIGN TO 'OUTPUT.DAT' ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS OUTPUT-FILE-STATUS. DATA DIVISION. FILE SECTION. FD OUTPUT-FILE. 01 OUTPUT-RECORD. 05 RECORD-ID PIC X(10). 05 RECORD-DATA PIC X(80). 05 RECORD-TIMESTAMP PIC X(14). WORKING-STORAGE SECTION. 01 FILE-STATUS-CONTROLS. 05 OUTPUT-FILE-STATUS PIC XX. 88 FILE-OK VALUE '00'. 88 FILE-ERROR VALUE '01' THRU '99'. 01 WRITE-CONTROLS. 05 RECORDS-WRITTEN PIC 9(7) VALUE 0. 05 SUCCESSFUL-WRITES PIC 9(7) VALUE 0. 05 FAILED-WRITES PIC 9(5) VALUE 0. PROCEDURE DIVISION. MAIN-PROCESSING. PERFORM INITIALIZE-OUTPUT-FILE PERFORM WRITE-SAMPLE-RECORDS PERFORM FINALIZE-OUTPUT-FILE STOP RUN. INITIALIZE-OUTPUT-FILE. OPEN OUTPUT OUTPUT-FILE IF NOT FILE-OK DISPLAY 'Error opening output file: ' OUTPUT-FILE-STATUS STOP RUN END-IF. WRITE-SAMPLE-RECORDS. DISPLAY 'Writing sample records...' PERFORM VARYING RECORDS-WRITTEN FROM 1 BY 1 UNTIL RECORDS-WRITTEN > 10 STRING 'REC' DELIMITED BY SIZE RECORDS-WRITTEN DELIMITED BY SIZE INTO RECORD-ID END-STRING STRING 'Sample data for record ' DELIMITED BY SIZE RECORDS-WRITTEN DELIMITED BY SIZE INTO RECORD-DATA END-STRING MOVE FUNCTION CURRENT-DATE TO RECORD-TIMESTAMP WRITE OUTPUT-RECORD INVALID KEY DISPLAY 'Write failed for record: ' RECORD-ID ADD 1 TO FAILED-WRITES NOT INVALID KEY DISPLAY 'Record written: ' RECORD-ID ADD 1 TO SUCCESSFUL-WRITES END-WRITE END-PERFORM. FINALIZE-OUTPUT-FILE. CLOSE OUTPUT-FILE DISPLAY 'Records written: ' SUCCESSFUL-WRITES DISPLAY 'Failed writes: ' FAILED-WRITES.