************************************************************************* 
      ** 
      ** Source File Name = monsz.cbl  1.6 
      ** 
      ** Licensed Materials - Property of IBM 
      ** 
      ** (C) COPYRIGHT International Business Machines Corp. 1995, 1999  
      ** All Rights Reserved. 
      ** 
      ** US Government Users Restricted Rights - Use, duplication or 
      ** disclosure restricted by GSA ADP Schedule Contract with 
      ** 
      **    PURPOSE : 
      **       To demonstrate the use of DATABASE MONITOR APIs.  The following 
      **       code requests for the buffer size that would be required for 
      **       issuing a snapshot for locks, tables, and database level  
      **       information. 
      ** 
      **       This testcase will return SQL1611, no data was returned  
      **       by Database System Monitor. Some activity must be done to 
      **       generate data for the snapshot: connect to database,  
      **       manipulate data, etc 
      ** 
      **    APIs USED : 
      **       ESTIMATE DATABASE SYSTEM MONITOR BUFFER SIZE    sqlgmnsz() 
      **       GET SNAPSHOT                                    sqlgmnss() 
      ** 
      ** For more information about these samples see the README file. 
      ** 
      ** For more information on programming in COBOL, see the: 
      **    -  "Programming in COBOL" section of the Application Development Guide. 
      ** 
      ** For more information on Building COBOL Applications, see the: 
      **    - "Building COBOL Applications" section of the Application Building Guide. 
      ** 
      ** For more information on the SQL language see the SQL Reference. 
      ** 
      ************************************************************************* 

       Identification Division.
       Program-Id. "monsz".

       Data Division.
       Working-Storage Section.

       copy "sqlca.cbl".
       copy "sqlmon.cbl".
       copy "sqlmonct.cbl".

      * Local Variables 
       77 rc                  pic s9(9) comp-5.
       77 errloc              pic x(80).

       77 rezerv1             pic 9(9) comp-5 value 0.
       77 rezerv2             pic 9(9) comp-5 value 0.
       77 current-version     pic 9(9) comp-5 value 0.

      * variables for ESTIMATE DATABASE SYSTEM MONITOR BUFFER SIZE 
      *  and for DATABASE SYSTEM MONITOR SNAPSHOT 
       01 buff.
          05 buffer-sz        pic 9(9) comp-5 value 0.
          05 buffer           occurs 0 to 100000 times 
                              depending on buffer-sz.
             10 element       pic x.

       01 database-name.
         05 pic x(6) value "sample".
         05 pic x    value x"00".
 
       Procedure Division.
       monsz-pgm section.

           display "Sample COBOL Program : monsz.cbl".

      * Request SQLMA-DBASE, SQLM-DBASE-TABLES, and SQLMA-DBASE-LOCKS  
      * in sqlma 

      * set the input to SQLMA structure to monitor 3 objects 
           move 3 to OBJ-NUM of SQLMA.
           move SQLMA-DBASE to OBJ-TYPE of OBJ-VAR(1).
           move SQLMA-DBASE-LOCKS to OBJ-TYPE of OBJ-VAR(2).
           move SQLMA-DBASE-TABLES to OBJ-TYPE of OBJ-VAR(3).

      * monitor the sample database 
           move database-name to SQLMA-OBJECT in OBJ-VAR(1).
           move database-name to SQLMA-OBJECT in OBJ-VAR(2).
           move database-name to SQLMA-OBJECT in OBJ-VAR(3).

           move SQLM-CURRENT-VERSION to current-version.

      *********************************************************** 
      * ESTIMATE DATABASE SYSTEM MONITOR BUFFER SIZE API called * 
      *********************************************************** 
           call "sqlgmnsz" using
                                 by value     rezerv1
                                 by reference sqlca
                                 by reference buffer-sz
                                 by reference SQLMA
                                 by reference rezerv2
                                 by value     current-version
                           returning rc.

           move "ESTIMATE BUFFER SIZE" to errloc.
           call "checkerr" using SQLCA errloc.

           display "Buffer size required for this snapshot is ", 
                    buffer-sz.

      *********************************************** 
      * DATABASE SYSTEM MONITOR SNAPSHOT API called * 
      *********************************************** 
           call "sqlgmnss" using
                                 by value     rezerv1
                                 by reference sqlca
                                 by reference SQLM-COLLECTED
                                 by reference buffer(1)
                                 by value     buffer-sz
                                 by reference SQLMA
                                 by reference rezerv2
                                 by value     current-version
                           returning rc.

           move "TAKING SNAPSHOT" to errloc.
           call "checkerr" using SQLCA errloc.

       end-monsz. stop run.