サブ・ルーチンではなくプロシージャを使用する
新しいコードを書くのであればサブ・ルーチンを使用するという選択肢はもはやありません。サブ・ルーチンを使用するとローカル変数やパラメータではなくグローバル変数を使用しなければならないという制限があり、プログラムの保守が困難になります。今の時代のコードではもっぱらサブ・プロシージャを使用します。
番号付きインジケータではなく名前付きインジケータを使用する
プログラムでインジケータを使用することは全く問題はありません。どのプログラミング言語にもフラグやブール演算フィールドといった概念があり、RPGのプログラマはこれらをインジケータと呼んでいます。ただし、インジケータを含めプログラム中のすべての変数には、その変数が何を意味するのかを容易に理解できるような意味の名前を付けておく必要があります。あなたが書いたコードを私が読んでいてErrorOccurredという名前の変数があったら、エラーが起きたら*ONにセットされ、それ以外のときは*OFFにセットされるというのがすぐにわかります。しかし*IN74という名前の変数を見てもそれが何を意味するのかさっぱりわかりません。もちろん調べることは可能ですが、それでは時間がかかってしまい生産的ではありません。プログラムは保守がしやすいように、理解しやすいようにしてください。組み込み関数(BIF:
Built In Function)を使用して可能な限りインジケータを置き換えてください。そして置き換えが可能でない場合は、番号つきインジケータではなく名前付きインジケータを使用してください。今のRPGでは番号付きインジケータを使用しなければならない理由はありません。