Attrraverso la dll contanuta nel Client Acces ; la cwbx è possibile far interegire c# con programmi scritti in rpg,
Il procedimento è semplice :
cwbx.AS400System AS400 = new cwbx.AS400SystemClass(); // creo l'oggetto as/400
cwbx.Program program = new cwbx.Program(); // Create l'oggetto programma
A questo punto, configurando i parametri per accedere all'AS400 alla libreria e passando opportunamente all' RPG i parametri possiamo dialogare e lanciare attraverso una call il programma rpg, e cosa interessante possiamo ottenere di ritorno una risposta, di seguito uno spezzone di codice:
ProgramParameters parms = new ProgramParameters();
parms.Clear();
// Definisco i parametri di input/Output parametri
parms.Append("INPUT", cwbrcParameterTypeEnum.cwbrcInput, 70); // // Input
//Parametro in risposta allla call
parms.Append("RISPOSTA", cwbrcParameterTypeEnum.cwbrcOutput, 70); // Ricezione
cwbx.StringConverter strcon = new cwbx.StringConverterClass();
parms["INPUT"].Value = strcon.ToBytes(Azienda.ToString().Trim());
parms["RISPOSTA"].Value = strcon.ToBytes(KiaveCliente.ToString().Trim()
Posso chiamare il programma e ricevere la risposta:
program.Call(program);
/*Parametro di ritorno*/
String reply = strcon.FromBytes(parms["RISPOSTA"].Value);
txtStatus.Text = txtStatus.Text + Environment.NewLine + " Esito dell'operazione " + reply
Il programma RPG , non dovrà far altro che ricevere in input il parametro e fornirci come ritorno un'altro parametro:
PGM PARM(&iINPUT &RISPOSTA)
DCL VAR(&INPUT) TYPE(*CHAR) LEN(080) /* in */
DCL VAR(&RISPOSTA) TYPE(*CHAR) LEN(070) /* out */ );
CHGVAR VAR(&RISPOSTA) VALUE("OK")
ENDPGM
In questo modo possiamo lanciare da c# una procedura rpg su AS400 e aspettare da essa un esito che potrà essere positivo/negativo.