In order to compile and link a program which goes on CICS/DB2 i used the jcl:
- Code: Select all
//SIDCOBOD JOB ACCT#,SIDCOBO,NOTIFY=&SYSUID,MSGLEVEL=(1,1)
//********************************************************************
//* 1. DB2 PRECOMPILE *
//********************************************************************
//PC EXEC PGM=DSNHPC,PARM='HOST(IBMCOB),SOURCE,NEWFUN(NO)',
// REGION=0M
//*SYSIN DD DSN=YICHAO.COBOL.LIB(LOGON2),DISP=SHR
//SYSIN DD DISP=SHR,DSN=SIDCOBO.DB2CICS.SOURCE(CURDCI01)
//*DCLGEN DD DISP=SHR,DSN=SIDCOBO.DB2.DCLGEN
//*DBRMLIB DD DISP=SHR,DSN=YICHAO.CICSDB2.DBRMLIB(LOGON2)
//DBRMLIB DD DISP=SHR,DSN=SIDCOBO.DB2.DBRM(CURDCI01)
//STEPLIB DD DISP=SHR,DSN=DSN810.SDSNEXIT
// DD DISP=SHR,DSN=DSN810.SDSNLOAD
//SYSCIN DD DSN=&&DSNHOUT,DISP=(MOD,PASS),UNIT=SYSDA,
// SPACE=(800,(500,500))
//SYSLIB DD DISP=SHR,DSN=DSN810.SRCLIB.DATA
// DD DSN=SYSFAN.CICS.SDFHMAC,DISP=SHR
// DD DSN=CICSTS23.CICS.SDFHCOB,DISP=SHR
// DD DSN=CICSTS23.CICS.SDFHMAC,DISP=SHR
// DD DSN=CICSTS23.CICS.SDFHSAMP,DISP=SHR
// DD DISP=SHR,DSN=SIDCOBO.DB2.DCLGEN
//SYSPRINT DD SYSOUT=*
//SYSTERM DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSUT1 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA
//SYSUT2 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA
//********************************************************************
//* 2. CICS TRANSLATOR
//********************************************************************
//TRN EXEC PGM=DFHECP1$,REGION=0M,
// COND=(4,LT,PC)
//STEPLIB DD DSN=CICSTS23.CICS.SDFHLOAD,DISP=SHR
// DD DSN=SYSFAN.CICS.SDFHMAC,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSPUNCH DD DSN=&&SYSCIN,
// DISP=(MOD,PASS),UNIT=SYSDA,
// DCB=BLKSIZE=400,
// SPACE=(400,(400,100))
//SYSUDUMP DD SYSOUT=*
//SYSIN DD DSN=&&DSNHOUT,DISP=(OLD,DELETE)
//*
//********************************************************************
//* 3. COBOL COMPILE
//********************************************************************
//COB EXEC PGM=IGYCRCTL,REGION=0M,
// PARM=(NOSEQUENCE,QUOTE,RENT,TEST,'PGMNAME(LONGUPPER)'),
// COND=(4,LT,TRN)
//STEPLIB DD DISP=SHR,DSN=IGY330.SIGYCOMP
//SYSPRINT DD SYSOUT=*
//SYSLIB DD DSN=CICSTS23.CICS.SDFHCOB,DISP=SHR
// DD DSN=CICSTS23.CICS.SDFHMAC,DISP=SHR
// DD DSN=CICSTS23.CICS.SDFHSAMP,DISP=SHR
// DD DSN=SYSFAN.CICS.SDFHMAC,DISP=SHR
//* DD DISP=SHR,DSN=SIDCOBO.CICS.MAPLIB
//SYSTERM DD SYSOUT=*
//SYSLIN DD DSN=&&LOADSET,DISP=(MOD,PASS),UNIT=SYSDA,
// SPACE=(800,(500,500))
//SYSIN DD DSN=&&SYSCIN,DISP=(OLD,DELETE)
//SYSUT1 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA
//SYSUT2 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA
//SYSUT3 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA
//SYSUT4 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA
//SYSUT5 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA
//SYSUT6 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA
//SYSUT7 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA
//********************************************************************
//* 4. PRELINK
//********************************************************************
//PLKED EXEC PGM=EDCPRLK,COND=(4,LT,COB),REGION=0M
//STEPLIB DD DISP=SHR,DSN=CEE.SCEERUN
// DD DISP=SHR,DSN=DSN810.SDSNEXIT
// DD DISP=SHR,DSN=DSN810.SDSNLOAD
//SYSMSGS DD DISP=SHR,
// DSN=CEE.SCEEMSGP(EDCPMSGE)
//SYSIN DD DSN=&&LOADSET,DISP=(OLD,DELETE)
//SYSMOD DD DSN=&&PLKSET,UNIT=SYSDA,DISP=(MOD,PASS),
// SPACE=(32000,(30,30)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//SYSDEFSD DD DUMMY
//SYSOUT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSTERM DD SYSOUT=*
//********************************************************************
//* 5. LINKEDIT
//********************************************************************
//LKED EXEC PGM=IEWL,PARM='LIST,XREF',REGION=0M,
// COND=(4,LT,PLKED)
//SYSLIB DD DISP=SHR,DSN=CEE.SCEELKED
// DD DISP=SHR,DSN=DSN810.SDSNLOAD
// DD DISP=SHR,DSN=DSN810.SDSNEXIT
// DD DISP=SHR,DSN=CICSTS23.CICS.SDFHLOAD
//*SYSLMOD DD DISP=SHR,DSN=SYSFAN.CICS.LOAD(LOGON2)
//SYSLMOD DD DISP=SHR,DSN=SYSFAN.CICS.LOAD(CURDCI01)
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD SPACE=(1024,(50,50)),UNIT=SYSDA
//SYSLIN DD DSN=&&PLKSET,DISP=(OLD,DELETE)
// DD DDNAME=SYSIN
//CICSLOAD DD DSN=CICSTS23.CICS.SDFHLOAD,DISP=SHR
//SYSIN DD *
INCLUDE CICSLOAD(DSNCLI)
MODE RMODE(ANY)
NAME CURDCI01(R)
//********************************************************************
//* 6. DB2 BIND
//********************************************************************
//BIND EXEC PGM=IKJEFT01,DYNAMNBR=20,COND=(4,LT,LKED)
//STEPLIB DD DSN=DSN810.SDSNLOAD,DISP=SHR
//DBRMLIB DD DISP=SHR,DSN=SIDCOBO.DB2.DBRM
//SYSUDUMP DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
SET CURRENT SQLID = 'SIDCOBO';
GRANT BIND, EXECUTE ON PLAN CURDCI01 TO PUBLIC;
//SYSTSIN DD *
DSN SYSTEM(DB8G)
BIND PACKAGE (packname) MEMBER(XXXXXXXX)- instead of XXXXXXXX here you can put the program name
ACT(REP) ISO(CS) ENCODING(EBCDIC) OWNER(usename) QUALIFIER(username)-
CURRENTDATA(NO) VALIDATE(BIND)
BIND PLAN([b]YYYYYYYY[/b]) PKLIST(packname.*) - instead of YYYYYYYY i used as plan name my programname
ACT(REP) ISO(CS) ENCODING(EBCDIC) OWNER(username) QUALIFIER(username)-
CURRENTDATA(NO) VALIDATE(BIND)
END
/*
The compile/linkedit went preatty well, BUT, the transaction was abending.
Then, i read a lot and "found" that i should define a DB2CONNECTION, and DB2ENTRY, in order to make it go.
the DB2CONNECTION looks like
- Code: Select all
OBJECT CHARACTERISTICS CICS RELEASE = 0630
CEDA View DB2Conn( connection name )
DB2Conn : connection name
Group : group name
DEscription :
CONNECTION ATTRIBUTES
CONnecterror : Sqlcode Sqlcode | Abend
DB2Groupid :
DB2Id : DB8G
MSGQUEUE1 : CDB2
MSGQUEUE2 :
MSGQUEUE3 :
Nontermrel : Yes Yes | No
PUrgecycle : 00 , 30 0-59
Resyncmember : Yes Yes | No
SIgnid :
STANdbymode : Reconnect Reconnect | Connect | Noconnect
STATsqueue : CDB2
TCblimit : 0012 4-2000
THREADError : N906D N906D | N906 | Abend
POOL THREAD ATTRIBUTES
ACcountrec : None None | TXid | TAsk | Uow
AUTHId :
AUTHType : Userid Userid | Opid | Group | Sign | TErm
| TX
DRollback : Yes Yes | No
+ PLAN : [b]YYYYYYYY[/b]
PLANExitname :
PRiority : High High | Equal | Low
THREADLimit : 0003 3-2000
THREADWait : Yes Yes | No
COMMAND THREAD ATTRIBUTES
COMAUTHId :
COMAUTHType : Userid Userid | Opid | Group | Sign | TErm
| TX
COMThreadlim : 0001 0-2000
The DB2Entry looks like
- Code: Select all
OBJECT CHARACTERISTICS CICS RELEASE = 0630
CEDA View DB2Entry( entry name )
DB2Entry : entry name
Group : group name
DEscription :
THREAD SELECTION ATTRIBUTES
TRansid : transaction name
THREAD OPERATION ATTRIBUTES
ACcountrec : None None | TXid | TAsk | Uow
AUTHId :
AUTHType : Userid Userid | Opid | Group | Sign | TErm
| TX
DRollback : Yes Yes | No
PLAN : [b]YYYYYYYY[/b]
PLANExitname :
PRIority : High High | Equal | Low
PROtectnum : 0000 0-2000
THREADLimit : 0000 0-2000
THREADWait : Pool Pool | Yes | No
and after all that.....
it still didn't work
so I went to the CEMT cics transaction and inquired about :
CEMT I DB2CONN
i observed that the Connectst atributte was as disconnected.
I changed it to connected and.....
Surprise! My transaction was OK.
Don't forget, after defining objects you have to Install them.
I hope that's usefull for you