【问题标题】:Is it possible to return a list of objects from the AS400 using Java?是否可以使用 Java 从 AS400 返回对象列表?
【发布时间】:2014-07-10 10:16:34
【问题描述】:

我正在尝试根据库名称从 AS400 中检索对象列表(无论是什么类型)。

我曾尝试通过命令调用使用 WRKOBJ LibName/*all,但收到的错误提示我无法在此设置中使用命令 WRKOBJ(未提供其他反馈)。

当前代码:

    StringBuffer getObjects = new StringBuffer("wrkobj " + library + "/*all");
    CommandCall call = new CommandCall(as400);

    if(call.run(getObjects.toString())){

            objectsFound = true;
            logger.debug("Lib: " + library + "  returned objects");

    }else{

            // Hold error message to display in joption pane
            errorMessages = new StringBuffer();
            // Show the messages (returned whether or not there was an error.)
            messagelist = call.getMessageList();

            for (int i = 0; i < messagelist.length; i++){

                // Show each message.
                logger.debug(messagelist[i].getText());
                errorMessages.append(messagelist[i].getText() + "\n");

            }
        }

我仍在寻找解决方案,所以如果我找到任何东西,我会发布它,但是任何有任何想法或可以指出我正确方向的人,我将不胜感激!

【问题讨论】:

  • 带有WRKOBJ的代码不起作用的原因是WRKOBJ的输出没有进入STDOUT,所以你不能从那里提取它。
  • 啊,非常感谢!我想通过使用 AS400Message[] messagelist = call.getMessageList();我也许能够以这种方式获取对象
  • 请注意,根据定义,所有 CommandCall 和 ProgramCall 都是批量运行的。您不能以这种方式运行交互式程序。

标签: java ibm-midrange jtopen


【解决方案1】:

是的,但您需要为此使用 jt400.jar(这是 jtopen 标签所涵盖的内容)"

如果您只需要名称,IFSFile 类支持在 QSYS 对象上列出文件名。

【讨论】:

  • 太好了,我试试看!
  • 用 IFSPath 试了一下,效果很好,需要使用 IFSFile dir = new IFSFile(as400, "QSYS.LIB");但这会返回过多的文件(显然),因此只需分配“QSYS.LIB/LibName.LIB”来获取特定文件。非常感谢您的帮助!
  • 如果您需要更多信息,还有另一个 API 可以深入询问,但我一直没有时间使用它。我可以推荐中端邮件列表作为 SO 的替代品。 archive.midrange.com/java400-l/index.htm
【解决方案2】:

也许 JT400 类 ObjectList 会是更好的方法?它的目的就是为了做到这一点。

【讨论】:

  • 啊,非常感谢@david,这提供了更多程度的控制,因为构造函数看起来好像可以按对象的类型排序。非常感谢!
【解决方案3】:

您还可以使用 JDBC 获取有关库中对象的更多详细信息。这是一个使用 JTOpen 附带的 JDBC 客户端的示例。

~> java -cp jt400.jar com.ibm.as400.access.jdbcClient.Main jdbc:as400:SYSTEMNAME USERID PASSWORD  
>call QSYS.QCMDEXC(' DSPOBJD OBJ(EBERHARD/*ALL) OBJTYPE(*ALL) DETAIL(*SERVICE) OUTPUT(*OUTFILE) OUTFILE(QTEMP/OBJECTS)                  ', 000000100.00000)
>select * from qtemp.objects fetch first 10 rows only
ODDCEN,ODDDAT,ODDTIM,ODLBNM,ODOBNM,ODOBTP,ODOBAT,ODOBFR,ODOBSZ,ODOBTX,ODOBLK,ODOBDM,ODCCEN,ODCDAT,ODCTIM,ODOBOW,ODSCEN,ODSDAT,ODSTIM,ODSCMD,ODSSZE,ODSSLT,ODSDEV,ODSV01,ODSV02,ODSV03,ODSV04,ODSV05,ODSV06,ODSV07,ODSV08,ODSV09,ODSV10,ODSVMR,ODRCEN,ODRDAT,ODRTIM,ODCPFL,ODSRCF,ODSRCL,ODSRCM,ODSRCC,ODSRCD,ODSRCT,ODCMNM,ODCMVR,ODOBLV,ODUMOD,ODPPNM,ODPPVR,ODPCNR,ODAPAR,ODSSQN,ODLCEN,ODLDAT,ODLTIM,ODSFIL,ODSFLB,ODASP,ODLBL,ODPTFN,ODOBSY,ODCRTU,ODCRTS,ODUUPD,ODUCEN,ODUDAT,ODUCNT,ODTCEN,ODTDAT,ODODMN,ODCPVR,ODCVRM,ODPVRM,ODCPRS,ODOASP,ODAAPI,ODAPIC,ODUATR,ODACEN,ODADAT,ODATIM,ODAUDT,ODSIZU,ODBPUN,ODPGP,ODSSQL,ODOSIG,ODJRST,ODJRNM,ODJRLB,ODJRIM,ODJREN,ODJRCN,ODJRDT,ODJRTI,ODSSZU,ODSBPU,ODASPL,ODLASN,ODOADN,ODLADN,ODSSIG,ODMSIG,ODASSZ,ODALGN,ODOADG,ODLADG,ODSJRA,ODSJRL,ODSJRD,ODSJRG,ODJRJF
1,072514,164203,EBERHARD  ,BIGLOBOUT ,*PGM    ,CLE       ,0,126976,SQL PROCEDURE BIGBLOBOUT                          ,0,0,1,010314,120641,EBERHARD  , ,      ,      ,          ,0,0,          ,      ,      ,      ,      ,      ,      ,      ,      ,      ,      , , ,      ,      ,999999,          ,          ,          , ,      ,      ,CRTPGM ,999999,        ,1,       ,      ,     ,      ,0,1,010314,120641,          ,          ,1,                 ,       ,Z1014P14,EBERHARD  ,Z1014P14,Y,1,011714,2, ,      ,*U,V7R2M0,V7R2M0,      ,N,0,1,0,          , ,      ,      ,*NONE     ,248,512,*NONE     ,0,0,0,          ,          , , , ,      ,      ,0,0,1,1,*SYSBAS   ,*SYSBAS   ,0,0,4096,1,*SYSBAS   ,*SYSBAS   ,          ,          ,          ,          , 
1,072514,164203,EBERHARD  ,BIGLOBOUTX,*PGM    ,CLE       ,0,126976,SQL PROCEDURE BIGBLOBOUTX                         ,0,0,1,011714,144329,EBERHARD  , ,      ,      ,          ,0,0,          ,      ,      ,      ,      ,      ,      ,      ,      ,      ,      , , ,      ,      ,999999,          ,          ,          , ,      ,      ,CRTPGM ,999999,        ,1,       ,      ,     ,      ,0,1,011714,144329,          ,          ,1,                 ,       ,Z1014P14,EBERHARD  ,Z1014P14,Y,1,021814,2, ,      ,*U,V7R2M0,V7R2M0,      ,N,0,1,0,          , ,      ,      ,*NONE     ,248,512,*NONE     ,0,0,0,          ,          , , , ,      ,      ,0,0,1,1,*SYSBAS   ,*SYSBAS   ,0,0,4096,1,*SYSBAS   ,*SYSBAS   ,          ,          ,          ,          , 
1,072514,164203,EBERHARD  ,BIGLO00001,*PGM    ,CLE       ,0,126976,SQL PROCEDURE BIGBLOBOUT22                        ,0,0,1,011714,143919,EBERHARD  , ,      ,      ,          ,0,0,          ,      ,      ,      ,      ,      ,      ,      ,      ,      ,      , , ,      ,      ,999999,          ,          ,          , ,      ,      ,CRTPGM ,999999,        ,1,       ,      ,     ,      ,0,1,011714,143919,          ,          ,1,                 ,       ,Z1014P14,EBERHARD  ,Z1014P14,Y,1,011714,1, ,      ,*U,V7R2M0,V7R2M0,      ,N,0,1,0,          , ,      ,      ,*NONE     ,248,512,*NONE     ,0,0,0,          ,          , , , ,      ,      ,0,0,1,1,*SYSBAS   ,*SYSBAS   ,0,0,4096,1,*SYSBAS   ,*SYSBAS   ,          ,          ,          ,          , 
1,072514,164203,EBERHARD  ,BIGLO00002,*PGM    ,CLE       ,0,126976,SQL PROCEDURE BIGBLOBOUT10                        ,0,0,1,011714,143948,EBERHARD  , ,      ,      ,          ,0,0,          ,      ,      ,      ,      ,      ,      ,      ,      ,      ,      , , ,      ,      ,999999,          ,          ,          , ,      ,      ,CRTPGM ,999999,        ,1,       ,      ,     ,      ,0,1,011714,143948,          ,          ,1,                 ,       ,Z1014P14,EBERHARD  ,Z1014P14,Y,1,011714,1, ,      ,*U,V7R2M0,V7R2M0,      ,N,0,1,0,          , ,      ,      ,*NONE     ,248,512,*NONE     ,0,0,0,          ,          , , , ,      ,      ,0,0,1,1,*SYSBAS   ,*SYSBAS   ,0,0,4096,1,*SYSBAS   ,*SYSBAS   ,          ,          ,          ,          , 
1,072514,164203,EBERHARD  ,BIGLO00003,*PGM    ,CLE       ,0,118784,SQL PROCEDURE BIGBLOBOUT12                        ,0,0,1,011714,144020,EBERHARD  , ,      ,      ,          ,0,0,          ,      ,      ,      ,      ,      ,      ,      ,      ,      ,      , , ,      ,      ,999999,          ,          ,          , ,      ,      ,CRTPGM ,999999,        ,1,       ,      ,     ,      ,0,1,011714,144020,          ,          ,1,                 ,       ,Z1014P14,EBERHARD  ,Z1014P14,Y,1,011714,1, ,      ,*U,V7R2M0,V7R2M0,      ,N,0,1,0,          , ,      ,      ,*NONE     ,232,512,*NONE     ,0,0,0,          ,          , , , ,      ,      ,0,0,1,1,*SYSBAS   ,*SYSBAS   ,0,0,4096,1,*SYSBAS   ,*SYSBAS   ,          ,          ,          ,          , 
1,072514,164203,EBERHARD  ,BIGLO00004,*PGM    ,CLE       ,0,118784,SQL PROCEDURE BIGBLOBOUT13                        ,0,0,1,011714,144049,EBERHARD  , ,      ,      ,          ,0,0,          ,      ,      ,      ,      ,      ,      ,      ,      ,      ,      , , ,      ,      ,999999,          ,          ,          , ,      ,      ,CRTPGM ,999999,        ,1,       ,      ,     ,      ,0,1,011714,144049,          ,          ,1,                 ,       ,Z1014P14,EBERHARD  ,Z1014P14,Y,1,011714,1, ,      ,*U,V7R2M0,V7R2M0,      ,N,0,1,0,          , ,      ,      ,*NONE     ,232,512,*NONE     ,0,0,0,          ,          , , , ,      ,      ,0,0,1,1,*SYSBAS   ,*SYSBAS   ,0,0,4096,1,*SYSBAS   ,*SYSBAS   ,          ,          ,          ,          , 
1,072514,164203,EBERHARD  ,BIGLO00005,*PGM    ,CLE       ,0,118784,SQL PROCEDURE BIGBLOBOUT16                        ,0,0,1,011714,144103,EBERHARD  , ,      ,      ,          ,0,0,          ,      ,      ,      ,      ,      ,      ,      ,      ,      ,      , , ,      ,      ,999999,          ,          ,          , ,      ,      ,CRTPGM ,999999,        ,1,       ,      ,     ,      ,0,1,011714,144103,          ,          ,1,                 ,       ,Z1014P14,EBERHARD  ,Z1014P14,Y,1,011714,1, ,      ,*U,V7R2M0,V7R2M0,      ,N,0,1,0,          , ,      ,      ,*NONE     ,232,512,*NONE     ,0,0,0,          ,          , , , ,      ,      ,0,0,1,1,*SYSBAS   ,*SYSBAS   ,0,0,4096,1,*SYSBAS   ,*SYSBAS   ,          ,          ,          ,          , 
1,072514,164203,EBERHARD  ,BIGLO00006,*PGM    ,CLE       ,0,118784,SQL PROCEDURE BIGBLOBOUT20                        ,0,0,1,011714,144134,EBERHARD  , ,      ,      ,          ,0,0,          ,      ,      ,      ,      ,      ,      ,      ,      ,      ,      , , ,      ,      ,999999,          ,          ,          , ,      ,      ,CRTPGM ,999999,        ,1,       ,      ,     ,      ,0,1,011714,144134,          ,          ,1,                 ,       ,Z1014P14,EBERHARD  ,Z1014P14,Y,1,011714,1, ,      ,*U,V7R2M0,V7R2M0,      ,N,0,1,0,          , ,      ,      ,*NONE     ,232,512,*NONE     ,0,0,0,          ,          , , , ,      ,      ,0,0,1,1,*SYSBAS   ,*SYSBAS   ,0,0,4096,1,*SYSBAS   ,*SYSBAS   ,          ,          ,          ,          , 

在本例中,QSYS.QCMDEXC 调用的最后一个参数是第一个参数的长度。 QSYS.QCMDEXC 只调用 DSPBOJD 命令,它将有关库中对象的信息转储到 QTEMP.OBJECT 文件中。从那里,我们只需使用 select 语句查询文件以获取信息。

【讨论】:

    猜你喜欢
    • 2018-11-19
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2020-04-10
    • 2014-11-27
    • 1970-01-01
    • 2012-07-11
    • 2018-12-18
    相关资源
    最近更新 更多