Loops *RPG中的INLR和while(true)

Loops *RPG中的INLR和while(true),loops,ibm-midrange,rpg,unreachable-code,Loops,Ibm Midrange,Rpg,Unreachable Code,我正在研究一些遗留程序,其中可以找到如下代码: C/free Dow 1=1; SubRoutine(); EndDo; *INLR = *On; /end-free 所讨论的程序是一个类似服务器的程序,其中子程序通过网络处理传入的请求。对我来说,*INLR=*On语句似乎没有任何效果,但我对RPG的了解非常有限,并且这种模式在我正在研究的几个程序中重复出现 因此,我的问题是:在/end free之前的最后一行是否不可访问,因此是多余的?您是正确的,在示

我正在研究一些遗留程序,其中可以找到如下代码:

C/free
    Dow 1=1;
        SubRoutine();
    EndDo;
    *INLR = *On;
/end-free
所讨论的程序是一个类似服务器的程序,其中子程序通过网络处理传入的请求。对我来说,*INLR=*On语句似乎没有任何效果,但我对RPG的了解非常有限,并且这种模式在我正在研究的几个程序中重复出现


因此,我的问题是:在/end free之前的最后一行是否不可访问,因此是多余的?

您是正确的,在示例中,如图所示,没有正常的方法退出此循环。似乎此程序只会因错误或作业取消而结束。有时,最好检查道琼斯指数的下跌百分比,让一个永无止境的工作顺利结束,但在这种情况下,这不是选择的,就是没有想到的


我可能会猜测,该程序是通过复制另一个程序编写的,*INLR行可能已作为标记结束的常规方式留在代码中。因此,有人可能会争辩说,这条线是无害的,可以让人更容易理解,这就是终点

您是正确的,在示例中,如图所示,没有正常的方法退出此循环。似乎此程序只会因错误或作业取消而结束。有时,最好检查道琼斯指数的下跌百分比,让一个永无止境的工作顺利结束,但在这种情况下,这不是选择的,就是没有想到的


我可能会猜测,该程序是通过复制另一个程序编写的,*INLR行可能已作为标记结束的常规方式留在代码中。因此,有人可能会争辩说,这条线是无害的,可以让人更容易理解,这就是终点

我倾向于同意,尽管我对rpg也知之甚少。看起来只有在1!=1.我倾向于同意,尽管我对rpg也知之甚少。看起来只有在1!=1.RPG程序通过返回“结束”,或当详细计算通过文件结束或设置结束时,LR打开。如果编译器没有检测到其中一个,编译器将以RNF7023错误终止-“编译器无法确定程序如何结束。”我同意Buck的说法。这一行可能是为了安抚compiler.RPG程序“end”,当详细计算通过文件结尾或SETON结束时,RETURN或LR处于打开状态。如果编译器没有检测到其中一个,编译器将以RNF7023错误终止-“编译器无法确定程序如何结束。”我同意Buck的说法。这句话可能是为了安抚编译器。