*************************************************************************
**
** Source File Name = tspace.sqb
**
** Licensed Materials - Property of IBM
**
** (C) COPYRIGHT International Business Machines Corp. 1995, 2000
** All Rights Reserved.
**
** US Government Users Restricted Rights - Use, duplication or
** disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
**
** PURPOSE: This sample program demonstrates the use of the
** COPY and FREE MEMORY APIs, which are to be used with
** the TABLESPACE APIs.
**
** APIs USED:
** COPY MEMORY sqlgmcpy
** FREE MEMORY sqlgfmem
** TABLESPACE QUERY sqlgmtsq
** TABLESPACE CONTAINER QUERY sqlgtcq
** SINGLE TABLESPACE QUERY sqlgstpq
** OPEN TABLESPACE QUERY sqlgotsq
** FETCH TABLESPACE QUERY sqlgftpq
** CLOSE TABLESPACE QUERY sqlgctsq
** OPEN TABLESPACE CONTAINER QUERY sqlgotcq
** FETCH TABLESPACE CONTAINER QUERY sqlgftcq
** CLOSE TABLESPACE CONTAINER QUERY sqlgctcq
** SET TABLESPACE CONTAINERS sqlgstsc
** GET TABLESPACE STATISTICS sqlggtss
**
** 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. "tspace".
Data Division.
Working-Storage Section.
copy "sqlenv.cbl".
copy "sql.cbl".
copy "sqlutil.cbl".
copy "sqlca.cbl".
copy "sqlutbsq.cbl".
copy "sqlutbcq.cbl".
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 dbname pic x(8).
01 userid pic x(8).
01 passwd.
49 passwd-length pic s9(4) comp-5 value 0.
49 passwd-name pic x(18).
EXEC SQL END DECLARE SECTION END-EXEC.
77 errloc pic x(80).
77 rc pic s9(9) comp-5.
01 option pic s9(9) comp-5 value 0.
01 max-tcq pic s9(9) comp-5 value 1.
01 max-tbsqry pic s9(9) comp-5 value 1.
01 tbsqry-returned pic s9(9) comp-5.
01 tcq-returned pic s9(9) comp-5.
01 tablespace-count pic s9(9) comp-5.
01 i pic s9(4) comp-5.
01 tbsqry-pointer usage is pointer.
01 tbsqry-pointer-int
redefines tbsqry-pointer
pic s9(9) comp-5.
01 tbsqry-pointer-save usage pointer.
01 tablespace-id pic s9(9) comp-5 value 1.
01 tblspace-id pic s9(9) comp-5 value 2.
01 tbsid pic s9(9) comp-5 value 0.
01 container-count pic s9(9) comp-5.
01 tbscontqry-pointer usage is pointer.
01 tbscontqry-pointer-int
redefines tbscontqry-pointer
pic s9(9) comp-5.
01 tbscontqry-pointer-save usage pointer.
Linkage section.
* copy "sqlutbsq.cbl".
* copy "sqlutbcq.cbl".
Procedure Division.
Main Section.
display "Sample COBOL program: ".
* Get database connection information.
display "Enter in the database name : " with no advancing.
accept dbname.
display "Enter your user id (default none): "
with no advancing.
accept userid.
if userid = spaces
EXEC SQL CONNECT TO sample END-EXEC
else
display "Enter your password : " with no advancing
accept passwd-name.
* Passwords in a CONNECT statement must be entered in a VARCHAR format
* with the length of the input string.
inspect passwd-name tallying passwd-length for characters
before initial " ".
EXEC SQL CONNECT TO :dbname USER :userid USING :passwd
END-EXEC.
move "CONNECT TO" to errloc.
call "checkerr" using SQLCA errloc.
display "Testing sqlgmtsq...........................".
********************
* TABLESPACE QUERY *
********************
call "sqlgmtsq" using
by reference sqlca
by reference tablespace-count
by reference tbsqry-pointer
by value SQLB-RESERVED1
by value SQLB-RESERVED2
returning rc.
display "tsq sqlcode of sqlca: ", sqlcode of sqlca.
display "tsq tokens: ", sqlerrmc of sqlca
- (1:sqlerrml of sqlca).
display "tsq tablespace count: ", tablespace-count.
set tbsqry-pointer-save to tbsqry-pointer.
perform print-tablespace-info
varying i
from 0
by 1
until i is equal to tablespace-count.
***************
* FREE MEMORY *
***************
call "sqlgfmem" using
by reference sqlca
by value tbsqry-pointer-save
returning rc.
display "fmem sqlcode of sqlca: ", sqlcode of sqlca.
display "fmem tokens: ", sqlerrmc of sqlca
- (1:sqlerrml of sqlca).
display "Testing sqlgtcq...........................".
call "sqlgtcq" using
by reference sqlca
by value tblspace-id
by reference container-count
by reference tbscontqry-pointer.
display "tcq sqlcode of sqlca: ", sqlcode of sqlca.
display "tcq tokens: ", sqlerrmc of sqlca
- (1:sqlerrml of sqlca).
display "tcq container count: ", container-count.
set tbscontqry-pointer-save to tbscontqry-pointer.
perform print-container-info
varying i
from 0
by 1
until i is equal to container-count.
call "sqlgfmem" using
by reference sqlca
by value tbscontqry-pointer-save.
display "fmem sqlcode of sqlca: ", sqlcode of sqlca.
display "fmem tokens: ", sqlerrmc of sqlca
- (1:sqlerrml of sqlca).
display "Testing sqlgstpq...........................".
call "sqlgstpq" using
by reference sqlca
by value tbsid
by reference sqlb-tbsqry-data
by value SQLB-RESERVED1.
display "stsq sqlcode of sqlca: ", sqlcode of sqlca.
perform display-tbsqry-data.
display "Testing sqlgotsq...........................".
call "sqlgotsq" using
by reference sqlca
by value SQLB-OPEN-TBS-ALL
by reference tablespace-count.
display "otsq sqlcode of sqlca: ", sqlcode of sqlca.
display "num of tablespaces: " tablespace-count
perform fetch-tsqs
varying i
from 0
by 1
until i is equal to tablespace-count.
call "sqlgctsq" using
by reference sqlca.
display "ftsq sqlcode of sqlca: ", sqlcode of sqlca.
display "Testing sqlgotcq...........................".
call "sqlgotcq" using
by reference sqlca
by value tablespace-id
by reference container-count.
display "otcq sqlcode of sqlca: ", sqlcode of sqlca.
display "num of containers: " container-count.
perform fetch-tcqs
varying i
from 0
by 1
until i is equal to container-count.
call "sqlgctcq" using
by reference sqlca.
display "ctcq sqlcode of sqlca: ", sqlcode of sqlca.
display "Testing sqlgstsc...........................".
call "sqlgtcq" using
by reference sqlca
by value tblspace-id
by reference container-count
by reference tbscontqry-pointer.
display "tcq sqlcode of sqlca: ", sqlcode of sqlca.
display "num of containers: ", container-count.
set tbscontqry-pointer-save to tbscontqry-pointer.
perform print-container-info
varying i
from 0
by 1
until i is equal to container-count.
call "sqlgstsc" using
by reference sqlca
by value option
by value tblspace-id
by value container-count
by value tbscontqry-pointer-save.
display "stsc sqlcode of sqlca: ", sqlcode of sqlca.
call "sqlgfmem" using
by reference sqlca
by value tbscontqry-pointer-save.
display "fmem sqlcode of sqlca: ", sqlcode of sqlca.
display "fmem tokens: ", sqlerrmc of sqlca
- (1:sqlerrml of sqlca).
display "Testing sqlggtss...........................".
call "sqlggtss" using
by reference sqlca
by value tblspace-id
by reference sqlb-tbs-stats.
display "gtss sqlcode of sqlca: ", sqlcode of sqlca.
display "total pages: ",
sql-total-pages of sqlb-tbs-stats.
display "useable pages: ",
sql-useable-pages of sqlb-tbs-stats.
display "used pages: ",
sql-used-pages of sqlb-tbs-stats.
display "free pages: ",
sql-free-pages of sqlb-tbs-stats.
display "high water mark: ",
sql-high-water-mark of sqlb-tbs-stats.
EXEC SQL CONNECT RESET END-EXEC.
move "CONNECT RESET" to errloc.
call "checkerr" using SQLCA errloc.
End-Main.
go to End-Prog.
Fetch-Loop Section.
End-Fetch-Loop. exit.
End-Prog.
stop run.
fetch-tsqs.
call "sqlgftpq" using
by reference sqlca
by value max-tbsqry
by reference sqlb-tbsqry-data
by reference tbsqry-returned
display "ftsq sqlcode of sqlca: ", sqlcode of sqlca
display "tbsqry-returned: " tbsqry-returned
perform display-tbsqry-data.
fetch-tcqs.
call "sqlgftcq" using
by reference sqlca
by value max-tcq
by reference sqlb-tbscontqry-data
by reference tcq-returned
display "ftsq sqlcode of sqlca: ", sqlcode of sqlca
display "tbsqry-returned: " tbsqry-returned
perform display-tbsqry-data.
print-tablespace-info.
***************
* COPY MEMORY *
***************
call "sqlgmcpy" using
by reference sqlb-tbsqry-data
by value tbsqry-pointer
by value SQLB-TBSQRY-DATA-SIZE
returning rc.
* the COPY MEMORY API can be used if the data area is declared in
* the "Working-Storage Section". "set address" can be used if the
* data area is declared in teh "Linkage Section". In this case
* the data area is the copied file "sqlutbsq.cbl".
* set address of sqlb-tbsqry-data to tbsqry-pointer
perform display-tbsqry-data
add sqlb-tbsqry-data-size to tbsqry-pointer-int.
display-tbsqry-data.
display "id: ", sql-id of sqlb-tbsqry-data
display "total pages: ",
sql-total-pages of sqlb-tbsqry-data
display "useable pages: ",
sql-useable-pages of sqlb-tbsqry-data
display "flags: ",
sql-flags of sqlb-tbsqry-data
display "page size: ",
sql-page-size of sqlb-tbsqry-data
display "ext size: ",
sql-ext-size of sqlb-tbsqry-data
display "prefetch size: ",
sql-prefetch-size of sqlb-tbsqry-data
display "# containers: ",
sql-n-containers of sqlb-tbsqry-data
display "tablespace state: ",
sql-tbs-state of sqlb-tbsqry-data
display "life lsn: ",
sql-life-lsn of sqlb-tbsqry-data
display " ".
print-container-info.
***************
* COPY MEMORY *
***************
call "sqlgmcpy" using
by reference sqlb-tbscontqry-data
by value tbscontqry-pointer
by value SQLB-TBSCONTQRY-DATA-SIZE
returning rc.
* the COPY MEMORY API can be used if the data area is declared in
* the "Working-Storage Section". "set address" can be used if the
* data area is declared in teh "Linkage Section". In this case
* the data area is the copied file "sqlutbcq.cbl".
* set address of sqlb-tbscontqry-data to tbscontqry-pointer
display "id: ", sql-id of sqlb-tbscontqry-data
display "# tablespaces: ", sql-n-tbs of sqlb-tbscontqry-data
display "tablespace id:",
sql-tbs-id of sqlb-tbscontqry-data
display "name: ", sql-name of sqlb-tbscontqry-data
(1:sql-name-len of sqlb-tbscontqry-data)
display "container type: ",
sql-cont-type of sqlb-tbscontqry-data
display "total pages: ",
sql-total-pages of sqlb-tbscontqry-data
display "useable pages: ",
sql-useable-pages of sqlb-tbscontqry-data
display "ok?: ",
sql-ok of sqlb-tbscontqry-data
display " ",
add sqlb-tbscontqry-data-size to tbscontqry-pointer-int.