如何从 ILE 程序中读取库列表? (最好是RPG或CL)

问题描述 投票:0回答:5

我们通过使用不同的库列表运行程序来控制 as400 上的程序运行的对象。但有些操作不能由此直接控制。因此,我的程序需要读取liblist并决定其中的一些库,如何操作。

我找不到任何 api 来从程序中读取 liblist 条目。我期望的是某种 api,它可以让我按优先级迭代 liblist 条目,或者按照 liblist 给出的顺序为我提供一个包含它们的数组。如果可能的话,我更喜欢 RPG 或 CL,但也可以使用其他 ILE 语言。

(如果您想知道为什么我要这样做,我问了另一个问题,它解释了我面临的封闭问题:如何在由 jobs liblist 控制的两个不同库之一中创建 DTAQ ? 但 liblist 解析是解决该问题的一种方法,并且是一个单独的问题)。

ibm-midrange environment rpgle
5个回答
5
投票

您可以使用 QUSRJOBI API 检索作业的库列表。您还可以使用 CL 命令 ADDLIBLE 并监视错误消息 CPF2103(库已存在于库列表中)。


4
投票

列表对象 (QUSLOBJ) API 可用于检索库列表。

对象和库名称
当使用库名称*LIBL 和对象类型参数*LIB 指定*ALLUSR 时,将返回线程库名称空间中所有用户库的列表。当指定 *LIBL 时,如果指定了辅助存储池 (ASP) 控制参数,则辅助存储池 (ASP) 设备名称必须是星号 (*)。用户库的定义请参考该参数后10个字符的说明中的*ALLUSR。

更改库列表 (QLICHGLL) API 可用于更改库列表。

RTVJOBA命令可以检索SYSLIBLCURLIBUSRLIBL


本书APIs at work,第 3 章,List APIs 有很多可能对您有帮助的信息。


2
投票

根据您的情况,更简单的替代方法可能是值得的。如果您事先知道目标库,也许您可以在每个库中创建一个数据区域,其中包含库名称。您的程序将读取它在库列表中首先找到的任何数据区域,并为您提供库的名称,以便您创建数据队列。

它并不复杂,但它有效且非常简单,因此也更容易编码/调试/维护。


0
投票

Kratenko,如果您想要比 API 更简单、更少的代码替代方案。创建可以在角色扮演游戏中调用的简单 CL pgm。你的 cl 可以有 RTVJOBA(有 parm 可以获取 libl)。您可能会从中获得许多库,并且您需要解析并识别您想要的特定库?关于识别,您必须知道限定词之一。您想要 pgm 运行的库还是“某些”文件所在的库?如果有的话,那么您可以使用 RTVOBJD 来获取特定的库。然后在 CRTDTAQ cmd 中使用该库。


0
投票

RTVJOBA 命令或 QUSRJOBI API 的现代替代方案是 LIBRARY_LIST_INFO 视图,其设计目的是可以从任何可以通过 SQL 获取结果的东西(包括 SQLRPGLE 程序)轻松访问。

© www.soinside.com 2019 - 2024. All rights reserved.