I compared side by side of 2 COBOL code styles and hopefully someone can tell me how to do it:
Old style: ---Connect.sqb
==============================================
Working-Storage Section.
copy "sqlenv.cbl".
copy "sql.cbl".
copy "sqlca.cbl".
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 dbalias.
49 dbalias-len pic s9(4) comp-5 value 0.
49 dbalias-buf pic x(9) value " ".
01 userid.
49 userid-len pic s9(4) comp-5 value 0.
49 userid-buf pic x(128) value " ".
01 pswd.
49 pswd-len pic s9(4) comp-5 value 0.
49 pswd-buf pic x(19).
EXEC SQL END DECLARE SECTION END-EXEC.
PROCEDURE DIVISION.
display "Enter database alias( 'sample' by default): "
with no advancing.
accept dbalias-buf.
if dbalias-buf = spaces
move "sample" to dbalias-buf.
inspect dbalias-buf
tallying dbalias-len for characters before initial " ".
display "Enter user id( current by default) : "
with no advancing.
accept userid-buf.
inspect userid-buf
tallying userid-len for characters before initial " ".
if userid-buf not equal spaces
display "Enter password : "
with no advancing
accept pswd-buf.
inspect pswd-buf
tallying pswd-len for characters before initial " ".
if userid-buf = spaces
EXEC SQL CONNECT TO :dbalias END-EXEC
else
EXEC SQL
CONNECT TO :dbalias USER :userid USING :pswd
END-EXEC.
===================================================
I can use db2 command to create both bind file and cbl file:
db2 prep Connect.sqb bindfile target mfcob CALL_RESOLUTION DEFERRED
New style: ---Connect.sqb
==============================================
working-storage section.
EXEC SQL INCLUDE SQLCA END-EXEC.
01 ws-db pic x(08).
01 ws-usr pic x(08).
01 ws-pass pic x(18).
procedure division.
EXEC SQL
CONNECT TO :ws-db USER :ws-usr USING :ws-pass
END-EXEC
procedure division.
display "Enter database alias to connect to (Eg Sample) "
with no advancing
accept ws-db
display "Enter username "
with no advancing
accept ws-usr
display "Enter password "
with no advancing
accept ws-pass
EXEC SQL
CONNECT TO :ws-db USER :ws-usr USING :ws-pass
END-EXEC
==========================================
With the new style I can create both Connect.bnd file and executable from Visual COBOL eclipse
But with db2 command,
db2 prep Connect.sqb bindfile target mfcob CALL_RESOLUTION DEFERRED
I create Connect.cbl but no Connect.bnd file with error:
==================================================
57 SQL4911N The host variable data type is not valid.
81 SQL4002N "WS-PASS" and "WS-USR" are undeclared host
variables that cannot both be used as descriptor names in a
single SQL statement.
110 SQL4002N "WS-VAR-PASS" and "WS-USR" are undeclared host
variables that cannot both be used as descriptor names in a
single SQL statement.
SQL0095N No bind file was created because of previous
errors.
===============================================
Is there anyway -- without changing the code style, I can make all Visual COBOL embedded samples working under db2 command line?
Thank you in advance,
-Jack