此问题与JT400课程ProgramCallDocument
特别相关,其方法为callProgram(String ProgramName)
我已尝试在try / catch中调用该调用 - 但它没有抛出异常,调试器进入callProgram
方法,只是无限期地坐在那里。
此处提供了有关API的少量特定信息:
这是我正在运行的代码:
AS400 as400System = AS400Factory.getAS400System()
ProgramCallDocument programCallDocument = new ProgramCallDocument(as400System, "com.sample.xpcml.Sample.xpcml")
programCallDocument.setStringValue("sampleProgramName.value", sampleValue)
Boolean didProgramCallDocumentRunSuccessfullyOnTheAS400 = programCallDocument.callProgram("sampleProgramName")
该片段的最后一行是那个就在那里的那一行。为简洁起见,我省略了try / catch。
ProgramCallDocument
构造函数使用的XPCML文件只是IBM用于指定程序调用的参数长度和类型的专有XML格式。如果它有用,我可以回来添加它,但是ProgramCallDocument
构造函数在XML上运行验证,并且它没有提出任何验证错误。我不熟悉JT400,也不熟悉程序调用,所以任何帮助都会很精彩。
另外需要注意的是,今天我还要在相关问题上进行更多挖掘,我也发现了这样的帖子:
Monitor and handle MSGW messages on a job on an IBM i-series (AS/400) from Java
我认为这与此问题相关,因为它是关于在Java / Groovy端捕获MSGW状态的方法。
答案 0 :(得分:3)
被叫程序很可能进入MSGW状态(错误)。
检查WRKACTJOB JOB(QZRCSRVS)
以查找程序调用作业并查看状态以及查看作业日志。
以下是Groovy中CommandCall用法的示例:
sys = AS400Factory.AS400System
cmd = new CommandCall(sys)
if (!cmd.run "CALL MYLIB.MYPGM PARM('${sampleValue}')") {
println cmd.messageList
}