The TEXT feature in COBOL provides comprehensive text processing and string manipulation capabilities. It enables programs to handle text data efficiently, manipulate strings, parse text content, and perform various text-based operations.
TEXT provides specialized text processing capabilities beyond basic alphanumeric operations.
TEXT operations are implemented in the PROCEDURE DIVISION using specialized constructs for text processing, string manipulation, and text-based operations.
1234567891011121314151617181920212223242526* Basic TEXT syntax examples PROCEDURE DIVISION. * String concatenation STRING FIRST-NAME DELIMITED BY SPACE " " DELIMITED BY SIZE LAST-NAME DELIMITED BY SPACE INTO FULL-NAME * String parsing UNSTRING INPUT-TEXT DELIMITED BY "," INTO FIELD1 FIELD2 FIELD3 * Text inspection and replacement INSPECT TEXT-FIELD REPLACING ALL "OLD" BY "NEW" * Text formatting MOVE FUNCTION TRIM(TEXT-INPUT) TO FORMATTED-TEXT * Text validation IF TEXT-FIELD IS ALPHABETIC PERFORM PROCESS-TEXT END-IF * Text searching INSPECT TEXT-FIELD TALLYING COUNT FOR ALL "SEARCH-TERM"
Basic TEXT operations for string manipulation and text processing.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677* Complete COBOL program demonstrating TEXT usage IDENTIFICATION DIVISION. PROGRAM-ID. TEXT-DEMO. ENVIRONMENT DIVISION. CONFIGURATION SECTION. DATA DIVISION. WORKING-STORAGE SECTION. 01 TEXT-DATA. 05 INPUT-TEXT PIC X(100). 05 OUTPUT-TEXT PIC X(100). 05 PARSED-FIELDS. 10 FIELD1 PIC X(30). 10 FIELD2 PIC X(30). 10 FIELD3 PIC X(30). 01 TEXT-STATISTICS. 05 CHAR-COUNT PIC 9(3). 05 WORD-COUNT PIC 9(3). 05 LINE-COUNT PIC 9(3). 01 TEXT-OPERATIONS. 05 SEARCH-TERM PIC X(20). 05 REPLACE-TERM PIC X(20). PROCEDURE DIVISION. MAIN-LOGIC. PERFORM INITIALIZE-TEXT-PROCESSING PERFORM PROCESS-TEXT-DATA PERFORM ANALYZE-TEXT PERFORM FORMAT-TEXT-OUTPUT STOP RUN. INITIALIZE-TEXT-PROCESSING. MOVE "Hello,World,COBOL" TO INPUT-TEXT MOVE "Hello" TO SEARCH-TERM MOVE "Hi" TO REPLACE-TERM. PROCESS-TEXT-DATA. * Parse comma-separated text UNSTRING INPUT-TEXT DELIMITED BY "," INTO FIELD1 FIELD2 FIELD3 * Replace text content INSPECT INPUT-TEXT REPLACING ALL SEARCH-TERM BY REPLACE-TERM * Concatenate processed text STRING FIELD1 DELIMITED BY SPACE " " DELIMITED BY SIZE FIELD2 DELIMITED BY SPACE " " DELIMITED BY SIZE FIELD3 DELIMITED BY SPACE INTO OUTPUT-TEXT. ANALYZE-TEXT. * Count characters MOVE FUNCTION LENGTH(INPUT-TEXT) TO CHAR-COUNT * Count words (simplified) INSPECT INPUT-TEXT TALLYING WORD-COUNT FOR ALL " " ADD 1 TO WORD-COUNT * Count lines (simplified) INSPECT INPUT-TEXT TALLYING LINE-COUNT FOR ALL "." ADD 1 TO LINE-COUNT. FORMAT-TEXT-OUTPUT. * Format output text MOVE FUNCTION TRIM(OUTPUT-TEXT) TO OUTPUT-TEXT * Display results DISPLAY "Original Text: " INPUT-TEXT DISPLAY "Processed Text: " OUTPUT-TEXT DISPLAY "Character Count: " CHAR-COUNT DISPLAY "Word Count: " WORD-COUNT DISPLAY "Line Count: " LINE-COUNT.
The program demonstrates comprehensive text processing capabilities.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859* Advanced TEXT usage with complex text processing PROCEDURE DIVISION. ADVANCED-TEXT-OPERATIONS. PERFORM COMPLEX-TEXT-PARSING PERFORM TEXT-TRANSFORMATION PERFORM TEXT-VALIDATION PERFORM TEXT-FORMATTING. COMPLEX-TEXT-PARSING. * Parse complex text structure UNSTRING COMPLEX-TEXT DELIMITED BY "|" INTO PARSED-FIELD1 PARSED-FIELD2 PARSED-FIELD3 WITH POINTER PARSE-POINTER ON OVERFLOW PERFORM HANDLE-PARSE-ERROR NOT ON OVERFLOW PERFORM CONTINUE-PARSING. TEXT-TRANSFORMATION. * Transform text case MOVE FUNCTION UPPER-CASE(INPUT-TEXT) TO UPPER-TEXT MOVE FUNCTION LOWER-CASE(INPUT-TEXT) TO LOWER-TEXT * Replace multiple patterns INSPECT TRANSFORM-TEXT REPLACING ALL "PATTERN1" BY "REPLACEMENT1" INSPECT TRANSFORM-TEXT REPLACING ALL "PATTERN2" BY "REPLACEMENT2" INSPECT TRANSFORM-TEXT REPLACING ALL "PATTERN3" BY "REPLACEMENT3". TEXT-VALIDATION. * Validate text format IF TEXT-TO-VALIDATE IS ALPHABETIC MOVE 'VALID' TO VALIDATION-STATUS ELSE IF TEXT-TO-VALIDATE IS NUMERIC MOVE 'VALID' TO VALIDATION-STATUS ELSE MOVE 'INVALID' TO VALIDATION-STATUS END-IF * Check text length IF FUNCTION LENGTH(TEXT-TO-VALIDATE) > MAX-LENGTH MOVE 'TOO-LONG' TO VALIDATION-STATUS END-IF. TEXT-FORMATTING. * Format text for output MOVE FUNCTION TRIM(UNFORMATTED-TEXT) TO FORMATTED-TEXT * Add formatting characters STRING "[" DELIMITED BY SIZE FORMATTED-TEXT DELIMITED BY SPACE "]" DELIMITED BY SIZE INTO FINAL-TEXT. HANDLE-PARSE-ERROR. DISPLAY "Error: Text parsing failed" MOVE 'ERROR' TO PARSE-STATUS. CONTINUE-PARSING. DISPLAY "Text parsing completed successfully" MOVE 'SUCCESS' TO PARSE-STATUS.
Advanced TEXT usage with complex text processing and validation.
TEXT is essential in various scenarios where text processing, string manipulation, and text-based applications are required.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455* Text parsing application using TEXT IDENTIFICATION DIVISION. PROGRAM-ID. TEXT-PARSER. DATA DIVISION. WORKING-STORAGE SECTION. 01 PARSING-DATA. 05 CSV-LINE PIC X(200). 05 PARSED-FIELDS. 10 FIELD OCCURS 10 TIMES PIC X(50). 05 FIELD-COUNT PIC 9(2). 01 PARSING-CONTROL. 05 DELIMITER PIC X VALUE ",". 05 PARSE-POINTER PIC 9(3). PROCEDURE DIVISION. MAIN-LOGIC. PERFORM INITIALIZE-PARSER PERFORM PARSE-CSV-DATA PERFORM PROCESS-PARSED-FIELDS STOP RUN. INITIALIZE-PARSER. MOVE "Name,Age,City,Occupation,Salary" TO CSV-LINE MOVE ZERO TO FIELD-COUNT. PARSE-CSV-DATA. * Parse CSV line into fields UNSTRING CSV-LINE DELIMITED BY DELIMITER INTO FIELD(1) FIELD(2) FIELD(3) FIELD(4) FIELD(5) WITH POINTER PARSE-POINTER TALLYING IN FIELD-COUNT ON OVERFLOW PERFORM HANDLE-PARSE-OVERFLOW NOT ON OVERFLOW PERFORM CONTINUE-PROCESSING. PROCESS-PARSED-FIELDS. * Process each parsed field PERFORM VARYING I FROM 1 BY 1 UNTIL I > FIELD-COUNT PERFORM PROCESS-INDIVIDUAL-FIELD END-PERFORM. PROCESS-INDIVIDUAL-FIELD. * Clean and format individual field MOVE FUNCTION TRIM(FIELD(I)) TO FIELD(I) * Display processed field DISPLAY "Field " I ": " FIELD(I). HANDLE-PARSE-OVERFLOW. DISPLAY "Warning: Parse overflow occurred" DISPLAY "Parsed " FIELD-COUNT " fields". CONTINUE-PROCESSING. DISPLAY "Successfully parsed " FIELD-COUNT " fields".
Text parsing applications use TEXT for structured data extraction.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768* Report formatting using TEXT IDENTIFICATION DIVISION. PROGRAM-ID. REPORT-FORMATTER. DATA DIVISION. WORKING-STORAGE SECTION. 01 REPORT-DATA. 05 REPORT-TITLE PIC X(50). 05 REPORT-DATE PIC X(10). 05 REPORT-HEADER PIC X(100). 05 REPORT-LINE PIC X(100). 01 FORMATTING-CONTROL. 05 LINE-WIDTH PIC 9(3) VALUE 80. 05 MARGIN-SIZE PIC 9(2) VALUE 5. PROCEDURE DIVISION. MAIN-LOGIC. PERFORM FORMAT-REPORT-HEADER PERFORM FORMAT-REPORT-CONTENT PERFORM FORMAT-REPORT-FOOTER STOP RUN. FORMAT-REPORT-HEADER. * Format report title MOVE "Monthly Sales Report" TO REPORT-TITLE MOVE FUNCTION CURRENT-DATE TO REPORT-DATE * Create formatted header STRING REPORT-TITLE DELIMITED BY SPACE " - " DELIMITED BY SIZE REPORT-DATE DELIMITED BY SPACE INTO REPORT-HEADER * Center the header PERFORM CENTER-TEXT DISPLAY REPORT-HEADER. FORMAT-REPORT-CONTENT. * Format report content lines MOVE "Sales data for the current month" TO REPORT-LINE PERFORM FORMAT-LINE DISPLAY REPORT-LINE MOVE "Total sales: $1,234,567" TO REPORT-LINE PERFORM FORMAT-LINE DISPLAY REPORT-LINE. FORMAT-REPORT-FOOTER. * Format report footer MOVE "End of Report" TO REPORT-LINE PERFORM CENTER-TEXT DISPLAY REPORT-LINE. FORMAT-LINE. * Add margin to line STRING SPACES DELIMITED BY SIZE REPORT-LINE DELIMITED BY SPACE INTO FORMATTED-LINE. CENTER-TEXT. * Center text within line width COMPUTE CENTER-POSITION = (LINE-WIDTH - FUNCTION LENGTH(REPORT-LINE)) / 2 MOVE SPACES TO CENTERED-TEXT STRING SPACES DELIMITED BY SIZE REPORT-LINE DELIMITED BY SPACE INTO CENTERED-TEXT WITH POINTER CENTER-POSITION.
Report formatting uses TEXT for structured output presentation.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758* Text processing application using TEXT IDENTIFICATION DIVISION. PROGRAM-ID. TEXT-PROCESSOR. DATA DIVISION. WORKING-STORAGE SECTION. 01 PROCESSING-DATA. 05 INPUT-TEXT PIC X(500). 05 PROCESSED-TEXT PIC X(500). 05 WORD-COUNT PIC 9(3). 05 CHAR-COUNT PIC 9(3). 01 PROCESSING-CONTROL. 05 SEARCH-WORD PIC X(20). 05 REPLACE-WORD PIC X(20). 05 PROCESS-STATUS PIC X(10). PROCEDURE DIVISION. MAIN-LOGIC. PERFORM INITIALIZE-PROCESSOR PERFORM PROCESS-TEXT-CONTENT PERFORM ANALYZE-TEXT-STATISTICS PERFORM DISPLAY-PROCESSING-RESULTS STOP RUN. INITIALIZE-PROCESSOR. MOVE "This is a sample text for processing" TO INPUT-TEXT MOVE "sample" TO SEARCH-WORD MOVE "example" TO REPLACE-WORD. PROCESS-TEXT-CONTENT. * Copy input text to processed text MOVE INPUT-TEXT TO PROCESSED-TEXT * Replace words in text INSPECT PROCESSED-TEXT REPLACING ALL SEARCH-WORD BY REPLACE-WORD * Convert to uppercase MOVE FUNCTION UPPER-CASE(PROCESSED-TEXT) TO PROCESSED-TEXT * Trim whitespace MOVE FUNCTION TRIM(PROCESSED-TEXT) TO PROCESSED-TEXT. ANALYZE-TEXT-STATISTICS. * Count characters MOVE FUNCTION LENGTH(PROCESSED-TEXT) TO CHAR-COUNT * Count words (simplified) INSPECT PROCESSED-TEXT TALLYING WORD-COUNT FOR ALL " " ADD 1 TO WORD-COUNT. DISPLAY-PROCESSING-RESULTS. DISPLAY "=== TEXT PROCESSING RESULTS ===" DISPLAY "Original Text: " INPUT-TEXT DISPLAY "Processed Text: " PROCESSED-TEXT DISPLAY "Character Count: " CHAR-COUNT DISPLAY "Word Count: " WORD-COUNT DISPLAY "Processing Status: " PROCESS-STATUS.
Text processing applications use TEXT for content manipulation and analysis.
Following these best practices ensures effective use of TEXT in COBOL applications for better text processing and performance.
Technique | Purpose | Example |
---|---|---|
String Concatenation | Combine multiple strings | STRING A B INTO C |
String Parsing | Split strings by delimiters | UNSTRING TEXT DELIMITED BY "," |
Text Replacement | Replace text patterns | INSPECT TEXT REPLACING ALL "OLD" BY "NEW" |
Text Searching | Find text patterns | INSPECT TEXT TALLYING COUNT FOR ALL "PATTERN" |
Text Formatting | Format text for output | FUNCTION TRIM(TEXT) |
Case Conversion | Convert text case | FUNCTION UPPER-CASE(TEXT) |
Aspect | Description | Example |
---|---|---|
Location | PROCEDURE DIVISION | In text processing operations |
String Concatenation | Combine strings using STRING | STRING A B INTO C |
String Parsing | Split strings using UNSTRING | UNSTRING TEXT DELIMITED BY "," |
Text Replacement | Replace text using INSPECT | INSPECT TEXT REPLACING ALL "OLD" BY "NEW" |
Text Functions | Use built-in text functions | FUNCTION TRIM(TEXT) |
1. What is the primary purpose of TEXT in COBOL?
2. Where is TEXT typically used in a COBOL program?
3. What types of operations can TEXT handle?
4. How does TEXT differ from standard alphanumeric operations?
5. Which of the following is a common use of TEXT?