Skip to main content

Problem:

How to call the sql set connect option through cobol to unlock the DataDirect OEM ODBC drivers.

Here are the calls to SQLSetConnectOption as one would code in a different language:

res_code = SQLSetConnectOption (hdbc, 1041, "licensefile");

res_code = SQLSetConnectOption (hdbc, 1042, "password");

Resolution:

Be sure you have entered into an OEM agreement with DataDirect and have thus created a 'branded' driver that is specific to our application package.

They have assured us that 'all we have to do' is make these API calls after our standard database connect, to 'unlock' the branded driver.

You should just need to set a procedure pointer to ODBC32.DLL. If the app is running as EXE or DLL, you will need to link with ODBC32.LIB and ODBCCP32.LIB.

The call convention should be stdcall, i.e. 66.

The return value for the ODBC API call -- i.e. SQLRtn -- should be stored as a PIC S9(4) COMP-5.

i.e. something like

       SPECIAL-NAMES.

          CALL-CONVENTION 66 is ODBCAPI.

       WORKING-STORAGE SECTION.

       01 MSOdbcPtr        PROCEDURE-POINTER.

       01 varHDBC           PIC X(4) COMP-5 .

       01 SqlRtn               PIC S9(4) COMP-5.

      SET MSOdbcPtr TO ENTRY "ODBC32.DLL"

CALL ODBCAPI "SQLSetConnectOption"

       USING BY VALUE varHDBC

                  BY VALUE 1041

                  BY REFERENCE varLicenseFile

       RETURNING SqlRtn

END-CALL

CALL ODBCAPI "SQLSetConnectOption"

       USING BY VALUE varHDBC

                  BY VALUE 1042

                  BY REFERENCE varPWD

       RETURNING SqlRtn

END-CALL

Old KB# 7055