This sample program registers the data collection program from the previous example with Collection Services. After running, Collection Services displays the data collection program in the list of data collection categories.
#include "stdlib.h" #include "stdio.h" #include "string.h" #include "qypscoll.cleinc" int main( int argc, char *argv[] ) { int CCSID = 0; int RC = 0; Qyps_USER_CAT_PROGRAM_ATTR *pgmAttr; Qyps_USER_CAT_ATTR catAttr; char collectorName[11] = "*PFR "; char categoryName[11] = "TESTCAT "; char collectorDefn[11] = "*CUSTOM "; /* Register to *CUSTOM profile only */ if ( argc > 2 ) { int len = strlen( argv[2] ); if ( len > 10 ) len = 10; memset( categoryName, ' ', 10 ); memcpy( categoryName, argv[2], len ); } if ( argc < 2 || *argv[1] == 'R' ) { pgmAttr = (Qyps_USER_CAT_PROGRAM_ATTR *)malloc( 4096 ); memset( pgmAttr, 0x00, sizeof(pgmAttr) ); pgmAttr->fixedPortionSize = sizeof( Qyps_USER_CAT_PROGRAM_ATTR ); memcpy( pgmAttr->programType, "*SRVPGM ", 10 ); memcpy( pgmAttr->parameterFormat, "PMDC0100", 8 ); memcpy( pgmAttr->ownerUserId, "USERID ", 10 ); memcpy( pgmAttr->jobDescription, "QPMUSRCAT QGPL ", 20 ); memcpy( pgmAttr->qualPgmSrvpgmName, "DCPTEST LIBRARY ", 20 ); pgmAttr->workAreaSize = 123; pgmAttr->srvpgmEntrypointOffset = pgmAttr->fixedPortionSize; pgmAttr->srvpgmEntrypointLength = 8; pgmAttr->categoryParameterOffset = pgmAttr->srvpgmEntrypointOffset + pgmAttr->srvpgmEntrypointLength; pgmAttr->categoryParameterLength = 10; /* Set entry point name */ memcpy( (char *)(pgmAttr) + pgmAttr->srvpgmEntrypointOffset, "DCPentry", pgmAttr->srvpgmEntrypointLength ); /* Set parameter string */ memcpy( (char *)(pgmAttr) + pgmAttr->categoryParameterOffset, "1234567890", pgmAttr->categoryParameterLength ); memset( &catAttr, 0x00, sizeof(catAttr) ); catAttr.structureSize = sizeof( Qyps_USER_CAT_ATTR ); catAttr.minCollectionInterval = 0; catAttr.maxCollectionInterval = 0; catAttr.defaultCollectionInterval = 30; /* Collect at 30 second interval */ memset( catAttr.qualifiedMsgId, ' ', sizeof(catAttr.qualifiedMsgId) ); memcpy( catAttr.categoryDesc, "12345678901234567890123456789012345678901234567890", sizeof(catAttr.categoryDesc) ); QypsRegCollectorDataCategory( collectorName, categoryName, collectorDefn, &CCSID, (char*)pgmAttr, (char*)&catAttr, &RC ); } else if( argc >= 2 && *argv[1] == 'D' ) QypsDeregCollectorDataCategory( collectorName, categoryName, &RC ); else printf("Unrecognized option\n"); }/* main() */