如何解析RPG中的数据

How to parse data in RPG

我有一个订单号是第 10 个字符。

我想知道前导空格结束的位置。只有空白。 所以如果数字是

' 012345' 我想要 012345 - 我可以在 RPG 中这样做吗?我试过一些免费代码 但通常很难上班。所以我更喜欢老方法 或者如果必须的话,免费也可以。

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

如果要对值进行无前导空格的处理,可以使用%trim%trimL。前者将trim 空格从前到后。后者距离前面(左)只有trim个空格。

newOrder = %trimL( originalOrder );

虽然你的例子有点奇怪。要么你打错了你想要的东西(两个 3?),要么如果你真的想插入一个 3,那么这将需要更多的工作。让我知道。

编辑: 也许这个逻辑能更好地回答您想要做的事情。

要计算非空白的数量,您可以这样做:

valueCount = %len( %trim( originalOrder ) );

如果您需要知道空格的数量,只需:

blankCount = %len( originalOrder ) - %len( %trim( originalOrder ) );

希望这能回答您的问题。

您可以使用 XLATE 将字符串中的所有空格替换为零

使用%scan定位空白

dcl-s source char(10) inz('12345');
dcl-s pos zoned(5);

pos = %scan(' ':source) - 1;
*inlr = *on;

eval pos = 5 之后。