Эти программы RPG имеют параметры ввода/вывода со сложными структурами данных (DS), и мне нужно создавать/анализировать эти DS/до Pocos. Здесь.
Предположим, что ds empl ниже и программа emplpgm Принимая этот DS в качестве первого параметра:
Код: Выделить всё
dcl-ds empl qualified;
name char(10) inz('Unknown');
salary packed(9 : 2) inz(0);
end-ds;
< /code>
Соответствующий poco в .net для этого ds будет: < /p>
public class Employee {
public string Name {get; set;}
public decimal Salary {get; set;}
}
< /code>
Теперь то, чего я хотел бы достичь,-это следующее: < /p>
var empl = new Employee() {
Name = "Foo",
Salary = 50000.0M
};
//Calling program in a "dapper way"
//Does this exist or can be achieved ?
someClass.SomeMethodToCallProgram("EMPLPGM", new[] {P1 = empl});
Console.WriteLine(empl.Name); // I/O Parameter, output data is relevant
Код: Выделить всё
//Open connection
var conn = new NTiConnection(connectionString);
conn.Open();
//Create parameter list:
List parms = new List() {
new NTiProgramParameter("Hello", 10).AsInput(), //CHAR(10) INPUT
new NTiProgramParameter("World", 10).AsInput(), //CHAR(10) INPUT
new NTiProgramParameter(new byte[] {0x00}).AsInput(), //CHAR(10) INPUT
new NTiProgramParameter(128).AsInput(), //INTEGER (BYTE(4)) INPUT
new NTiProgramParameter("", 128).AsOutput(), //CHAR(128) OUTPUT
new NTiProgramParameter("", 50) //CHAR(50) I/O
};
//Program call
conn.CallProgram("MYLIB", "MYPGM", parms);
//Data retrieval from return variable (parameter n°5)
string message1 = parms[4].GetString(0, 64);
string message2 = parms[4].GetString(64, 64);
//Closing the connection
conn.Close();
Подробнее здесь: https://stackoverflow.com/questions/796 ... pplication