我正在查看一些遗留程序,其中发现了如下代码:
C/free
Dow 1=1;
SubRoutine();
EndDo;
*INLR = *On;
/end-free
所讨论的程序是一个类似服务器的程序,其中子例程处理通过网络传入的请求。对我来说,*INLR = *On 语句似乎没有任何效果,但话又说回来,我对 RPG 的了解非常有限,并且这种模式在我正在查看的几个程序中重复出现。
我的问题是:/end-free 之前的最后一行是否无法访问,因此是多余的?
最佳答案
您是对的,在示例中,如图所示,没有正常的方法可以退出此循环。看来该程序只会因错误或作业取消而结束。有时最好在主 DOW 中检查 %shutdown() ,以允许永无止境的作业优雅地关闭,但在本例中,要么没有选择,要么没有想到。
我可能推测该程序是通过复制另一个程序编写的,并且 *INLR 行可能已留在代码中作为标记结束的常规方式。因此,有人可能会认为这条线是无害的,并且可以让人们更容易理解这就是结局。
关于loops - *RPG 中的 INLR 和 while(true),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14134816/