タイガー!タイガー!じれったいぞー!(SE編)

AS400,WAS,GlassFish,Java,JavaEE,JSF等の開発における日々の気づきをまとめたブログ(備忘録)。

【AS400】RPGLE-MOVEA命令をfreeでどう書くか

最近、RPGLEはほぼFree形式で書くようにしています。

しかしながら、MOVEA命令のfree置き換えが無いっぽいので、困っておりました。

MOVEA命令は、標識の一括セット/クリアなどで便利だったのですが・・・。

サンプル1

標識30~59までを一括でOFFに設定する例です。

C                   MOVEL     *ALL'0'       W@FLGS           30 
C                   MOVEA     W@FLGS        *IN(30) 

そこで、仕方なくFOR文回し(サンプル2)でクリア処理を行っていましたが、BIF関数の%SUBARRを使えば、1行で書けることがわかったので、備忘録(サンプル3)として残します。

サンプル2

 /FREE 
  FOR INT=30 TO 59;            
      *IN(I) = *OFF;         
  ENDFOR;
 /END-FREE  

サンプル3

 /FREE
  %SUBARR(*IN:30:30) = *OFF;   //標識30番目から30個分(*IN30~59)
 /END-FREE  

残る課題は、サブファイル操作なので行う異なる値セットを一括でどうやるかです。
%SUBARRでは、'100'とか'011'をセットすることができません。
現状、標識セット命令を3行書いております。。。(汗)