在创建ILE RPG程序时,为什么要避免使用QILE的默认激活组名称

时间:2017-03-16 09:14:19

标签: ibm-midrange rpgle

根据Paul Tuohy的style guide和其他来源我确定我以前读过,在创建ILE RPG程序时应该避免使用默认的激活组QILE。然而,谷歌搜索这个主题我似乎无法找出原因。

根据this pdf presentation QILE经常被系统使用,这可能是为什么要避免它?

Here是指QILE是激活组的不良选择,但没有给出理由。

2 个答案:

答案 0 :(得分:5)

从链接样式指南中可以看出,Paul Tuohy反对QILE只是因为它是一个默认的名为激活组名,并且没有其他原因。他真的反对那些没有故意选择命名激活组名的人。

  

这是在未注意选择激活组时使用的激活组。如果不注意选择激活组,可能不会在应用程序的其他方面小心......

如果我使用命名激活组,我通常会使用QILE作为命名激活组。原因是没有特殊情况,没有充分理由不使用它。如果我有特殊情况,那么我将使用一个反映特殊情况的命名激活组。例如,我曾经创建了一个消息代理,它使用处理特定消息类型的退出程序进行操作。他们结束时我没有结束退出计划。这具有提高下一个呼叫性能的效果,因为程序不必重新初始化。这也有保持某些文件打开的效果。我有一个要求,有时我需要锁定退出程序打开的一些文件。为了获得锁定,需要在消息代理作业中关闭文件。但是消息代理作业既不知道哪些退出程序已经运行,也不知道那些退出程序已打开的文件。为了解决这个问题,我将这些退出程序放在他们自己的激活组中,我可以回收它来关闭所有文件。通过挂起消息代理并回收特殊激活组,我能够关闭退出程序保持打开的所有文件。我的其他进程现在能够锁定文件。当我完成后,我恢复了消息代理,并且退出程序在需要时重新获得锁定。

关键是您应该有意识地使用哪个激活组。我更喜欢在CLP中使用* NEW来开始一个进程,并且* CALLER用于所有被调用的程序和服务程序。 * NEW让我退出默认激活组并进入一个新的激活组,该组将以启动它的程序结束。 * NEW还允许递归调用RPG程序。但是我不喜欢在任何地方都使用* NEW,因为这会导致过多的激活组创建,并且激活有点耗时,特别是如果你经常这样做。了解您的应用程序,并设计激活组策略。如果你这样做,QILE可以成为它的一部分,你就不会有任何意外。

现在,如果您正在开发供第三方使用的应用程序,QILE可能不是一个好主意,因为当其他人在您不知情的情况下收回您的激活组时,可能会产生意外后果。或者您可能会收回其他人的激活组,或者您可能无法进行所需的回收。在这种情况下,最好避免使用QILE,因为大多数使用名称激活组的人只使用QILE,并且您不想影响您无法控制的应用程序。

答案 1 :(得分:3)

我认为是我发起了选择QILE不是最好的主意的想法。我支持这一点,特别是如果您 是Mark提到的第三方应用程序,或者即使您使用使用使用QILE的第三方应用程序。

如果我没有任何特别的理由选择一个激活组而不是另一个激活组,我将拥有自己的非特定激活组,而不是使用QILE。