panjianm 发表于 2016-11-18 10:34:11

虚拟机中CICS访问DB2资源

  CICS访问的资源必须在CICS中必须要定义安装。因此,在CICS中访问DB2资源时要定义安装的资源有如下几个:
  (1)DB2CONN:定义CICS与DB2的连接,一个CICS Region中只能定义一个DB2CONN (2)DB2Entry:访问DB2的入口 (3)DB2TRANS:使用DB2资源的交易
  具体步骤如下:
  第一步:启动DB2,测试DB2是否可用,比如,自己随便建立一个表,然后写数据,使用

  第二步:在测试DB2正常时,在CICS中嵌入DB2代码:


  第三步:编译CICS-DB2 程序:
  1、PROC程序
  //DB2CICS PROC WSPC=500,
  // SUFFIX=1$,
  // INDEX='DFH320.CICS',
  // PROGLIB='DFH320.CICS.SDFHLOAD',
  // DSCTLIB='DFH320.CICS.SDFHCOB',
  // AD370HLQ='IGY340',
  // LE370HLQ='CEE',
  // DB2HLQ='DSN910',
  // DSNID='DB9G',
  // OUTC=A,
  // REG=4M,
  // LNKPARM='LIST,XREF',
  // STUB='DFHEILID',
  // LIB='SDFHSAMP',
  // WORK=SYSDA,
  // DBRMLIB=,
  // CPYLIB=,
  // COBLIB=,
  // COBMEM=,
  // DBRMMEM=&COBMEM
  //* PRECOMPILE SQL STATEMENT
  //PC EXEC PGM=DSNHPC,PARM='HOST(IBMCOB)'
  //DBRMLIB DD DSN=&DBRMLIB.(&DBRMMEM),DISP=SHR
  //STEPLIB DD DISP=SHR,DSN=&DB2HLQ..&DSNID..SDSNEXIT
  // DD DISP=SHR,DSN=&DB2HLQ..SDSNLOAD
  //SYSCIN DD DSN=&&DSNHOUT,DISP=(MOD,PASS),UNIT=3390,
  // SPACE=(800,(&WSPC,&WSPC))
  //SYSLIB DD DISP=SHR,DSN=&CPYLIB.
  // DD DISP=SHR,DSN=&COBLIB.
  //SYSPRINT DD SYSOUT=*
  //SYSTERM DD SYSOUT=*
  //SYSUDUMP DD SYSOUT=*
  //SYSUT1 DD SPACE=(800,(&WSPC,&WSPC),,,ROUND),UNIT=3390
  //SYSUT2 DD SPACE=(800,(&WSPC,&WSPC),,,ROUND),UNIT=3390
  //SYSIN DD DISP=SHR,DSN=&COBLIB.(&COBMEM.)
  //* TRANSLATE CICS STATEMENT
  //TRN EXEC PGM=DFHECP&SUFFIX,
  // PARM='COBOL3',
  // REGION=&REG
  //STEPLIB DD DSN=&INDEX..SDFHLOAD,DISP=SHR
  //SYSPRINT DD SYSOUT=&OUTC
  //SYSIN DD DISP=SHR,DSN=&&DSNHOUT
  //SYSPUNCH DD DSN=&&SYSCIN,
  // DISP=(,PASS),UNIT=&WORK,
  // DCB=BLKSIZE=400,
  // SPACE=(400,(400,100))
  //* COMPILE COBOL
  //COB EXEC PGM=IGYCRCTL,REGION=&REG,
  // PARM='NODYNAM,LIB,OBJECT,RENT,RES,APOST,MAP,XREF'
  //STEPLIB DD DSN=&AD370HLQ..SIGYCOMP,DISP=SHR
  //SYSLIB DD DSN=&DSCTLIB,DISP=SHR
  // DD DSN=&INDEX..SDFHCOB,DISP=SHR
  // DD DSN=&INDEX..SDFHMAC,DISP=SHR
  // DD DSN=&INDEX..SDFHSAMP,DISP=SHR
  //SYSPRINT DD SYSOUT=&OUTC
  //SYSIN DD DSN=&&SYSCIN,DISP=(OLD,DELETE)
  //SYSLIN DD DSN=&&LOADSET,DISP=(MOD,PASS),
  // UNIT=&WORK,SPACE=(80,(250,100))
  //SYSUT1 DD UNIT=&WORK,SPACE=(460,(350,100))
  //SYSUT2 DD UNIT=&WORK,SPACE=(460,(350,100))
  //SYSUT3 DD UNIT=&WORK,SPACE=(460,(350,100))
  //SYSUT4 DD UNIT=&WORK,SPACE=(460,(350,100))
  //SYSUT5 DD UNIT=&WORK,SPACE=(460,(350,100))
  //SYSUT6 DD UNIT=&WORK,SPACE=(460,(350,100))
  //SYSUT7 DD UNIT=&WORK,SPACE=(460,(350,100))
  //* COPYLINK
  //COPYLINK EXEC PGM=IEBGENER,COND=(7,LT,COB)
  //SYSUT1 DD DSN=&INDEX..&LIB(&STUB),DISP=SHR
  //SYSUT2 DD DSN=&&COPYLINK,DISP=(NEW,PASS),
  // DCB=(LRECL=80,BLKSIZE=400,RECFM=FB),
  // UNIT=&WORK,SPACE=(400,(20,20))
  //SYSPRINT DD SYSOUT=&OUTC
  //SYSIN DD DUMMY
  //* LINK-EDITED
  //LKED EXEC PGM=IEWL,REGION=&REG,
  // PARM='&LNKPARM',COND=(5,LT,COB)
  //DB2LOAD DD DSN=&DB2HLQ..SDSNLOAD,DISP=SHR
  //SYSLIB DD DSN=&INDEX..SDFHLOAD,DISP=SHR
  // DD DSN=&LE370HLQ..SCEELKED,DISP=SHR
  //SYSLMOD DD DSN=&PROGLIB,DISP=SHR
  //SYSUT1 DD UNIT=&WORK,DCB=BLKSIZE=1024,
  // SPACE=(1024,(200,20))
  //SYSPRINT DD SYSOUT=&OUTC
  //SYSLIN DD DSN=&&COPYLINK,DISP=(OLD,DELETE)
  // DD DSN=&&LOADSET,DISP=(OLD,DELETE)
  // DD DDNAME=SYSIN
  2、调用PROC的JCL程序:
  //IBMUSERA JOB NOTIFY=&SYSUID,MSGLEVEL=(1,1)
  //MYPROC JCLLIB ORDER=(CBK.A3.UTL) PROC存放的数据集
  //COMLINK1 EXEC DB2CICS, PROC的NAME
  // COBLIB='CBK.A3.SRC', 要编译的COBOL源程序的存放数据集
  // PROGLIB='CBK.A3.LOD', 生成的可执行文件的数据集
  // DBRMLIB='CBK.A3.DB2.DBRM', 存放DB2 DBRM的数据集
  // CPYLIB='CBK.A3.DB2.INCLUDE', 用DCLGEN生成的DB2文件的位置
  // DSCTLIB='CBK.A3.CPY', MAP 逻辑映像位置
  // COBMEM=DELETEI COBOL 源程序名
  //LKED.SYSIN DD * DSNHADDR和DSNHADD2是两个在编译时必
  INCLUDE DB2LOAD(DSNHADDR) 须include进来的东西所在库由DB2CICS过程
  INCLUDE DB2LOAD(DSNHADD2) 中的DB2LAOD DD语句指定
  INCLUDE SYSLMOD(DELI00) MAP 物理映像
  NAME DELETEI(R) COBOL load 模块名
  /*
  /***************BING DB2********/
  //BIND EXEC PGM=IKJEFT01,DYNAMNBR=20
  //STEPLIB DD DSN=DSN910.SDSNLOAD,DISP=SHR
  //DBRMLIB DD DSN=CBK.A3.DB2.DBRM,DISP=SHR
  //SYSUDUMP DD SYSOUT=*
  //SYSTSPRT DD SYSOUT=*
  //SYSPRINT DD SYSOUT=*
  //SYSIN DD *
  SET CURRENT SQLID = 'IBMUSER';
  GRANT EXECUTE ON PLAN IBMUSER TO PUBLIC;
  //SYSTSIN DD *
  DSN SYSTEM(DB9G)
  BIND PACKAGE(IBMUSER) MEMBER(DELETEI) -
  ACT(REP) ISO(CS) ENCODING(EBCDIC) OWNER(IBMUSER) QUALIFIER(IBMUSER)
  BIND PLAN(DELETEI) OWNER(IBMUSER) -
  PKLIST (IBMUSER.* -
  CBK.A3.* -
  ) -
  ACT(REP) ISO(CS) ENCODING(EBCDIC) OWNER(IBMUSER) QUALIFIER(IBMUSER)
  END
  /*
  第三步:启动CICS并进行定义
  1、首先定义安装程序和交易:
  CEDA DEF PROG() GROUP()
  CEDA DEF TRANS() PROG() GROUP()
  CEDA INS PROG() GROUP()
  CEDA INS TRANS() GROUP(**)
  2、定义DB2CONN:DB2CONN在CICS中只能定义一次,如果重复定义会覆盖
  首先:DSNC STOP命令来停止DB2和CICS的连接

  然后:

  安装DB2CONN

  3、定义DB2ENTRY:DB2ENTRY可以定义多个,针对不同的交易,注意,DB2entry的安装只能在DB2CONN安装之后

  安装DB2ENTRY
  将DEF 改为 INS
  4、启动DSNC:
  DSNC STRT
  5、查看DB2CONN 和DB2ENTRY是否可用:
  CEMT I DB2CONN
  CEMT I DB2ENTRY
页: [1]
查看完整版本: 虚拟机中CICS访问DB2资源