如何在RPGLE中获取字符类型变量的长度?

时间:2011-11-10 15:13:52

标签: ibm-midrange rpgle variable-length

有没有简单的方法可以在RPGLE中直接返回字符长度和类型变量?我在这里讨论的长度不是D规格中规定的长度。我在谈论字符串中有意义的字符的实际数量。让我们说一个字符类型变量被定义为50个字符长,它被赋值为' Hello world!',那么我想要的长度是12,来自&#39 ; H'到了'。前导和尾随空白被忽略。有没有简单的方法呢?

2 个答案:

答案 0 :(得分:11)

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

  • %triml修剪前导空格(左侧)
  • %trimr修剪尾随空格(右侧)
  • %trim修剪前导和尾随空格

答案 1 :(得分:8)

看起来你试图找到长度的字段是一个固定的字符字段,比如

     dmsg              s             40a

如果我们做一个评估msg ='你好,世界!'然后msg不包含'Hello,World!' - 它包含'你好,世界! '也就是说,它有一堆空白可以填充40个字符。这就是固定长度字段的定义。

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

另一方面,如果你要使用不同长度的字段

     dmsg              s             40a   Varying

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