Skip to main content

IBM DB2 for i: Code example

Database monitor status checker

/* CRTBNDC PGM(DBMONTOOLS/QRYDBM) SRCFILE(DBMONTOOLS/C) SRCMBR(QDBM) */
#include [qusec.h]
#include [mih/cpybytes.h]
#include [stdio.h]
#include [string.h]

#pragma linkage(QQQQSDBM, OS)

int main(int argc, char *argv[])
{
 Qus_EC_t  err;
 char *job;
 char  mon[2][10];
 /* OldMon - Detailed Monitor (STRDBMON)  */
 /* NewMon - Summary/Memory-based Monitor */
 char  oldmon = 'N', newmon = 'N', memhdl[6];
 int   num;
 int   maxnum = 2;
 int   stg_used;
 int   rc;

 job = argv[1];
 err.Bytes_Provided = 0;


 rc = QQQQSDBM(job, &num, &maxnum, &mon, memhdl, &err);
    /* API parameter description                */
    /*  Qualified job name - Input              */
    /*  Number of active monitors - Output      */
    /*  Size of active monitor array - Input    */
    /*  Type of active monitor array - Output   */
    /*  Memory handle - Output                  */
    /*  Error code - Input/Output               */


 if (!strncmp(mon[0], "*FILE", 5))
   oldmon = 'Y';
 else if (!strncmp(mon[1], "*FILE", 5))
   oldmon = 'Y';

 if (!strncmp(mon[0], "*SQLMEMORY", 10))
   newmon = 'Y';
 else if (!strncmp(mon[1], "*SQLMEMORY", 10))
   newmon = 'Y';

 if (oldmon == 'Y')
   printf("Detailed monitor is running.\n");
 else
   printf("Detailed monitor is NOT running.\n");

 if (newmon == 'Y')
   printf("Summary monitor running.  Mem handle %.6s\n", memhdl);
 else
   printf("Summary monitor is NOT running.\n");

 return rc;
}

/* ================================================================ */
/* Source for creating a CL command to invoke monitor status pgm    */
/*  CRTCMD CMD(DBMONTOOLS/QRYDBM) PGM(DBMONTOOLS/QRYDBM)            */
/*                    SRCFILE(DBMONTOOLS/QCMDSRC)                   */
/*  COMMAND NAME: QRYDBM                                            */
/*                                                                  */
/*  COMMAND TITLE: Query database monitor status                    */
/*                                                                  */
/********************************************************************/
QRYDBM:      CMD   PROMPT('Query database monitor status')

             PARM       KWD(JOB) TYPE(JOBNAME) DFT(*CURRENT) +
                          SNGVAL((*ALL) (*CURRENT)) MIN(0) MAX(1) +
                          PROMPT('Job Name')

JOBNAME:    QUAL       TYPE(*NAME)                               +
                       LEN(10)                                   +
                       RSTD(*NO)                                 +
             PARM       KWD(JOB) TYPE(JOBNAME) DFT(*CURRENT) +
                          SNGVAL((*ALL) (*CURRENT)) MIN(0) MAX(1) +
                          PROMPT('Job Name')

JOBNAME:    QUAL       TYPE(*NAME)                               +
                       LEN(10)                                   +
                       RSTD(*NO)                                 +
                       MIN(1)                                    +
                       EXPR(*YES)
            QUAL       TYPE(*NAME)                               +
                       LEN(10)                                   +
                       RSTD(*NO)                                 +
                       MIN(0)                                    +
                       EXPR(*YES)                                +
                       PROMPT('User')
            QUAL       TYPE(*CHAR)                               +
                       LEN(6)                                    +
                       RSTD(*NO)                                 +
                       MIN(0)                                    +
                       EXPR(*YES)                                +
                       FULL(*YES)                                +
                       RANGE(000000 999999)                      +
                       PROMPT('Number')