|
Peter Dow wrote:
> I realize you probably won't use this solution, but COBOL has an UNSTRING
>opcode:
>
> unstring longfield delimited by "~" into fielda, fieldb, fieldc, fieldd
>on overflow perform wrong-nbr-of-flds.
>
Peter,
Have you ever tried using UNSTRING with a table as your target? Following is
an example and it also demonstrates how to use a variable delimiter as you
proceed through the string so that either spaces or quotes could be used
interchangeably.
01 WS-UNSTRING-TABLE.
05 WS-UNSTRING-ENTRIES OCCURS 30 TIMES INDEXED BY WUT-NDX.
10 WS-RECEIVE-FIELD PIC X(30).
10 WS-DELIMITER PIC X.
10 WS-CHAR-COUNT PIC 999 COMP-3.
01 WS-POINTER PIC 999 COMP-3.
PROCEDURE DIVISION.
INITIALIZE WS-UNSTRING-TABLE
MOVE 1 TO WS-POINTER
PERFORM VARYING WUT-NDX FROM 1 BY 1
UNTIL WUT-NDX = 30 OR WS-POINTER > 80
IF INPUT-RECORD(WS-POINTER:1) = QUOTE OR '"'
MOVE INPUT-RECORD(WS-POINTER:1)
TO SC-DELIMITER
ADD 1 TO WS-POINTER
ELSE
MOVE SPACE TO SC-DELIMITER
END-IF
UNSTRING INPUT-RECORD DELIMITED BY
ALL SC-DELIMITER
INTO WS-RECEIVE-FIELD (WUT-NDX)
DELIMITER IN WS-DELIMITER (WUT-NDX)
COUNT IN WS-CHAR-COUNT (WUT-NDX)
WITH POINTER WS-POINTER
END-UNSTRING
IF WS-CHAR-COUNT(WUT-NDX) = ZERO
SET WUT-NDX DOWN BY 1
END-IF
END-PERFORM
--
Terry Grider
tgrider@arkansas.net
+---
| This is the Midrange System Mailing List!
| To submit a new message, send your mail to MIDRANGE-L@midrange.com.
| To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com.
| To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.