有没有人有过直接谈论从Java运行在V5R4 iSeries机器上的RPG程序的好经验?如果是这样,社区的建议是什么,我应该避免哪些陷阱?
从我试过的各种文献和尖峰解决方案看起来好像我们可以使用ProgramCallBeans(通过PCML或xPCML),与DataQueues(用于异步通信),甚至是JNI.
我正在寻找一些强大,高效,快速开发,易于维护和易于测试的东西(不是我们所有人!?!).
我建议使用IBM的Java Toolbox for Java.将JT400.jar放入类路径(如果Java在iSeries上运行,则为JT400Ntv.jar).我已经使用了ProgramCall类和CommandCall类.
com.ibm.as400.access.CommandCall类很容易使用.它有一个简单的构造函数,您可以将com.ibm.as400.access.AS400类传递给它.然后只需使用这样的run方法:
CommandCall command = new CommandCall(as400); command.run("CPYF FROMFILE(BLAH) TOFILE(BLAHBLAH) CRTFILE(*YES)");
当然,你不会使用那个特定的CL命令,但你明白了.使用CommandCall类时,处理来自命令的任何消息始终是个好主意.在我使用的一个程序中,我在屏幕上的文本框中向用户显示消息,如下所示:
AS400Message[] messageList = command.getMessageList(); for (int i=0;i < messageList.length;i++) { String sMessageText = messageList[i].getText(); sMessage+=sMessageText + "\n"; }
com.ibm.as400.access.ProgramCall类需要更多工作,但它允许您访问返回的参数.我经常使用这个,因为我通常会调用返回值的现有RPG工作程序.为此,请定义com.ibm.as400.access.ProgramParameter数组.将参数传递给Java中的程序时,请记住使用com.ibm.as400.access.AS400Text等类将它们转换为AS/400友好值.使用IBM的文档可以更好地研究ProgramCall命令的详细信息:http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic =/rzahh/page1.htm