获取JT400中给定用户的查询/400个查询列表

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

我正在尝试使用 Java 库“JT400”获取我的所有查询/400 个查询的列表。

这是我们的终端应用程序中直观表示的列表:

我是一名会计师,而不是 AS400 程序员,所以我不知道这些查询在哪里或如何存储,也不知道如何检索数据以创建上述终端界面。

我对“ObjectList”查询进行了一些工作,但不知道它们将位于哪个库中(如果有的话)。我在网上遇到了一些 IBM 工具 IBM Tool Doc,它应该提供一个用于搜索 query/400 对象的命令行界面,但我不知道我们是否安装了该工具,或者它是否可以满足我的需要。

这是迄今为止我的代码:

ObjectList queryList = new ObjectList(as400, ObjectList.CURRENT_LIBRARY, ObjectList.ALL, ObjectList.ALL);
        try {
            // Retrieve the list of queries:
            queryList.load();

            try {
                System.out.println(queryList.getLength());
            } catch (Exception e) {
                e.printStackTrace();
            }

            Enumeration queries = queryList.getObjects();

            for (Enumeration e = queries; e.hasMoreElements();{
                System.out.println(e.nextElement());
            }

        } catch (Exception e){
                System.out.println("There was an exception processing the list of queries:");
                e.printStackTrace();
        }

我终于让它运行而没有错误,但它返回的对象对我来说看起来并不熟悉,当然也不是我习惯在终端中看到的查询名称列表。

java ibm-midrange jt400 corretto
2个回答
0
投票

我找到了问题的答案。

您可以使用JT400中的ObjectList类生成用户查询/400个查询的列表。

关键是在定义对象类型时在构造函数中使用“*QRYDFN”。在我的代码中,我还在第一个字符串参数中指定了特定用户。请参阅下面的构造函数信息和我的代码:

JT400 文档“对象列表”:

工作代码:

public static void ListQueries() throws AS400SecurityException, ObjectDoesNotExistException, IOException, InterruptedException, ErrorCompletingRequestException, RequestNotSupportedException {

    AS400 as400 = new AS400();

    // Define your object list parameters
    // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
    ObjectList queryList = new ObjectList(as400, as400.getUserId(), ObjectList.ALL, "*QRYDFN");
    // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    
    // Execute your search
    queryList.load();
    
    // Create an enumeration containing the returned objects
    Enumeration queries = queryList.getObjects(); 
    
    // Iterate through the objects to print the query names
    for (Enumeration e = queries; e.hasMoreElements();)
    {System.out.println(e.nextElement());}
}

结果列表:


0
投票

我想你的问题就在这里

new ObjectList(as400, ObjectList.CURRENT_LIBRARY, ObjectList.ALL, ObjectList.ALL);

  1. JT400 连接与 5250 会话的“CURRENT_LIBRARY”可能不同。我会指定 5250 屏幕中显示的库。
  2. objectType
    参数的最终“ObjectList.ALL”。如果您只对 Query/400 查询感兴趣,请使用
    *QRYDFN
© www.soinside.com 2019 - 2024. All rights reserved.