我有一个10号位的订单号。
我想知道领先的空白在哪里结束。只有空白。 所以如果数字是
' 012345'我想要012345 - 我可以在RPG中这样做吗?我试过一些免费的代码 但总的来说上班很麻烦。所以我更喜欢旧的方式 如果我们必须,可以免费或者免费。
所以我需要知道的是,10个位置字段中有多少个位置有数据?所以如果数据是012345,这意味着6个位置被填充,4个是空白。
答案 0 :(得分:1)
如果您想在没有前导空格的情况下处理该值,可以使用%trim
或%trimL
。前者将从前端和末端修剪空间。后者只会从前面(左)修剪空格。
newOrder = %trimL( originalOrder );
虽然你的例子有点奇怪。要么你错了你想要的东西(两个3?),或者如果你真的想插入一个3,那么这将需要更多的工作。让我知道。
编辑:也许这种逻辑可以更好地回答您的目标。
要计算非空白的数量,您可以这样做:
valueCount = %len( %trim( originalOrder ) );
如果你需要知道空白的数量,那就简单地说:
blankCount = %len( originalOrder ) - %len( %trim( originalOrder ) );
我希望能回答你的问题。
答案 1 :(得分:1)
使用%scan
找到空白。
dcl-s source char(10) inz('12345');
dcl-s pos zoned(5);
pos = %scan(' ':source) - 1;
*inlr = *on;
在eval pos = 5之后。
答案 2 :(得分:0)
您可以使用XLATE用零替换字符串中的所有空格