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