Example: Using Remote Command/Distributed Program Call APIs
This example illustrates using remote Command/Distributed Program Call APIs.
#ifdef UNICODE
#define _UNICODE
#endif
#include <windows.h>
// Include the necessary RC/DPC Classes
#include <stdlib.h>
#include <iostream>
using namespace std;
#include <TCHAR.H>
#include "cwbrc.h"
#include "cwbcosys.h"
/**********************************************************************/
void main()
{
cwbCO_SysHandle system;
cwbRC_SysHandle request;
cwbRC_PgmHandle program;
// Create the system object
if ( (cwbCO_CreateSystem("SystemName",&system)) != CWB_OK )
return;
// Start the system
if ( (cwbRC_StartSysEx(system,&request)) != CWB_OK )
return;
// Call the command to create a library
char* cmd1 = "CRTLIB LIB(RCTESTLIB) TEXT('RC TEST LIBRARY')";
if ( (cwbRC_RunCmd(request, cmd1, 0)) != CWB_OK )
return;
cout << "Created Library" << endl;
// Call the command to delete a library
char* cmd2 = "DLTLIB LIB(RCTESTLIB)";
if ( (cwbRC_RunCmd(request, cmd2, 0)) != CWB_OK )
return;
cout << "Deleted Library" << endl;
// Create a program object to create a user space
if ( cwbRC_CreatePgm(_TEXT("QUSCRTUS"),
_TEXT("QSYS"),
&program) != CWB_OK )
return;
// Add the parameters
// name is DPCTESTSPC/QGPL
unsigned char name[20] = {0xC4,0xD7,0xC3,0xE3,0xC5,0xE2,0xE3,0xE2,0xD7,0xC3,
0xD8,0xC7,0xD7,0xD3,0x40,0x40,0x40,0x40,0x40,0x40};
// extended attribute is not needed
unsigned char attr[10] = {0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40};
// initial size is 100 bytes
unsigned long size = 0x64000000;
// initial value is blank
unsigned char init = 0x40;
// public authority is CHANGE
unsigned char auth[10] = {0x5C,0xC3,0xC8,0xC1,0xD5,0xC7,0xC5,0x40,0x40,0x40};
// description is DPC TEMP SPACE
unsigned char desc[50] = {0xC4,0xD7,0xC3,0x40,0xE3,0xC5,0xD4,0xD7,0x40,0xE2,
0xD7,0xC1,0xC3,0xC5,0x40,0x40,0x40,0x40,0x40,0x40,
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40};
if ( cwbRC_AddParm(program, CWBRC_INPUT, 20, name) != CWB_OK)
return;
if ( cwbRC_AddParm(program, CWBRC_INPUT, 10, attr) != CWB_OK)
return;
if ( cwbRC_AddParm(program, CWBRC_INPUT, 4, (unsigned char*)&size) != CWB_OK)
return;
if ( cwbRC_AddParm(program, CWBRC_INPUT, 1, &init) != CWB_OK)
return;
if ( cwbRC_AddParm(program, CWBRC_INPUT, 10, auth) != CWB_OK)
return;
if ( cwbRC_AddParm(program, CWBRC_INPUT, 50, desc) != CWB_OK)
return;
// Call the program
if ( cwbRC_CallPgm(request, program, 0) != CWB_OK )
return;
cout << "Created User Space" << endl;
// Delete the program
if ( cwbRC_DeletePgm(program) != CWB_OK )
return;
// Create a program object to delete a user space
if ( cwbRC_CreatePgm(_TEXT("QUSDLTUS"),
_TEXT("QSYS"),
&program) != CWB_OK )
return;
// Add the parameters
// error code structure will not be used
unsigned long err = 0x00000000;
if ( cwbRC_AddParm(program, CWBRC_INPUT, 20, name) != CWB_OK)
return;
if ( cwbRC_AddParm(program, CWBRC_INOUT, 4, (unsigned char*)&err) != CWB_OK)
return;
// Call the program
if ( cwbRC_CallPgm(request, program, 0) != CWB_OK )
return;
// Delete the program
if ( cwbRC_DeletePgm(program) != CWB_OK )
return;
cout << "Deleted User Space" << endl;
// Stop the system
if ( cwbRC_StopSys(request) != CWB_OK )
return;
// Delete the system object
if ( cwbCO_DeleteSystem(system) != CWB_OK )
return;
}