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

mik*_*ike 1 rpgle ibm-midrange

根据Paul Tuohy的风格指南,以及其他我以前读过的资料,在创建ILE RPG程序时应该避免使用默认的激活组QILE.然而,谷歌搜索这个主题我似乎无法找出原因.

根据这个pdf演示文稿, QILE经常被系统使用,这可能是为什么应该避免它?

这里提到QILE是激活组的不良选择但没有给出理由.

jma*_*phy 5

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

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

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

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

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