4

有没有简单的方法可以直接返回 RPGLE 中字符和类型变量的长度?我这里说的长度不是D-spec中规定的长度。我说的是字符串中有意义的字符的实际数量。假设一个字符类型变量定义为 50 个字符长,并赋值为“Hello world!”,那么我想要的长度是 12,即从“H”到“!”。忽略前导和尾随空格。有什么简单的方法可以做到这一点吗?

4

2 回答 2

12

您可以使用%len(%trimr(field)), 在检查长度之前修剪尾随空格。

  • %triml修剪前导空格(在左侧)
  • %trimr修剪尾随空格(在右侧)
  • %trim修剪前导和尾随空格
于 2011-11-10T15:21:12.510 回答
9

看起来您要查找长度的字段是固定字符字段,例如

     dmsg              s             40a

如果我们执行 eval msg = 'Hello, World!' 那么味精不包含“你好,世界!” - 它包含“你好,世界!' 也就是说,它有一堆空格来填充到 40 个字符。这就是固定长度字段的定义。

%trimr() 可以很好地处理这些,它甚至还有一个可选参数来定义应该修剪哪些字符。

另一方面,如果您要使用可变长度字段

     dmsg              s             40a   Varying

然后做了一个 eval msg = 'Hello, World!' 那么该字段实际上只包含分配给它的字符。在这种情况下,不需要 %trimr();%len() 将返回字段的当前长度。

于 2011-11-10T15:38:16.433 回答