*************************************************************************
**
** Source File Name = prepbind.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
**
** PURPOSE :
** This program shows how the PRECOMPILE and BIND APIs are used
** to prepare an Embedded SQL program to a specified database.
**
** Note: The output ".cbl" that is produced by "prepbind" must
** be compiled and linked to avoid timestamp conflicts.
**
** APIs USED :
** START DATABASE MANAGER sqlgpstart()
** PRECOMPILE PROGRAM sqlgprep()
** BIND sqlgbndx()
** STOP DATABASE MANAGER sqlgpstp()
**
** 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. "prepbind".
Data Division.
Working-Storage Section.
copy "sqlenv.cbl".
copy "sqlca.cbl".
copy "sql.cbl".
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 userid.
49 userid-length pic s9(4) comp-5 value 0.
49 userid-name pic x(9).
01 passwd.
49 passwd-length pic s9(4) comp-5 value 0.
49 passwd-name pic x(19).
01 database.
49 database-length pic s9(4) comp-5 value 0.
49 database-name pic x(9).
01 prog.
49 program-length pic s9(4) comp-5 value 0.
49 program-name pic x(20).
EXEC SQL END DECLARE SECTION END-EXEC.
01 prpmsg.
49 prpmsg-file-length pic s9(4) comp-5 value 11.
49 prpmsg-file pic x(11) value "outprep.msg".
01 bndmsg.
49 bndmsg-file-length pic s9(4) comp-5 value 11.
49 bndmsg-file pic x(12) value "outbind.msg".
01 prepbind.
05 prepbind-options occurs 6 times pic s9(9) comp-5.
01 bndfile.
05 bndfile-length pic s9(4) comp-5 value +0.
05 bndfile-file pic x(20).
* Local Variables
77 rc pic s9(9) comp-5.
77 errloc pic x(80).
77 user-response pic x(3).
Procedure Division.
prepbind-pgm section.
display "Sample COBOL Program : PREPBIND.CBL".
display "starting the database manager".
*************************************
* START DATABASE MANAGER API called *
*************************************
call "sqlgpstart" using
by value 0
by reference sqlca
returning rc.
display "Enter the name of the database : " with no advancing.
accept database-name.
inspect database-name tallying database-length for characters
before initial " ".
display " ".
display "Enter program name with extension to precompile : "
with no advancing.
accept program-name.
inspect program-name tallying program-length for characters
before initial " ".
display " ".
display "Enter your user id (default none): "
with no advancing.
accept userid-name.
if userid-name = spaces then
EXEC SQL CONNECT TO sample END-EXEC
else
display "Enter your password : " with no advancing.
accept passwd-name.
inspect passwd-name tallying passwd-length for characters
before initial " ".
display " ".
display "connect to database : ", database-name.
EXEC SQL CONNECT to :database USER :userid USING :passwd
END-EXEC.
move "CONNECT to database" to errloc.
call "checkerr" using SQLCA errloc.
* setup prep and bind options
* (1) - number of options allocated
* (2) - number of options used
* (3)-(6) - options/lengths
move 2 to prepbind-options(1).
move 2 to prepbind-options(2).
move SQL-BIND-OPT to prepbind-options(3).
move 0 to prepbind-options(4).
move SQL-PKG-OPT to prepbind-options(5).
move 0 to prepbind-options(6).
*************************
* PRECOMPILE API called *
*************************
call "sqlgprep" using
by value prpmsg-file-length
by value program-length
by reference sqlca
by reference prepbind
by reference prpmsg-file
by reference program-name
returning rc.
move "PRECOMPILE PROGRAM" to errloc.
call "checkerr" using SQLCA errloc.
move SQL-NO-OPT to prepbind-options(3).
move SQL-NO-OPT to prepbind-options(5).
string program-name delimited by ".", ".bnd" delimited by
size into bndfile-file.
inspect bndfile-file tallying bndfile-length for characters
before initial " ".
*******************
* BIND API called *
*******************
call "sqlgbndx" using
by value bndmsg-file-length
by value bndfile-length
by reference sqlca
by reference prepbind
by reference bndmsg-file
by reference bndfile-file
returning rc.
move "binding the application" to errloc.
call "checkerr" using SQLCA errloc.
display "BIND was successful on ", bndfile-file.
display "BIND output has been placed in file ", bndmsg-file.
display "connect reseting".
EXEC SQL CONNECT RESET END-EXEC.
move "CONNECT RESET" to errloc.
call "checkerr" using SQLCA errloc.
display "Would you like to stop the Database Manager (y/n)"
with no advancing.
accept user-response.
if user-response not equal to "y" and not equal to "Y"
then stop run.
* setup stop options structure SQLEDBSTOPOPT
move 0 to SQL-ISPROFILE of SQLEDBSTOPOPT.
move " " to SQL-PROFILE of SQLEDBSTOPOPT.
move 0 to SQL-ISNODENUM of SQLEDBSTOPOPT.
move 0 to SQL-NODENUM of SQLEDBSTOPOPT.
move SQLE-NONE to SQL-OPTION of SQLEDBSTOPOPT.
move SQLE-DROP to SQL-CALLERAC of SQLEDBSTOPOPT.
*********************************
* STOP DATABASE MANAGER API called *
*********************************
call "sqlgpstp" using
by reference SQLEDBSTOPOPT
by reference sqlca
returning rc.
move "STOPPING DATABASE MANAGER" to errloc.
call "checkerr" using SQLCA errloc.
end-prepbind. stop run.