💻 COBOL
COBOL UNSTRING Statement
Intermediate 🕑 10 min read
👁 0 views
COBOL UNSTRING Statement
The UNSTRING statement splits a string into multiple fields based on delimiters.
Syntax
UNSTRING identifier-1
DELIMITED BY [ALL] identifier/literal [OR identifier/literal]
INTO identifier-2 [DELIMITER IN identifier-3] [COUNT IN identifier-4]
identifier-5 ...
[WITH POINTER identifier]
[TALLYING IN identifier]
[ON OVERFLOW imperative-statement]
[END-UNSTRING]
Example Program
IDENTIFICATION DIVISION.
PROGRAM-ID. UNSTRING-DEMO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-INPUT-LINE PIC X(50)
VALUE 'John,Smith,New York,NY,10001'.
01 WS-FIRST-NAME PIC X(15).
01 WS-LAST-NAME PIC X(15).
01 WS-CITY PIC X(15).
01 WS-STATE PIC X(2).
01 WS-ZIP PIC X(5).
01 WS-DELIM PIC X(1).
01 WS-COUNT PIC 99.
01 WS-TALLY PIC 99 VALUE 0.
PROCEDURE DIVISION.
* Simple UNSTRING
UNSTRING WS-INPUT-LINE
DELIMITED BY ','
INTO WS-FIRST-NAME
WS-LAST-NAME
WS-CITY
WS-STATE
WS-ZIP
TALLYING IN WS-TALLY
END-UNSTRING
DISPLAY 'First Name: [' WS-FIRST-NAME ']'
DISPLAY 'Last Name: [' WS-LAST-NAME ']'
DISPLAY 'City: [' WS-CITY ']'
DISPLAY 'State: [' WS-STATE ']'
DISPLAY 'ZIP: [' WS-ZIP ']'
DISPLAY 'Fields found: ' WS-TALLY
* Multiple delimiters
MOVE 'Data1;Data2,Data3' TO WS-INPUT-LINE
INITIALIZE WS-FIRST-NAME WS-LAST-NAME WS-CITY
MOVE 0 TO WS-TALLY
UNSTRING WS-INPUT-LINE
DELIMITED BY ';' OR ','
INTO WS-FIRST-NAME
WS-LAST-NAME
WS-CITY
TALLYING IN WS-TALLY
END-UNSTRING
DISPLAY 'Multi-delim test:'
DISPLAY 'Field 1: ' WS-FIRST-NAME
DISPLAY 'Field 2: ' WS-LAST-NAME
DISPLAY 'Field 3: ' WS-CITY
STOP RUN.
Expected Output
First Name: [John ]
Last Name: [Smith ]
City: [New York ]
State: [NY]
ZIP: [10001]
Fields found: 05
Multi-delim test:
Field 1: Data1
Field 2: Data2
Field 3: Data3
Key Points
- DELIMITED BY specifies separator(s)
- OR allows multiple delimiters
- ALL treats consecutive delimiters as one
- TALLYING counts fields extracted
- DELIMITER IN captures the delimiter used