在最后一个字符处连接字符串

Concatenate string at last character

我正在尝试找到一种在最后一个字符之后连接字符串的方法,而不是按大小或空格。

输入是这样的:XXXX ;0;1; YYYY AA 我想在最后一个字符后添加字符串 ;S。有没有办法在不重新定义整个领域的情况下做到这一点?重构整个代码需要几个小时。

我正在使用 MicroFocus(NetExpress) cobol 编译器。

刚刚写下了我想到的问题,我发布并 运行 试试看。没有按照我想要的方式解决问题,但是解决了。

我所做的是用填充符重新定义字符串。

fd  YOUR-FD.                                         
01  THE-STRING                    pic x(900).        
                                                               
01  filler redefines YOUR-FD.                     
    03 filler                     pic x(898).        
    03 CONCAT                     pic x(02).         
       88 HAS-CONCAT              value ";S".

您可以将函数的长度与 reference-modification 结合使用,以避免在 COBOL 中重新定义字符串或其他样板代码。

定义一个变量来存储你的字符串XXXX ;0;1; YYYY AA :

working-storage section.
01  given-string    pic x(40)
                    value "XXXX    ;0;1; YYYY AA            ".

在一行中使用 函数的长度和 ref-modification

procedure division.
main section.

    display "given-string (before): " ">" given-string "<"

    move ";S" to given-string(length of given-string - 1:2)

    display "given-string (after) : " ">" given-string "<"

输出之前:

given-string (before): >XXXX    ;0;1; YYYY AA                   <

在之后输出

given-string (after) : >XXXX    ;0;1; YYYY AA                 ;S<

顺便说一句... 为了更好地表示,我使用了 40 字节而不是 900。但是逻辑仍然相同。