The END-STRING statement represents a fundamental component of string manipulation and text processing operations in COBOL, serving as an explicit scope terminator that clearly defines the boundaries of STRING statement blocks. This statement embodies modern text processing principles by providing unambiguous termination points for string concatenation operations, enabling sophisticated string building and formatting capabilities, and supporting the development of robust text processing applications that require precise control over string assembly and overflow handling.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100IDENTIFICATION DIVISION. PROGRAM-ID. END-STRING-DEMO. DATA DIVISION. WORKING-STORAGE SECTION. 01 STRING-WORK-AREAS. 05 SOURCE-FIELDS. 10 FIRST-NAME PIC X(15) VALUE 'JOHN'. 10 LAST-NAME PIC X(20) VALUE 'SMITH'. 10 MIDDLE-INITIAL PIC X(1) VALUE 'A'. 10 TITLE PIC X(10) VALUE 'MR.'. 10 DEPARTMENT PIC X(15) VALUE 'ENGINEERING'. 05 TARGET-FIELDS. 10 FULL-NAME PIC X(50). 10 FORMATTED-OUTPUT PIC X(100). 10 REPORT-LINE PIC X(80). 01 STRING-CONTROLS. 05 STRING-POINTER PIC 9(3) VALUE 1. 05 OPERATIONS-COUNT PIC 9(5) VALUE 0. 05 SUCCESSFUL-STRINGS PIC 9(5) VALUE 0. 05 OVERFLOW-ERRORS PIC 9(3) VALUE 0. PROCEDURE DIVISION. MAIN-PROCESSING. PERFORM DEMONSTRATE-BASIC-STRING-OPERATIONS PERFORM DEMONSTRATE-CONDITIONAL-STRING-OPERATIONS PERFORM DEMONSTRATE-COMPLEX-STRING-BUILDING PERFORM DISPLAY-STRING-STATISTICS STOP RUN. DEMONSTRATE-BASIC-STRING-OPERATIONS. DISPLAY 'Demonstrating basic string operations...' *> Simple string concatenation STRING FIRST-NAME DELIMITED BY SPACE ' ' DELIMITED BY SIZE LAST-NAME DELIMITED BY SPACE INTO FULL-NAME ON OVERFLOW DISPLAY 'String overflow occurred' ADD 1 TO OVERFLOW-ERRORS NOT ON OVERFLOW DISPLAY 'Full name created: ' FULL-NAME ADD 1 TO SUCCESSFUL-STRINGS END-STRING ADD 1 TO OPERATIONS-COUNT. DEMONSTRATE-CONDITIONAL-STRING-OPERATIONS. DISPLAY 'Demonstrating conditional string operations...' *> String with pointer control MOVE 1 TO STRING-POINTER STRING TITLE DELIMITED BY SPACE ' ' DELIMITED BY SIZE FIRST-NAME DELIMITED BY SPACE ' ' DELIMITED BY SIZE MIDDLE-INITIAL DELIMITED BY SIZE '. ' DELIMITED BY SIZE LAST-NAME DELIMITED BY SPACE INTO FORMATTED-OUTPUT WITH POINTER STRING-POINTER ON OVERFLOW DISPLAY 'Formatted output overflow' ADD 1 TO OVERFLOW-ERRORS NOT ON OVERFLOW DISPLAY 'Formatted output: ' FORMATTED-OUTPUT DISPLAY 'Final pointer position: ' STRING-POINTER ADD 1 TO SUCCESSFUL-STRINGS END-STRING ADD 1 TO OPERATIONS-COUNT. DEMONSTRATE-COMPLEX-STRING-BUILDING. DISPLAY 'Demonstrating complex string building...' *> Multi-step string building MOVE 1 TO STRING-POINTER STRING 'Employee: ' DELIMITED BY SIZE FULL-NAME DELIMITED BY SPACE ' - Department: ' DELIMITED BY SIZE DEPARTMENT DELIMITED BY SPACE INTO REPORT-LINE WITH POINTER STRING-POINTER ON OVERFLOW DISPLAY 'Report line overflow' ADD 1 TO OVERFLOW-ERRORS NOT ON OVERFLOW DISPLAY 'Report line: ' REPORT-LINE ADD 1 TO SUCCESSFUL-STRINGS END-STRING ADD 1 TO OPERATIONS-COUNT. DISPLAY-STRING-STATISTICS. DISPLAY 'String Processing Statistics:' DISPLAY 'Total operations: ' OPERATIONS-COUNT DISPLAY 'Successful strings: ' SUCCESSFUL-STRINGS DISPLAY 'Overflow errors: ' OVERFLOW-ERRORS.