2

私はいくつかのレガシープログラムを見ています。そこでは次のようなコードが見つかります:

C/free
    Dow 1=1;
        SubRoutine();
    EndDo;
    *INLR = *On;
/end-free

問題のプログラムはサーバーのようなプログラムであり、サブルーチンがネットワークを介した着信要求を処理します。私には、* INLR = * Onステートメントは効果がないように見えますが、RPGに関する知識は非常に限られており、このパターンは、私が見ているいくつかのプログラムで繰り返されます。

したがって、私の質問は次のとおりです。/ end-freeの前の最後の行は到達不能であり、したがって冗長ですか?

4

1 に答える 1

4

正解です。この例では、示されているように、このループを終了する通常の方法はありません。このプログラムはエラーまたはジョブのキャンセルによってのみ終了するようです。メインのDOWで%shutdown()をチェックして、終わりのないジョブを正常に閉じることができるようにする方がよい場合もありますが、この場合、それは選択されなかったか、考えられていませんでした。

プログラムは別のプログラムをコピーして作成されたものであり、終了をマークする従来の方法として*INLR行がコードに残っている可能性があると推測できます。したがって、誰かがその線は無害であり、それが終わりであることを理解しやすくすることができると主張するかもしれません。

于 2013-01-03T12:10:50.060 に答える