COBOL Manual for TNS/E Programs (H06.08+, J06.03+)

Example 140 UNSTRING Statement
WORKING-STORAGE SECTION.
01 NAMES-TABLE.
03 NAMES PIC X(50) OCCURS 10 TIMES
INDEXED BY NAME-INDEX,
FIRST-NAME-INDEX.
01 WORK-GROUP.
03 NAME-COUNT PIC 99 COMP.
03 WHOLE-NAME PIC X(50).
03 LAST-NAME PIC X(50).
03 REST-OF-NAME PIC X(50).
03 POINTER-1 PIC 99 COMP.
...
PROCEDURE DIVISION.
WHATS-NEXT.
* PROMPT FOR A NAME AS IT WOULD BE TYPED ON AN ENVELOPE
DISPLAY "Enter a name (or a space to terminate):".
ACCEPT WHOLE-NAME|
IF WHOLE-NAME = SPACES
STOP RUN
END-IF
* INITIALIZE
MOVE SPACES TO NAMES-TABLE, REST-OF-NAME
MOVE 0 TO NAME-COUNT
* GET EACH CONSECUTIVE BLOCK OF CHARACTERS ENDING IN ONE
* OR MORE SPACES INTO A NAME (I) AND COUNT THE BLOCKS.
UNSTRING WHOLE-NAME
DELIMITED BY ALL " " INTO
NAMES (1) NAMES (2) NAMES (3)
NAMES (4) NAMES (5) NAMES (6)
NAMES (7) NAMES (8) NAMES (9) NAMES (10)
TALLYING IN NAME-COUNT
* LAST ONE COPIED IS LAST-NAME
MOVE NAMES (NAME-COUNT) TO LAST-NAME
* IGNORE LEADING SPACES
IF NAMES (1) = SPACES
SET FIRST-NAME-INDEX TO 2
ELSE
SET FIRST-NAME-INDEX TO 1
END-IF
* CONCATENATE OTHER NAMES INTO REST-OF-NAME
MOVE 1 TO POINTER-1
PERFORM COLLECT-REST
VARYING NAME-INDEX FROM FIRST-NAME-INDEX BY 1
UNTIL NAME-INDEX = NAME-COUNT
DISPLAY "Last name is......" LAST-NAME
DISPLAY "Rest of name is..." REST-OF-NAME
DISPLAY " "
GO TO WHATS-NEXT.
COLLECT-REST.
STRING NAMES (NAME-INDEX) DELIMITED BY SPACE
INTO REST-OF-NAME
POINTER POINTER-1.
This is a sample run of Example 140 with a typical name and a single-word name:
Enter a name (or a space to terminate):
?Abraham Moyer
Last name is......Moyer
Rest of name is...Abraham
Enter a name (or a space to terminate):
UNSTRING 483