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