我正尝试使用UNSTRING DELIMITED BY SPACES将姓名字段分为名字,中间名和姓氏三个部分
UNSTRING WA-NAME DELIMITED BY SPACES
INTO WA-FIRST-NAME
WA-MID-NAME
WA-LAST-NAME
但是,如果我的姓名字段超过2个空格,则会遗漏其余单词
Example : NAME : M V S PAVAN
It is showing as WA-FIRST-NAME : M
WA-MID-NAME : V
WA-LAST-NAME : S
但是第四个单词PAVAN
丢失了,我如何才能将其包含在第三个单词中。即我想将所有剩余的单词都包含在WA-LAST-NAME
答案 0 :(得分:3)
要解决“我如何使第三个单词中包含该单词,即我想在WA-LAST-NAME中包括所有其余单词”(这可能不是您想要的单词)的问题,可以使用其他方法方法,但最好的方法可能会使用POINTER(源字段中的位置)。 可能为最后一项使用一个额外的计数器,导致:
UNSTRING WA-NAME DELIMITED BY ALL SPACES *> just in case two spaces were used
INTO WA-FIRST-NAME
WA-MID-NAME
WA-LAST-NAME COUNT STRPV *> *MOVE* the amount of target length
WITH POINTER STRPS ON OVERFLOW
ADD 2 TO STRPV *> adding one to be after the text, another for space
MOVE WA-NAME (STRPS:) TO WA-LAST-NAME (STRPV:)
donPablo已经指出,您不会获得100%自动正确的名称结果...
答案 1 :(得分:0)
使用POINTER跟踪您的位置,但是将UNSTRING分为三个UNSTRING。 在每个未字符串循环之前,使用存储的POINTER到第一个非空格(即,从当前指针进行的PERARY VARYING乘以1个UNTIL值不是空格或字符串结尾),然后从此处取消字符串。