在最后一个字符处连接字符串
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。但是逻辑仍然相同。
我正在尝试找到一种在最后一个字符之后连接字符串的方法,而不是按大小或空格。
输入是这样的: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。但是逻辑仍然相同。