ODBC is rather key to CMOD.
DB2 ships a sample IVP to verify ODBC, SDSNSAMP(DSNTEJ8E).
1. I'm using two datasets for the compile output and to execute:
Command - Enter "/" to select action Dsorg Recfm Lrecl Blksz
-------------------------------------------------------------------------------
ODV733.USER.RUNLIB.LOAD PO-E U 0 32760
ODV733.USER.RUNLIB.OBJ PO-E FB 80 3200
2. This is my DSNAOINI member:
VIEW ODV733.PRIVATE.SDSNSAMP(DSNAOINI) - 01.02
Command ===>
****** ***************************** Top of Data **********
000001 ; This is a comment line...
000002 ; Example COMMON stanza
000003 ?COMMON?
000004 MVSDEFAULTSSID=DB1X
000005
000006 ; Example SUBSYSTEM stanza for V81A subsystem
000007 ?V81A?
000008 MVSATTACHTYPE=CAF
000009 PLANNAME=DSNACLI
000010
000011 ; Example DATA SOURCE stanza for STLEC3 data source
000012 ?STLEC3?
000013 AUTOCOMMIT=0
000014 OPTIMIZEFORNROWS=100
000015
000016 ; Example DATA SOURCE stanza for STLEC4 data source
000017 ?STLEC4?
000018 TXNISOLATION=8
000019
Here's my actual job:
// JOBCARD
//* Name = DSNTEJ8E
//*
//* Descriptive Name =
//* DB2/ODBC Sample Application JCL
//* 64-bit C/C++ Application
//* (lots more words here in job in SDSNSAMP)
//*---------------------------------------------------------------
//* COMPILE STEP:
//*---------------------------------------------------------------
//COMPILE EXEC PGM=CCNDRVR,REGION=48M,
// PARM=('/CXX OPTFILE(DD:CCOPT)')
//STEPLIB DD DSN=CEE.SCEERUN2,DISP=SHR
// DD DSN=CEE.SCEERUN,DISP=SHR
// DD DSN=CBC.SCCNCMP,DISP=SHR
//SYSIN DD DSN=DSN.DB2VA10.SDSNSAMP(DSN8O3VP),DISP=SHR
<<< note: DB2/ODBC 3.0 driver //*YSIN DD DSN=DSN.DB2VA10.SDSNSAMP(DSN8OIVP),DISP=SHR
<<< note: older ODBC driver...I try both //SYSLIN DD DSN=ODV733.USER.RUNLIB.OBJ(DSN8O3VP),DISP=SHR,
<<< change this line to match which IVP you're running // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSCPRT DD SYSOUT=*
//CCOPT DD *
LSEARCH(//'ODV733.USER.RUNLIB.OBJ.+')
SEARCH(//'CEE.SCEEH.+',//'CBC.SCLBH.+',//'DSN.DB2VA10.SDSNC.+')
LIST
SOURCE
LONG
LP64
FLOAT(HEX)
WARN64
//*
//*-------------------------------------------------------------
//* BIND STEP:
//*-------------------------------------------------------------
//BIND EXEC PGM=IEWL,REGION=20M,COND=(8,LE,COMPILE),
// PARM=('MAP,RENT,DYNAM=DLL,CASE=MIXED,COMPAT=CURR',
// 'LIST=NOIMP,RMODE=ANY,AMODE=64')
//STEPLIB DD DSN=CEE.SCEERUN2,DISP=SHR
// DD DSN=CEE.SCEERUN,DISP=SHR
//SYSLIB DD DSN=CEE.SCEEBND2,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSLIN DD DSN=ODV733.USER.RUNLIB.OBJ(DSN8O3VP),DISP=SHR
// DD DSN=CEE.SCEELIB(CELQSCPP),DISP=SHR
// DD DSN=CEE.SCEELIB(CELQS003),DISP=SHR
// DD DSN=CEE.SCEELIB(C64),DISP=SHR
// DD DSN=CBC.SCLBSID(IOSX64),DISP=SHR
// DD DSN=DSN.DB2VA10.SDSNMACS(DSNAO64C),DISP=SHR
// DD DDNAME=SYSIN
//SYSLMOD DD DSN=ODV733.USER.RUNLIB.LOAD(DSN8O3VP),DISP=SHR
//SYSDEFSD DD DUMMY
//SYSIN DD DUMMY
//*---------------------------------------------------------
//* GO STEP:
//*---------------------------------------------------------
//GO EXEC PGM=DSN8O3VP,REGION=2048K,
// COND=((8,LT,COMPILE),(8,LE,BIND))
//STEPLIB DD DSN=ODV733.USER.RUNLIB.LOAD,DISP=SHR
// DD DSN=DSN.DB2VA10.SDSNLOD2,DISP=SHR
// DD DSN=DSN.DB2VA10.SDSNEXIT,DISP=SHR
// DD DSN=DSN.DB2VA10.SDSNLOAD,DISP=SHR
// DD DSN=CEE.SCEERUN2,DISP=SHR
// DD DSN=CEE.SCEERUN,DISP=SHR
// DD DSN=CBC.SCLBDLL,DISP=SHR
// DD DSN=CBC.SCLBDLL2,DISP=SHR
//SYSPRINT DD SYSOUT=*
//CEEDUMP DD SYSOUT=*
//DSNAOINI DD DISP=SHR,DSN=ODV733.PRIVATE.SDSNSAMP(DSNAOINI)
/*
The SYSPRINT output looks like this:
********************************* TOP OF DATA ***************
DSN8O3VP INITIALIZATION
DSN8O3VP SQLAllocHandle-Environment
DSN8O3VP-henv=1
DSN8O3VP SQLAllocHandle-Connection
DSN8O3VP-hdbc=1
DSN8O3VP SQLConnect
DSN8O3VP successfully issued a SQLconnect
DSN8O3VP SQLAllocHandle-Statement
DSN8O3VP hstmt=1
DSN8O3VP successfully issued a SQLAllocStmt
DSN8O3VP SQLExecDirect
DSN8O3VP sqlstmt=SELECT * FROM SYSIBM.SYSDUMMY1
DSN8O3VP successfully issued a SQLExecDirect
DSN8O3VP SQLFetch
DSN8O3VP successfully issued a SQLFetch
DSN8O3VP SQLEndTran-Commit
DSN8O3VP successfully issued a SQLTransact
DSN8O3VP SQLFreeHandle-Statement
DSN8O3VP successfully issued a SQLFreeStmt
DSN8O3VP SQLDisconnect
DSN8O3VP successfully issued a SQLDisconnect
DSN8O3VP SQLFreeHandle-Connection
DSN8O3VP successfully issued a SQLFreeConnect
DSN8O3VP SQLFreeHandle-Environment
DSN8O3VP successfully issued a SQLFreeEnv
DSN8O3VP pgmend: Ending sample
DSN8O3VP Execution was SUCCESSFUL
******************************** BOTTOM OF DATA *****