loops - *RPG 中的 INLR 和 while(true)

标签 loops ibm-midrange rpg unreachable-code

我正在查看一些遗留程序,其中发现了如下代码:

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/

相关文章:

sql - IBM DB2 for i SQL (iSeries) - 使用更新从字段末尾删除字符

php - 从PHP调用RPG程序

java - 从 RPGLE (as400) 调用 java 方法

java - 从 RPG 程序到 Java 程序的希伯来语数据顺序错误

loops - groovy 中的 reverse() 方法仅仅是迭代的抽象吗?

excel - 删除重复项的循环仅适用于第一次迭代

Java:如何在类中创建无限循环而不覆盖 main

javascript - 数组 - 查找序列中缺失的数字

java - 编写 java 程序连接 DB2 和获取数据时出现运行时错误 "Class Not found"

c# - RPG 与 C# 和 SQL 的比较