最近、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行書いております。。。(汗)