現在、既存のRPGプログラムを修正しています。目的は、インジケーターを設定して、このインジケーターが表示ファイルの表示属性NDをアクティブにしてフィールドを非表示にすることです。問題は、汎用インジケーターIN01〜IN99がすべて使い果たされており、既存のプログラムフローを乱さずにそれらを再利用できないことです。代わりに外部インジケーターU1〜U8を使用することはできますか?不可能な場合、他の選択肢はありますか?それとも私はただねじ込まれていますか?
2 に答える
標識の代わりにプログラムをシステム項目に使用することを検討してください。 http://wiki.midrange.com/index.php/Program_To_System_Fields
もう1つの可能性は、DDSキーワードINDARA http://publib.boulder.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=%2Frzakc%2Frzakcmstdfindar.htmを使用して、すべての表示ファイル標識を外部化することです。
各インジケーター01〜99の使用法を確認して、それらを解放してディスプレイファイルで使用できるかどうかを判断します。
それらのいずれかがプログラムフローの制御にのみ使用され、表示ファイル、印刷ファイル、I仕様、またはO仕様に直接関与しない場合は、その使用をインジケーター型変数に置き換えることができます。内部データ型がN(D仕様の位置40)の変数を文字インジケーター形式のフィールドとして宣言します。プログラムフロー制御にのみ使用されるインジケーターの代わりに、この変数を使用してください。
そのような指標がない場合は、おそらくBuckが推奨する方法の1つを使用する必要があります。
古いスタイルの代替方法では、インジケーター配列* IN全体を保持領域に保存し、一部のI / Oインジケーターを一時的に再利用してから、保持領域をインジケーター配列に戻すことができます。適切なタイミングで*INに移動するか、*INからロードする複数の99インジケーター構造がある場合があります。レコード形式ごとにそのような構造を1つ持つことができ、そのレコード形式のI /Oの直前に*INに移動し、I/Oの後にロードバックします。これにより、プログラム内のインジケーターの数はほぼ無限になりますが、表示形式ごとに99に制限されます。