COBOL子串在两个有限点之间

Mat*_*det 2 string cobol substring gnucobol

我知道string_variable(start:length)可以用来获得给定起点和子串长度的字符串的子串,但是,我发现我经常需要在'start'和'end'点之间得到一个子串.

虽然我知道我总能做到这一点:

SUBTRACT start FROM end GIVING len
string(start:len)
Run Code Online (Sandbox Code Playgroud)

每次我编写经常使用此功能的程序时,必须这样做是很麻烦的.是否有更快/内置的方法来实现这一目标?

Ric*_*ith 7

怎么样?

    move str (start-pos : end-pos - start-pos + 1) to ...
Run Code Online (Sandbox Code Playgroud)

您可以从最后一个减去第一个,但您需要添加1才能获得正确的长度.

STRING是一个语句的名字,因为是STARTEND被保留.LENGTH是一个函数名称.我避免那些看起来像代码的东西.

  • 只是为@ matt-haidet添加:如果你想要完整的其余部分,你也可以简单地删除`len`.如果你使用当前的编译器(我假设你添加了gnucobol标签;-)那么你也可以创建一个用户定义的函数,它接受这三个参数(可能是len作为可选)并返回结果. . (2认同)