Problem:
Two methods besides using LITLINK compiler directive and adding the correct MQMCB32.LIB or MQICCB32.LIB to the CBLLINK process.
Add "call-convention 12" to your program and modify all the calls to MQ from " CALL 'MQ' " to "CALL MQCALL 'MQ'". This will require the correct MQMCB32.LIB or MQICCB32.LIB to be linked. This can only be uses as DLL or EXE not GNT or INT.
Resolution:
IDENTIFICATION DIVISION.
PROGRAM-ID. 'MQODBCPUT'
environment division.
configuration section.
special-names.
call-convention 12 is MQCALL.
PROCEDURE DIVISION.
CALL MQCALL 'MQCONN'
USING QM-NAME, HCONN,
COMPLETION-CODE, CON-REASON.
Below is the Procedure-Pointer method that can be run as INT or GNT for testing. This does not require the addition of the MQMCB32.LIB or MQICCB32.LIB when creating EXE or DLL.
IDENTIFICATION DIVISION.
PROGRAM-ID. 'MQODBCPUT'
environment division.
WORKING-STORAGE SECTION.
01 WORK-AREAS.
05 LIBPTR PROCEDURE-POINTER.
05 BADPTR PROCEDURE-POINTER.
PROCEDURE DIVISION.
SET LIBPTR TO ENTRY "MQMCB32".
set BadPtr to entry "xyzzy"
if LIBPTR = BadPtr
SET LIBPTR TO ENTRY "mqiccb32".
CALL 'MQCONN'
USING QM-NAME, HCONN,
COMPLETION-CODE, CON-REASON.