C ++ IBM i Access API运行远程命令并获取输出

时间:2015-08-03 08:20:54

标签: c++ command ibm-midrange

IBM i Access API for C ++允许您运行服务器命令,例如( DSPSYSSTS 显示系统状态):

cwbSV_ErrHandle msgHandle; //Error Handle
cwbSV_CreateErrHandle(&msgHandle); //Create Error Handle
int code = cwbRC_RunCmd(SystemData::hxSystem, "DSPSYSSTS", msgHandle); //Run command

//Command ran successfully
if(code == CBW_OK){
   int code = cwbSV_GetErrText(msgHandle, returnTxt, 1024, NULL);
   //code value is CWBSV_NO_ERROR_MESSAGES
}

我可以在命令运行后检索服务器抛出的错误消息。但是如何检索命令输出?如果我运行“DSP”(显示)命令,我显然想要输出显示。

2 个答案:

答案 0 :(得分:1)

根据定义,DSP类型命令将其输出发送到5250数据流,然后由5250仿真器解释,以便正确地绘制显示。它根本不像stdout,这意味着用于显示器的拦截输出将需要相当多的工作。

传统的答案是使用API​​,该API以打算由程序读取的形式返回信息。在系统状态的情况下,可能是Retrieve System Status (QWCRSSTS) API。让自己变得简单的一种方法是编写存储过程并调用它而不是直接从客户端调用API。

另一种选择是DSPSYSSTS OUTPUT(* PRINT),然后读取假脱机文件。解析比原始5250输出更容易,但它可以并且确实在不同版本之间发生变化,因此API是一个更加一致的界面。

如果你真的想要屏蔽来自DSPSYSSTS的输出,你需要了解5250协议,这很复杂,我不认为它可以在这样的论坛中解释。另一方面,Albert York编写了一个名为TNAPI的程序,可能符合您的需求。

答案 1 :(得分:1)

使用Scott Klement explaningRetrieve System Status (QWCRSSTS) API翻译成C ++代码。这样你根本就不需要RPG。