是否有任何简单的方法直接返回字符和类型变量的长度在RPGLE?我在这里说的长度不是d规范中规定的长度。我说的是字符串中有意义字符的实际数目。假设一个字符类型变量被定义为50个字符长,并赋值为"Hello world!"',那么我想要的长度是12,也就是从'H'到'!'。忽略开头和结尾的空白。有什么简单的方法吗?
您可以使用%len(%trimr(field))
,它在检查长度之前修剪尾随空格。
-
%triml
修剪前导空格(左侧) -
%trimr
修饰尾随空格(右侧) -
%trim
修剪前后空格
看起来您要查找的字段长度是固定字符字段,如
dmsg s 40a
如果我们执行eval msg = 'Hello, World!,则msg不包含"Hello, World!"——它包含"Hello, World!"也就是说,它有一堆空白填充到40个字符。这就是固定长度字段的定义。
%trimr()可以很好地处理这些,它甚至有一个可选参数来定义应该修剪哪些字符。
另一方面,如果要使用可变长度字段
dmsg s 40a Varying
然后执行eval msg = 'Hello, World!那么该字段实际上只包含分配给它的字符。在本例中,不需要%trimr();%len()将返回当前字段的长度。