如何解析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 之后。
我有一个订单号是第 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 之后。