从As400 RPG程序读取值到字符串

时间:2017-10-02 16:33:00

标签: c# rpg

我从C#调用as400 Rpg程序。我传递了6个带有值的参数和一个为零的第7个参数,并从程序中返回。我确实以字节的形式从程序中收到一个值。返回值应该是1或0,具体取决于程序的执行。 enter image description here

enter image description here

我已尝试使用此string result = System.Text.Encoding.UTF8.GetString(byteArray);

返回此 符号。我尝试过转换为Hex,返回F1。如何在C#中获取该字节的值?我再次知道唯一可能的值是1或0.

如果我使用stringConverter.FromBytes(参数[“p7”]更新。值我总是收到1.

  ProgramParameters parameters = new ProgramParameters();
                parameters.Append("P1", cwbrcParameterTypeEnum.cwbrcInout, 3);
                parameters["P1"].Value = stringConverter.ToBytes(uwDecision.Param1.PadRight(paramLength, ' '));
                parameters.Append("P2", cwbrcParameterTypeEnum.cwbrcInput, 10);
                parameters["P2"].Value = stringConverter.ToBytes(uwDecision.Param2.PadRight(parmlenth2, ' '));
                parameters.Append("P3", cwbrcParameterTypeEnum.cwbrcInput, 10);
                parameters["P3"].Value = stringConverter.ToBytes(uwDecision.Param3.ToUpper().PadRight(parmlenth2, ' '));
                parameters.Append("P4", cwbrcParameterTypeEnum.cwbrcInput, 1);
                parameters["P4"].Value = stringConverter.ToBytes(uwDecision.Param4.PadRight(paramlength3, ' '));
                parameters.Append("P5", cwbrcParameterTypeEnum.cwbrcInput, 3);
                parameters["P5"].Value = stringConverter.ToBytes(uwDecision.Param5.PadRight(paramLength, ' '));
                parameters.Append("P6", cwbrcParameterTypeEnum.cwbrcInput, 3);
                parameters["P6"].Value = stringConverter.ToBytes(uwDecision.Param6.PadRight(paramLength, ' '));
                parameters.Append("P7", cwbrcParameterTypeEnum.cwbrcInout, 1);
                program.Call(parameters);


                var read = stringConverter.FromBytes(parameters["P7"].Value);

                isValid = read == "1";
                system.Disconnect(cwbcoServiceEnum.cwbcoServiceAll);

1 个答案:

答案 0 :(得分:0)

该消息似乎正在使用扩展二进制编码的十进制交换代码。您将需要转换或翻译,但是,系统似乎正在尝试发送0和1,只是在它的表示中。

EBCDIC Hex              EBCDIC Text        ASCII Translation
------------------    --------------     -----------------
       F1                    1                 241 = 0xF1
       F0                    0                 240 = 0xF0