Parse CSV Record
Problem Description
Parse a comma-separated record into individual fields. Input: "JOHN,DOE,35,NEW YORK"
Expected Output
4 separate fields extracted
Hints
Use UNSTRING with DELIMITED BY comma.
Solution
IDENTIFICATION DIVISION.
PROGRAM-ID. PARSECSV.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-CSV-LINE PIC X(100).
01 WS-FIELDS.
05 WS-FIELD PIC X(25) OCCURS 10 TIMES.
01 WS-FIELD-CNT PIC 99 VALUE 0.
01 WS-I PIC 99.
PROCEDURE DIVISION.
DISPLAY "ENTER CSV LINE: ".
ACCEPT WS-CSV-LINE.
UNSTRING WS-CSV-LINE DELIMITED BY ","
INTO WS-FIELD(1) WS-FIELD(2) WS-FIELD(3)
WS-FIELD(4) WS-FIELD(5)
TALLYING IN WS-FIELD-CNT.
DISPLAY "PARSED " WS-FIELD-CNT " FIELDS:".
PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > WS-FIELD-CNT
DISPLAY "FIELD " WS-I ": " WS-FIELD(WS-I)
END-PERFORM.
STOP RUN.
Explanation:
UNSTRING splits on delimiter. TALLYING counts fields.