如何解析RPG中的数据

时间:2016-02-24 14:46:51

标签: db2-400 rpgle

我有一个10号位的订单号。

我想知道领先的空白在哪里结束。只有空白。 所以如果数字是

' 012345'我想要012345 - 我可以在RPG中这样做吗?我试过一些免费的代码 但总的来说上班很麻烦。所以我更喜欢旧的方式 如果我们必须,可以免费或者免费。

所以我需要知道的是,10个位置字段中有多少个位置有数据?所以如果数据是012345,这意味着6个位置被填充,4个是空白。

3 个答案:

答案 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用零替换字符串中的所有空格