1、大型主机应用上的开放系统和中间件,第9章 应用CTG实现J2EE应用与CICS互连的案例分析,9.1测试CTG与CICS服务器的连接,1.得到CTG的安装软件。可以从以下地址得到CTG的安装软件(需用户名和密码):http:/ V7.2,并使用CTG的Windows版本。2.设置Windows用户环境变量。添加CICSCLI,值为CTG HOMEbinctg.ini,在本章基于的系统中,CICSCLI的值为:C:Program FilesIBMCICS Transaction Gatewaybinctg.ini。如下图9-1所示:,图9-1 设置CICSCLI环境变量,注:ctg.ini是一个
2、配置文件。当CTG安装好后并不存在,但是当用户使用安装好后在Windows开始菜单出现的CTG配置工具进行CTG配置并保存时,ctg.ini就自动生成在上述路径的bin目录中,并且所有配置信息都加到ctg.ini中。或者我们也可以在上述路径的bin目录中手工创建一个空的ctg.ini文件,后续打开CTG配置工具配置后同样将所有配置信息都加到ctg.ini中。3.在Windows开始菜单中找到CTG配置工具并打开。注:如果CTG配置工具无法正常打开,并得到一个“Cant find JVM”错误,那么在dos命令行运行如下命令对CTG配置工具进行设置:ctgjava -s=“CTG_HOMEjvm
3、15bin”。在本章基于的系统中,我们用:ctgjava -s= C:Program FilesIBMCICS Transaction Gatewayjvm15bin。,4.创建一个CICS Server。创建CICS Server的样例图如下图9-2所示:其中我们需要填写或选择的是:服务器名称,网络协议,主机名或IP地址和端口号。服务器名称:CICS服务器连接用的名称,名称可任意,在我们的样例中填的是CTGTEST1。网络协议:与CICS服务器进行通信时的协议,在我们的样例中选的是TCP/IP。主机名或IP地址:CICS服务器监听的z/OS系统的主机名或IP地址,在我们的样例中填的是10.6
4、0.37.130。端口号:基于TCP/IP服务的ECI所监听的端口号,在我们的样例中填的是9031。注意在学生分组做练习时,此处每个人的端口号必须是唯一的,否则会发生端口冲突的情况。,图9-2 创建CICS Server的样例图,5.在Gateway守护程序部分配置TCP。这将用于CTG远程连接模式。样例图如下图9-3所示:在上图中,首先点击启用协议处理程序多选框,然后填写端口号,此处填2035。其他设置用缺省。注意在学生分组做练习时,此处每个人的端口号必须是唯一的,否则会发生端口冲突的情况。不过需要指出的是,本书后续的练习将CTG远程连接模式省略,只论述CTG的本地连接模式。,图9-3 在G
5、ateway守护程序部分配置TCP,6在文件菜单上面选择“保存”,将上述设置保存到ctg.ini文件中。7.登录CICS Region,假定之前组TJD0211已经创建好,运行如下命令创建一个TCPIPSERVICE资源:CEDA DEF TCPIPS(CYG211) GROUP(TJD0211)注意:(1)组的名称和TSO用户名相同;(2)TCPIPSERVICE的名称CYG211后三位和其对应的TSO用户名TJD0211的后三位相同。这些都是为了方便实现读者或学生分组做练习所约定的规则。运行以上命令后,还需要进到CYG211中进行如下设置(部分)。其中粗体项表示必填参数。,注意:(1)此处
6、TCPIPSERVICE中的POrtnumber必须是可用的(即没有其他应用占用该端口),且与CTG配置工具中CICS服务器CTGTEST1的端口号相一致。(2)此处TCPIPSERVICE中的PROtocol必须设置成Eci。(3)特别要注意的是:TCPIPSERVICE的attachsec属性缺省为verify,此处应该改成local,否则在后续的9.2和9.3练习中最后将得不到预想的结果。,8.安装并检查TCPIPSERVICE。在CICS Region里输入如下命令安装TCPIPSERVICE:CEDA INS TCPIPSERVICE(CYG211) G(TJD0211)在CICS
7、Region里输入如下命令检查TCPIPSERVICE的使用情况:CEMT I TCPIPSERVICE(CYG211)结果如下:其中Con(0000)表示现在还没有连接连到TCPIPSERVICE资源。,9.启动CICS服务器。在dos命令行运行如下命令启动CICS服务器:cicscli -s=CTGTEST1 运行结果如下:在dos命令行运行命令cicscli -l 查看CICS服务器CTGTEST1的启动情况:其中最后一行的“可用”表示CTG已经连接到了CICS。,以下是dos命令行环境下停止CICS服务器的命令:cicscli -x=CTGTEST1以下是dos命令行环境下重启客户机守
8、护程序的命令,在CTG配置工具对配置进行更改时(也即ctg.ini文件发生改变时)需要使用:cicscli -j10.在CICS Region里再次运行CEMT I TCPIPSERVICE(CYG211),可以看到Con变成了0001,表示CTG的一个连接已经连到了CICS。11.如果以上的第9步发生错误,可以打开C:Program FilesIBMCICS Transaction Gatewaybincicscli.log查看错误发生的细节,从而找出问题所在。注意cicscli.log的最新条目在文件的最下部。至此,CTG与CICS服务器的一个连接已经建立起来了。,9.2 使用CTG实现J
9、ava客户端应用程序与CICS的互连,1.启动一个IDE工具来开发Java客户端应用程序,在本书中我们使用的是RAD(Rational Application Developer) 8.0。2.在RAD 8.0中创建一个新的Java Project CTGdemo。过程略。3.在Java Project CTGdemo 中的src目录下创建一个包com.ibm.ctg.samples.eci。过程略。4.在包com.ibm.ctg.samples.eci中导入一个类CTGdemo.java(或者从头编写)。,CTGDemo.java的代码如右所示(1):,CTGDemo.java的代码如右所示
10、(2):,CTGDemo.java的代码如右所示(3):,CTGDemo.java的代码如右所示(4):,CTGDemo.java的代码如右所示(5):,CTGDemo.java的代码如右所示(6):,CTGDemo.java的代码如右所示(7):,CTGDemo.java的代码如右所示(8):,CTGDemo.java的代码如右所示(9):,上述程序的功能非常简单:系统首先显示定义好的所有CICS服务器,用户选择一个服务器,按回车后发送ECI Request给主机端,主机端反馈当前的日期和时间给客户端。注意:(1)类CTGdemo.java中strProgram=EC211中的EC211后三
11、位和其对应的TSO用户名TJD0211的后三位相同。这些都是为了方便实现读者或学生分组做练习所约定的规则。(2)类CTGdemo.java中的strProgram=EC211是写死在程序里的,这必须与后续第12步中主机源程序中PROGRAM的名字相一致。(3)类CTGdemo.java中的int iPort = 2035;中的2035必须与9.1中第5步中配置的端口号相同。,5.在包com.ibm.ctg.samples.eci中导入另一个类EBCDICtoASCII.java(或者从头编写),由于EBCDICtoASCII.java不是本练习所要表达的核心内容,限于篇幅,在此略去代码。6.此
12、时可以看到CTGdemo.java中有很多错误,解决方案是:右击Java Project CTGdemo,选中“属性”。在弹出框的左侧选中“Java构建路径”,在右侧选中“库”。如下图9-4所示:,图9-4 解决CTGdemo.java中错误的步骤图,7.点击“添加外部Jar”按钮,寻找与本练习相关的两个jar文件ctgclient.jar和ctgserver.jar,这两个文件在C:Program FilesIBMCICS Transaction Gatewayclasses目录下,选择该目录后,系统出现如下对话框,如下图9-5所示:,图9-5解决CTGdemo.java中错误的步骤图(2)
13、,8.选择ctgclient.jar和ctgserver.jar,点击“打开”按钮后,“构建路径中的JAR和类文件夹”便出现了这两个jar文件。图略。9.继续点击“确定”按钮后,CTGdemo.java中的所有错误都消失了。自此,Java客户端的程序已经开发完毕。10.下面要在主机环境中开发服务端程序。在本课程基于的系统中,服务端程序存放于TJD0211.CICS.SOURCE(EC211)中,假定TJD0211.CICS.SOURCE数据集都已经事先建立好。,EC211的源代码如右所示(1):,EC211的源代码如右所示(2):,上述程序的功能非常简单:主机端接受用户对CICS服务器的选择和
14、ECI Request请求,反馈当前的日期和时间给客户端。,EC211的源代码如右所示(3):,11.翻译、编译、链接上述源代码的JCL代码同前面第6章中CICS翻译、COBOL编译、链接COBOL+CICS程序的JCL非常类似,仅仅需要将有C0O11T1的地方替换成EC211,故在此略。12.提交上一步的JCL成功(MAXCC=4表示提交成功)后,在CICS Region里输入如下命令定义PROGRAM资源:CEDA DEF PROGRAM(EC211) G(TJD0211)13.在CICS Region里输入如下命令安装PROGRAM资源:CEDA INS PROGRAM(EC211) G
15、(TJD0211)自此,主机端的程序已经开发完毕,并在CICS Region里定义和安装完毕。,14.此时可以测试Java应用程序了。注意本书仅测试本地模式,远程模式略。点中CTGdemo.java,点击菜单:运行-运行方式-Java应用程序,如下图9-6所示:15.系统出现如右图9-7所示的程序界面:,图9-6 运行CTGdemo.java应用程序,图9-7 CTGdemo.java应用程序界面,16.在Choose Server to connect to, or q to quit:下面输入1,选择名为LOCAL的CICS服务器,按回车,系统反馈如下图9-8所示的日期和时间:自此,我们完
16、成了使用CTG实现Java客户端应用程序与CICS的互连的全部练习步骤。,图9-8 CTGdemo.java应用程序运行结果,9.3 使用CTG实现WAS应用程序与CICS的互连,1.安装WebSphere Application Server V7.0 for Windows,本书用的是中文版。安装步骤略。2.启动WAS服务器,如下图9-9所示:这需要几分钟的时间将WAS服务器启动起来。,图9-9 WAS服务器的启动,3.WAS服务器启动起来以后,可以打开WAS管理控制台了,如下图9-10所示:4.如果一切正常,将显示下图9-11所示的登录界面(假定WAS安装时没有选择用户名和密码项):5.
17、在用户标识随意输入一个用户名(在此不要求做用户名和密码的验证),点击“登录”按钮进入下一步。,图9-10 打开WAS管理控制台,图9-11 WAS登录界面,6.创建资源适配器。资源适配器是一个定义在J2EE连接器架构(JCA)规范中的归档文件的格式。点击:资源资源适配器资源适配器,如下图9-12所示:,图9-12 在WAS中创建资源适配器(1),7.点击“安装RAR”按钮,选择“本地文件系统”,点击“浏览”按钮,选择资源适配器所在的路径:C:Program FilesIBMCICS Transaction Gatewaydeployable cicseci.rar,如下图9-13所示:,图9-
18、13 在WAS中创建资源适配器(2),8.点击“下一步”按钮,再点击“确认”按钮保存,选择保存到主配置。自此,资源适配器已经被安装起来。如下图9-14所示:,图9-14 在WAS中创建资源适配器(3),9.创建J2C连接工厂。我们将为J2C资源适配器在服务器配置中增加一个连接工厂。连接工厂提供到企业信息系统(EIS)的连接。点击我们刚刚创建好的ECIResourceAdapter,再在右侧“其他属性”中点击 “J2C 连接工厂”,如下图9-15所示(部分):,图9-15 WAS中的ECIResourceAdapter界面,10.出来新页面后,点击“新建”按钮,在如下的页面中输入“名称”和“JN
19、DI名称”的值,如下图9-16所示(部分)。其中Java命名和目录接口(JNDI)是Java平台的一部分,它提供基于Java技术的应用程序到多个命名和目录服务的一个统一接口。11.点击“确定”按钮保存,选择保存到主配置,结果如下图9-17所示(部分):以上为WAS应用程序与CICS的互连配置了本地模式,远程模式在此略。,图9-16 新建JNDI,图9-17 新建JNDI的结果,12.下面配置本地模式的J2C连接工厂con1。点击con1,然后在右侧“其他属性”中点击 “定制属性”。如下图9-18所示(部分):,图9-18 配置J2C连接工厂,13.在ConnectionURL、PortNumb
20、er和ServerName中分别输入如下图9-19界面中的值:,图9-19 设置J2C连接工厂con1的参数值,14.设置完成后,选择保存到主配置。需要注意的是,资源相关的信息发生改动后,WAS服务器必须重启来使得更改生效,因此在此必须首先停止WAS服务器,再启动WAS服务器。步骤略。自此,本地模式的J2C连接工厂配置完毕。15.下面介绍使用RAD来编写本系统要用到的JSP和Servlet代码。本系统主要涉及的三个文件分别是index.jsp,BeesCTGServlet2.java和BeesCTGSuccess.jsp。其中index.jsp显示系统的主界面,BeesCTGServlet2.
21、java是实现程序主处理逻辑的Servlet,BeesCTGSuccess.jsp将最后响应的结果展示给用户。我们假定读者具有一定的J2EE程序的开发基础,知道如何在RAD中编写JSP和Servlet代码。,JSP index.jsp的代码如右所示:,Servlet BeesCTGServlet2.java的代码如右所示(1):,Servlet BeesCTGServlet2.java的代码如右所示(2):,Servlet BeesCTGServlet2.java的代码如右所示(3):,Servlet BeesCTGServlet2.java的代码如右所示(4):,Servlet BeesCT
22、GServlet2.java的代码如右所示(5):,Servlet BeesCTGServlet2.java的代码如右所示(6):,Servlet BeesCTGServlet2.java的代码如右所示(7):,Servlet BeesCTGServlet2.java的代码如右所示(8):,JSP的界面效果和Servlet的程序逻辑见下面的练习步骤。,Servlet BeesCTGServlet2.java的代码如右所示(9):,注意:(1)上述BeesCTGServlet2.java代码中,getConnection()函数在源代码中有实现,其目的就是为了取得WAS到CICS的连接。而真正发
23、送ECI Request请求的函数是handleCommareaInteraction(inputData)。从handleCommareaInteraction函数中我们可以看出其主要作用就是为了组装ECI Request请求,同时将COMMAREA作为参数写入ECI Request请求中。(2)上述BeesCTGServlet2.java代码中,linkProg = “VSAM211 ”中的VSAM211后三位和其对应的TSO用户名TJD0211的后三位相同,这些都是为了方便实现读者或学生分组做练习所约定的规则。并且此处的VSAM211必须与后续第40步中主机端C程序的程序名以及第42步中
24、CICS Region里定义的PROGRAM的名称相同。(3)在这个CTG的练习中,没有用到EJB,只是用到了Servlet,通过前端网页接受数据,然后将数据封装成ECI request直接通过CTG发送给CICS Region。如果在这中间不是单纯的用Servlet,而是加上了EJB的话,其实最终的原理还是相同,也是通过Servlet将ECI request通过CTG发送给CICS region。而EJB的作用就是为了更好地管理Servlet,属于J2EE范畴,和后台对COMMAREA的处理没有关系。(4)除了开发BeesCTGServlet2.java外,本练习还会用到BeesCTGErr
25、or.jsp,BeesCTGStack.jsp和JavaStringRecord.java。但由于这三个文件都不是本练习所要表达的核心内容,限于篇幅,在此略去代码。,BeesCTGSuccess.jsp的代码如右所示:,16.此时BeesCTGServlet2.java会有很多错误,要解决这些错误,我们需要在BeesCTGServletWeb Project属性中的“Java构建路径”中的“库”标签中导入外部JAR文件cicsj2ee.jar和j2ee.jar,具体导入步骤同9.2中第6-9步的步骤相同。在此略。注意:(1)当本课程基于的CICS Transaction Gateway 7.2
26、安装好以后,我们可以在C:Program FilesIBMCICS Transaction Gatewayclasses找到cicsj2ee.jar文件。(2)当本课程基于的RAD8.0安装好以后,我们可以在C:Program FilesIBMSDPruntimesbase_v8_stublib下找到j2ee.jar文件。,17.上述代码编写好并作相应的设置以后,由RAD打包生成BeesCTGServlet.ear。步骤略。自此,Java客户端程序已经编写完毕。18.下面在WAS上安装上一步打好包的程序BeesCTGServlet.ear。打开:应用程序-应用程序类型,点击“WebSphere
27、 企业应用程序”,出现如下图9-20所示的界面:,图9-20 WebSphere 企业应用程序页面,19.点击“安装”按钮,出现如下图9-21所示的界面,采用下图的缺省设置,点击“浏览”按钮,选择要安装的BeesCTGServlet.ear文件,该BeesCTGServlet.ear文件由前面第17步生成。,图9-21 安装BeesCTGServlet.ear文件(1),20.接下来的安装步骤比较简单,基本上每一步均用缺省设置,其中步骤3: 将资源引用映射至资源需要做些设置,页面如下图9-22所示:,图9-22 安装BeesCTGServlet.ear文件(2),21.点击“浏览”按钮,选择之
28、前配置好的J2C连接工厂con1。安装完成后保存到主配置。图略。22. BeesCTGServlet.ear安装完毕后,BeesCTGServlet程序还没有启动,如下图9-23所示:,图9-23 BeesCTGServlet.ear文件安装完毕的界面,23.选中BeesCTGServlet左侧的复选框,点击“启动”按钮启动该程序,图略。自此,WAS客户端程序安装完成并启动。24.接下来需要配置CTG的本地模式。参考前面的练习,界面如下图9-24所示:,图9-24 配置CTG的本地模式,25.为CTG的CICS服务器定义并安装TCPIPSERVICE。在CICS Region里运行如下命令定义
29、TCPIPSERVICE:CEDA DEF TCPIPS(CTG211) GROUP(TJD0211)运行以上命令后,还需要进到CYG211中进行如下设置(部分)。其中粗体的表示必填参数。注意:(1)此处TCPIPSERVICE中的POrtnumber必须是可用的(即没有其他应用占用该端口),且与CTG配置工具中CICS服务器LOCAL的端口号相一致。(2)此处TCPIPSERVICE中的PROtocol必须设置成Eci。(3)特别要注意的是:TCPIPSERVICE的attachsec属性缺省为verify,此处应该改成local,否则在本节练习中最后将得不到预想的结果。在CICS Regi
30、on里运行如下命令安装TCPIPSERVICE:CEDA INS TCPIPSERVICE(CYG211) G(TJD0211),26.可以在CICS Region里运行如下命令查看TCPIPSERVICE的安装情况:CEMT I TCPIPS(CTG211)结果如下: 自此,CICS服务器和TCPIPSERVICE都定义并安装完毕。27.下面在主机端定义VSAM数据集TJD0211.CTG.ACCOUNT并导入数据的JCL如下(代码见下两页):28.在主机端定义VSAM数据集TJD0211.CTG.USERINFO并导入数据的JCL如下(代码见接下来的两页) :,VSAM数据集TJD0211
31、.CTG.ACCOUNT的定义及数据导入(1),VSAM数据集TJD0211.CTG.ACCOUNT的定义及数据导入(2),VSAM数据集TJD0211.CTG.USERINFO的定义及数据导入(1),VSAM数据集TJD0211.CTG.USERINFO的定义及数据导入(2),29.在DITTO中查看VSAM数据集TJD0211.CTG.ACCOUNT的内容。用TJD0211登录z/OS后,在ISPF主菜单输入M.7,然后选择:1. Browse data3. VSAM data,如下图9-25所示:30.在Data set name处输入要查看的VSAM数据集的名称,CI access用缺
32、省的NO,如下图9-26所示:,图9-25 查看VSAM数据集的内容(1),图9-26 查看VSAM数据集的内容(2),31.按回车,可以看到VSAM数据集TJD0211.CTG.ACCOUNT的内容如下图9-27所示:32.查看VSAM数据集TJD0211.CTG.USERINFO内容的方法和前面TJD0211.CTG.ACCOUNT的相同,故略。自此,主程序中要用到的两个VSAM数据集都建立起来并导入了数据。,图9-27 查看VSAM数据集的内容(3),33.在CICS服务端定义VSAM FILE ACT211。在CICS Region里输入如下命令:CEDA DEF FILE(ACT21
33、1) G(TJD0211)定义好以后,需要修改VSAM FILE ACT211的部分属性,如下所示,其中粗体的表示必填项。,34.在CICS Region里安装VSAM FILE ACT211。在CICS Region里输入如下命令:CEDA INS FILE(ACT211) G(TJD0211)35.在CICS Region里运行如下命令将ACT211打开:CEMT I FILE(ACT211)结果如下:将Clo替换成Ope,回车,将VSAM数据集ACT211打开。,36.在CICS服务端定义VSAM FILE USR211。在CICS Region里输入如下命令:CEDA DEF FILE
34、(USR211) G(TJD0211)定义好以后,需要修改VSAM FILE USR211的部分属性,如下所示,其中粗体的表示必填项。,37.在CICS Region里安装VSAM FILE USR211。在CICS Region里输入如下命令:CEDA INS FILE(USR211) G(TJD0211)38.在CICS Region里运行如下命令将USR211打开:CEMT I FILE(USR211)结果如下:将Clo替换成Ope,回车,将VSAM FILE USR211打开。,39.上述两个VSAM FILE定义好之后,还需要做一件重要的工作。因为CICS 没有访问上述两个VSAM数
35、据集的权限,也即CICS 内部用户START2对TJD0211.CTG.ACCOUNT 和TJD0211.CTG.USERINFO只有NONE权限而没有UPDATE权限,需要对上述两个VSAM数据集(此处用Generic数据集的形式如:TJD0211.*)赋予权限。授权方法如下:用管理员P390用户登录z/OS,在ISPF主菜单输入6,进入ISPF Command Shell界面,提交如下语句进行上述授权:授权以后,在ISPF Command Shell界面输入:LD DA(TJD0211.*) ALL 查看授权的情况。自此,CICS Region里的两个VSAM FILE建立、安装好并授予了
36、权限。40.下一步需要在主机端编写C程序TJD0211.CICS.SOURCE(VSAM211)。该程序由C+CICS+VSAM组成,实现了查询账户余额、向账户中存款、到账户中取款三大功能,由主函数、查询余额函数、存款函数和取款函数四个函数组成。,TJD0211.CICS.SOURCE(VSAM211)的代码如右所示(1):,TJD0211.CICS.SOURCE(VSAM211)的代码如右所示(2):,TJD0211.CICS.SOURCE(VSAM211)的代码如右所示(3):,TJD0211.CICS.SOURCE(VSAM211)的代码如右所示(4):,TJD0211.CICS.SOU
37、RCE(VSAM211)的代码如右所示(5):,TJD0211.CICS.SOURCE(VSAM211)的代码如右所示(6):,TJD0211.CICS.SOURCE(VSAM211)的代码如右所示(7):,TJD0211.CICS.SOURCE(VSAM211)的代码如右所示(8):,注意:(1)上述程序用的开发语言是C而不是COBOL,其实要想实现使用CTG实现WAS应用程序与CICS的互连,在主机端具体采用哪一个编程语言是没有关系的,不管是COBOL还是C,都可以接受COMMAREA信息,区别只是,COBOL中叫做DFHCOMMAREA,而C中是用以下语句实现:其中ctg_input这个
38、结构就是COMMAREA。(2)上述程序中有四处char file_account?(8?) = ACT211 ;,有一处char file_userinfo?(8?) = USR211 ;。其中的ACT211和USR211必须分别与前面第33步和第36步中定义的VSAM FILE的名称相同。,TJD0211.CICS.SOURCE(VSAM211)的代码如右所示(9):,41.翻译、编译、链接上述C+CICS+VSAM程序的JCL如下:其中该JCL要用到的过程CICSTS23.CICS.SDFHPROC(DFHYITDL)的代码略。,42.提交第41步中的JCL成功(MAXCC=4)后,在C
39、ICS Region里定义并且安装CICS服务端处理程序 VSAM211。在CICS Region里输入如下命令定义VSAM211:CEDA DEF PROG(VSAM211) G(TJD0211)在CICS Region里输入如下命令安装VSAM211:CEDA INS PROG(VSAM211) G(TJD0211)自此,主机端的C程序编写、提交成功并在CICS Region里定义和安装成功。43.下面用本地模式启动CTG服务器,在dos环境下操作如下:,44.现在可以在Web端测试我们之前编写的客户端JSP、Servlet程序和主机端的C程序了。在Web浏览器中输入以下URL(如果908
40、0端口被占用,可以尝试用9081端口):http:/localhost:9080/BeesCTGServletWeb/如果一切正常,Web浏览器将显示如下图9-28所示的JSP页面:,图9-28 客户端JSP页面,45.测试程序功能。在Operation Type处选择Query,Username处输入STUEAA1,Money处留空,点击“Commit”按钮,如果一切运行正常,系统将出现如下图9-29所示的结果界面,表示整个程序运行成功:,图9-29 结果页面,46.上述演示了账户余额查询功能,存款和取款的功能演示略。自此,我们完成了使用CTG实现WAS应用程序与CICS的互连的全部练习步骤。,