在COBOL中连接未知长度的字符串

时间:2008-09-05 20:49:54

标签: string cobol

如何在COBOL中将两个未知长度的字符串连接在一起?例如:

WORKING-STORAGE.
    FIRST-NAME    PIC X(15) VALUE SPACES.
    LAST-NAME     PIC X(15) VALUE SPACES.
    FULL-NAME     PIC X(31) VALUE SPACES.

如果FIRST-NAME = 'JOHN 'LAST-NAME = 'DOE ',我该如何获得:

FULL-NAME = 'JOHN DOE                       '

而不是:

FULL-NAME = 'JOHN            DOE            '

3 个答案:

答案 0 :(得分:4)

我相信以下内容会给你你想要的东西。

STRING
FIRST-NAME DELIMITED BY " ",
" ",
LAST-NAME DELIMITED BY SIZE
INTO FULL-NAME.

答案 1 :(得分:3)

乍一看,解决方案是使用参考修改STRING一起两个字符串,包括空格。问题是你必须知道FIRST-NAME中有多少尾随空格,否则你会产生类似'JOHNbbbbbbbbbbbbDOE'的东西,其中b是一个空格。

没有内在的COBOL函数来确定字符串中的尾随空格的数量,但是有一个用于确定字符串中前导空格的数量。因此,据我所知,最快的方法是反转名字,查找前导空格的数量,并使用引用修改将名字和姓氏串在一起。

您必须将这些字段添加到工作存储中:

WORK-FIELD        PIC X(15) VALUE SPACES.
TRAILING-SPACES   PIC 9(3)  VALUE ZERO.
FIELD-LENGTH      PIC 9(3)  VALUE ZERO.
  1. 反转FIRST-NAME
    • 移动功能反转(第一名)到工作场所。
    • WORK-FIELD现在包含前导空格,而不是尾随空格。
  2. 在FIRST-NAME中查找尾随空格的数量
    • 检查工作领域,为领先空间提供跟踪空间。
    • TRAILING-SPACE现在包含FIRST-NAME中的尾随空格数。
  3. 查找FIRST-NAME字段的长度
    • 计算字段长度=功能长度(第一名)。
  4. 将两个字符串连接在一起。
    • STRING FIRST-NAME(1:FIELD-LENGTH - TRAILING-SPACES)“”最后一个名称被删除,名称为全名。

答案 2 :(得分:0)

您可以尝试进行循环以获取实际长度。