COBOL中的非拉伸

COBOL中的非拉伸,cobol,Cobol,我试图通过使用由空格分隔的非结构化字段,将名称字段分为三部分,分别为名字、中间名和姓氏,如下所示 UNSTRING WA-NAME DELIMITED BY SPACES INTO WA-FIRST-NAME WA-MID-NAME WA-LAST-NAME 但如果“我的名字”字段有2个以上的空格,则会遗漏剩余的单词 示例:名称:M V S PAVAN 它显示为WA-FIRST-NAME:M WA-MID-NAME:V WA-姓氏:S 但是第四个单词PAVAN不见了,我怎

我试图通过使用由空格分隔的非结构化字段,将名称字段分为三部分,分别为名字、中间名和姓氏,如下所示

UNSTRING WA-NAME DELIMITED BY SPACES 
INTO WA-FIRST-NAME
     WA-MID-NAME
     WA-LAST-NAME
但如果“我的名字”字段有2个以上的空格,则会遗漏剩余的单词

示例:名称:M V S PAVAN
它显示为WA-FIRST-NAME:M
WA-MID-NAME:V
WA-姓氏:S


但是第四个单词
PAVAN
不见了,我怎样才能把它包含在我的第三个单词中呢。i、 e,我想在
WA-LAST-NAME

中包含所有剩余的单词,以解决“如何将其包含在我的第三个单词中”的问题。也就是说,我想在WA-LAST-NAME中包含所有剩余的单词(这可能不是您想要的)。您可以使用不同的方法,但最好的方法可能会使用指针(在源字段中的位置)。它可能会对最后一项使用额外的计数器,从而导致:

 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%自动正确的姓名结果…

要解决“如何将其包含在我的第三个单词中”的问题,即,我想将所有剩余的单词包含在WA-LAST-name中(这可能不是您想要的),您可以使用不同的方法,但最好的方法可能会使用指针(在源字段中的位置)。它可能会对最后一项使用额外的计数器,从而导致:

 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,直到值不是空格或字符串结尾)进行每次解列循环之前,使用指针跟踪当前位置,但将解列拆分为三个解列。
在使用存储的指向第一个非空格的指针解除循环之前(即,执行与当前指针相差1的操作,直到值不是空格或字符串结尾)我发现不可能100%自动化。大多数名字都是文化性的。也就是说,根据文化的不同,姓氏中有不同数量的单词。即使是3个单词的名字也可能只是名字,后面有一对没有连字符的姓氏。通过人工审查,计算机建议先/中/后拆分这取决于他们的专业知识和猜测水平。回到个人那里,让他们输入正确的姓名。我发现不可能100%自动化。大多数姓名都是文化性的。也就是说,姓氏中的字数根据文化而有所不同。即使是3个单词的名字也可能只是名字后面跟着一对姓氏没有连字符的姓名。让计算机进行人工审核,建议第一次/中间次/最后一次拆分取决于他们的专业知识和猜测水平。回到个人,请他们输入正确的姓名。谢谢,这正是我想要的谢谢,这正是我想要的