************************************************************************* ** ** Source File Name = dbcat.cbl ** ** 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 ** ** PURPOSE : ** an example showing how to use DATABASE CATALOG APIs in order to: ** - catalog a database ** - list a directory of databases (showing what was created) ** - uncatalog the database ** ** APIs USED : ** CATALOG DATABASE sqlgcadb() ** OPEN DATABASE DIRECTORY SCAN sqlgdosd() ** GET NEXT DATABASE DIRECTORY ENTRY sqlgdgne() ** CLOSE DATABASE DIRECTORY SCAN sqlgdcls() ** UNCATALOG DATABASE sqlguncd() ** DEREFERENCE ADDRESS sqlgdref() ** ** ** 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. "dbcat". Data Division. Working-Storage Section. copy "sqlenv.cbl". copy "sqlutil.cbl". copy "sqlca.cbl". * Local Variables 77 rc pic s9(9) comp-5. 77 idx pic 9(4) comp-5. 77 errloc pic x(80). * Variables for the CATALOG/UNCATALOG DATABASE APIs 77 dce-prin-len pic 9(4) comp-5. 77 comment-len pic 9(4) comp-5. 77 path-len pic 9(4) comp-5. 77 nname-len pic 9(4) comp-5. 77 alias-len pic 9(4) comp-5. 77 db-len pic 9(4) comp-5. 77 authentication pic 9(4) comp-5. 77 dce-prin pic x(21). 77 cbl-comment pic x(31). 77 path pic x(1025). 77 nname pic x(9). 77 loc-type pic x. 77 alias pic x(9). 77 database pic x(9). * Variables for OPEN/CLOSE DATABASE DIRECTORY APIs. 77 dbCount pic 9(4) comp-5. 77 dbHandle pic 9(4) comp-5. * Variables for GET NEXT DATABASE DIRECTORY ENTRY API. 01 buffer pointer. 77 sqledinfo-sz pic 9(4) comp-5 value 560. 77 disp-drive pic x(50). Procedure Division. dbcat-pgm section. display "Sample COBOL Program : dbcat.cbl". move 0 to dce-prin-len. move "this is a test database" to cbl-comment. move 23 to comment-len. move 0 to path-len. move 0 to nname-len. move SQL-AUTHENTICATION-SERVER to authentication. move SQL-INDIRECT to loc-type. move "newalias" to alias. move 8 to alias-len. move "newdata" to database. move 7 to db-len. display "cataloging the new database". ******************************* * CATALOG DATABASE API called * ******************************* call "sqlgcadb" using by value dce-prin-len by value comment-len by value path-len by value nname-len by value alias-len by value db-len by reference sqlca by reference dce-prin by value authentication by reference cbl-comment by reference path by reference nname by value loc-type by reference alias by reference database returning rc. move "CATALOG DATABASE" to errloc. call "checkerr" using SQLCA errloc. display "listing all databases...". display "========================". perform list-db. display "UNCATALOGing the database that was created". ********************************* * UNCATALOG DATABASE API called * ********************************* call "sqlguncd" using by value alias-len by reference sqlca by reference alias returning rc. move "UNCATALOG DATABASE" to errloc. call "checkerr" using SQLCA errloc. display "Listing all databases [after UNCATALOG]". display "=======================================". perform list-db. end-dbcat. stop run. list-db Section. ******************************************* * OPEN DATABASE DIRECTORY SCAN API called * ******************************************* call "sqlgdosd" using by value path-len by reference sqlca by reference dbCount by reference dbHandle by reference path returning rc. move "OPEN DATABASE DIRECTORY SCAN" to errloc. call "checkerr" using SQLCA errloc. perform get-db-entry thru end-get-db-entry varying idx from 0 by 1 until idx equal dbCount. ******************************************** * CLOSE DATABASE DIRECTORY SCAN API called * ******************************************** call "sqlgdcls" using by value dbHandle by reference sqlca returning rc. move "CLOSE DATABASE DIRECTORY SCAN" to errloc. call "checkerr" using SQLCA errloc. end-list-db. exit. get-db-entry section. ************************************************ * GET NEXT DATABASE DIRECTORY ENTRY API called * ************************************************ call "sqlgdgne" using by value dbHandle by reference buffer by reference sqlca returning rc. ********************************** * DEREFERENCE ADDRESS API called * ********************************** call "sqlgdref" using by value sqledinfo-sz by reference SQLEDINFO by reference buffer returning rc. * Displaying the contents of the SQLEDINFO structure. * The SQLEDINFO structure is found in the "sqlenv.cbl" which is copied * into this program. The "sqlenv.cbl" file can be found in the * "sqllib/include" directory. display "alias : ", SQL-ALIAS. display "database name : ", SQL-DBNAME. * The "SQL-DRIVE" field of the SQLEDINFO is truncated to 50 characters * for display purposes in this program. The actual length of this * field is 215. move SQL-DRIVE TO disp-drive. display "database drive : ", disp-drive. display "node name : ", SQL-NODENAME. display "database release type : ", SQL-DBTYPE. display "database comment : ", SQL-COMMENT of SQLEDINFO. display "database entry type : ", SQL-TYPE. display "authentication : ", SQL-AUTHENTICATION. if SQL-AUTHENTICATION equal SQL-AUTHENTICATION-SERVER display "authentication : SERVER". if SQL-AUTHENTICATION equal SQL-AUTHENTICATION-CLIENT display "authentication : CLIENT". if SQL-AUTHENTICATION equal SQL-AUTHENTICATION-DCS display "authentication : DCS". display " ". end-get-db-entry. exit.