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 回答