在 COBOL 中解串
Unstring in COBOL
我正在尝试使用 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
中包含所有剩余的单词
为了解决问题 "how can i get that included in my third word. i.e, i want to include all the remaining words in 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% 的自动正确姓名结果...
使用 POINTER 来跟踪您所在的位置,但将 UNSTRING 拆分为三个 UNSTRING。
在使用存储的指针到第一个非 space 的每个 unstring 循环之前(即从当前指针执行 1 UNTIL 值不是 space 或字符串结尾的 PERFORM VARYING)并从那里 unstring。
我正在尝试使用 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
为了解决问题 "how can i get that included in my third word. i.e, i want to include all the remaining words in 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% 的自动正确姓名结果...
使用 POINTER 来跟踪您所在的位置,但将 UNSTRING 拆分为三个 UNSTRING。 在使用存储的指针到第一个非 space 的每个 unstring 循环之前(即从当前指针执行 1 UNTIL 值不是 space 或字符串结尾的 PERFORM VARYING)并从那里 unstring。