1

我正在尝试通过 jtOpen/jt400 在 v7r3 中的 /QSYS.LIB/QTOCNETSTS.SRVPGM 中调用 API QtocRtvTCPA。
参数 [3] 在 API https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/apis/qtocrtvtcpa.htm 中定义为 ErrorCode
我每次尝试调用服务程序都导致底部的错误. 我已经尝试了下面注释掉的所有项目。我可以使用一些帮助来确定如何传递错误代码参数。

    private byte[] receiverVariable = new byte[1000];
parameters[0].setOutputDataLength(receiverVariable.length);
    parameters[1].setInputData(bin4.toBytes(receiverVariable.length));
    parameters[2].setInputData(new AS400Text(8).toBytes("TCPA0200"));
    //parameters[3] = new ErrorCodeParameter();
    //parameters[3] = new ProgramParameter(BinaryConverter.intToByteArray(0));
    //parameters[3] = new ProgramParameter(new AS400Text(8).toBytes("ERRC0100"), 0);
    //parameters[3] = new ProgramParameter(new AS400Text(8).toBytes("ERRC0200"), 0);
    //parameters[3] = new ProgramParameter(0);
    ServiceProgramCall sPGMCall = new ServiceProgramCall(as400);
    sPGMCall.setProgram("/QSYS.LIB/QTOCNETSTS.SRVPGM", parameters);
    sPGMCall.setProcedureName("QtocRtvTCPA");
      sPGMCall.setReturnValueFormat(ServiceProgramCall.NO_RETURN_VALUE);

错误代码参数无效。
CPF3CF1
AS400Message(ID:CPF3CF1 文本:错误代码参数无效。):com.ibm.as400.access.AS400Message@1536d79
原因。. . . . : 错误码参数格式不正确。恢复 。. . : 更正错误码参数,然后重试请求。如果您不知道错误代码参数的正确格式,请参阅 IBM i 信息中心的编程类别中的 API 主题集合,http://www.ibm.com/systems/i/infocenter/

4

1 回答 1

3

解决方案

            parameters[3].setInputData(bin4.toBytes(0));

        parameters[0].setParameterType(ProgramParameter.PASS_BY_REFERENCE);
        parameters[1].setParameterType(ProgramParameter.PASS_BY_REFERENCE);
        parameters[2].setParameterType(ProgramParameter.PASS_BY_REFERENCE);
        parameters[3].setParameterType(ProgramParameter.PASS_BY_REFERENCE);
于 2018-08-13T12:39:03.247 回答