如何创建一个DTAQ在两个不同的库之一,由工作liblist控制?(How can I create

2019-10-17 00:38发布

在我们的AS / 400上我们有一个测试环境和生产环境。 一旦我们测试了我们的程序工作,我们可以把他们在生产环境中。 这两种环境中包含一个类似的集合库。

基本的机制来告诉我们的节目,在他们的工作环境,是用于他们运行的作业liblists。这伟大工程,对于一些事情,但对于其他人没有。 因此,我们经常通过对作业提交程序的参数,它告诉程序在任何测试或生产环境中工作。 这惹恼了我的地狱,因为我的程序总是要随身携带整个整个执行时间这个参数,甚至常常把它传递给其他程序。 有时,初始程序甚至不需要信息本身,但仍然有把它作为一个参数,因为它调用了一个程序,它需要它。

提出的具体问题,我面对:一个更大过程的各个部分通过dataqueues我们整个系统正往往是做之间的通信。 根据liblist作品就像一个魅力读取特定DTAQ,只需调用RCVDTAQ在DTAQ的名称,liblist需要选择正确的LIB的照顾。 写作也是如此进入DTAQs。

但有时计划有可能创造收听或写入之前一个新的DTAQ。 现在,这并不符合我们的布局和liblists工作。 想想看这样的:

PROD-liblist:

PPGMLIB1
PPGMLIB2
PDFILELIB1
PDTAQLIB1
P...
...

TEST-liblist

TPGMLIB1
TPGMLIB2
TDFILELIB1
TDTAQLIB1
T...
...

现在我的计划应该建立在DTAQ ?DTAQLIB1 ,在那里? 应为PT

我的第一个想法是要经过liblist并查找条目PDTAQLIBTDTAQLIB ,并采取以先到者为准-但比我无法弄清楚如何到(因此我的连接问题: 我怎样才能读取liblist从ILE-计划?(优选RPG或CL)内 )。

我知道我可能实现通过检查我的目标,即用户拥有当前的工作,但会通过liblists打破我们选择库的逻辑(如我们目前的解决方法一样)。

有什么我失踪? 一些特殊的方式来调用CRTDTAQ也许,或一些特殊的API来做到这一点liblist比较,我试图写?

Answer 1:

沃伦的配置文件的想法是好的,但听起来像它会比你需要更多。 如何只使用一个数据区?

例如,确保始终有所谓模式,你的?DFILELIB1库中的数据区。 这本来只是一个字符,“P”或“T”,为模式。

或者更简单(虽然也许不太清楚):你可以测试一个TESTMODE数据区的存在与否,并进行相应处理。



Answer 2:

要阅读CL库列表,使用RTVJOBA。 要在ILE RPG读它,我会建议QUSRJOBI API,格式JOBI0700。 http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=%2Fapis%2Fqusrjobi.htm
我想你的扫描库列表的想法可能是您的环境最好的一个。



Answer 3:

我一般都尽量避免任何地方在我的程序硬编码库名。 如果扫描特定的名称或名称的模式,这可能会工作得很好,现在,但会发生什么下创建新环境时的路线,也许是一个新的命名方案。 因此,我将存储环境的设置配置数据。

我对这个两种方法。

您可以设置一般的配置值表,这可以通过各种程序可以用来查找各种配置值。 在我们的商店,我们称之为我们的通用值文件。 它具有主关键字段中,第一通常用于节目名,并且被配置在第二的值的名称。 我们也经常把一个表名作为第一个键,列名作为第二个,每个记录定义的列和有效值的相关说明。

当我与数据队列实现SOA的服务,我有一个表明确定义有关的服务信息。 这包括如图书馆和数据队列名执行的服务信息,以及客户端界面使用的其他信息,由作业,或者作业管理服务我的工作。

在任一情况下,配置文件是在特定于环境的数据库,与值适合于特定的环境。 我曾评论说,包含所有的配置记录的插入,使源扫描可以很容易地找到库或对象名称引用SQL脚本成员。 我建议从将进行测试,并转移到了生产其他应用程序配置数据分离式环境的具体配置。



文章来源: How can I create a DTAQ in one of two different libs, controlled by the jobs liblist?