开发2使用CICSAPI和ECI说课讲解

上传人:yulij****0329 文档编号:137839053 上传时间:2020-07-12 格式:PPT 页数:81 大小:535.50KB
返回 下载 相关 举报
开发2使用CICSAPI和ECI说课讲解_第1页
第1页 / 共81页
开发2使用CICSAPI和ECI说课讲解_第2页
第2页 / 共81页
开发2使用CICSAPI和ECI说课讲解_第3页
第3页 / 共81页
开发2使用CICSAPI和ECI说课讲解_第4页
第4页 / 共81页
开发2使用CICSAPI和ECI说课讲解_第5页
第5页 / 共81页
点击查看更多>>
资源描述

《开发2使用CICSAPI和ECI说课讲解》由会员分享,可在线阅读,更多相关《开发2使用CICSAPI和ECI说课讲解(81页珍藏版)》请在金锄头文库上搜索。

1、开发(2) 使用CICS API和ECI,刘睿,概要,TXSeries编程框架 TXSeries/CICS客户机程序 TXSeries服务器程序,TXSeries编程框架,基于TXSeries的三层应用开发环境,交易(Transaction),任务(Task)和逻辑处理单元(LUW)的概念,交易(Transaction):一个交易可以对应于一支或多支CICS服务器端程序的执行。交易的执行多是由终端发出的请求:在终端键入一个四位的交易ID号。在一个交易的执行过程中,可能会触发一个或多个任务的执行。CICS允许一个交易程序被很多用户同时请求执行,而交易之间互不妨碍。这个交易(Transaction

2、)的概念对应一个TD。 任务(Task):它是交易执行的一个单一实例。CICS与操作系统相结合,通过分配系统进程给每个任务,这样当一个任务处于等待状态时,操作系统可以将控制权交给另外一个任务。 逻辑处理单元(LUW, logical unit of work, also termed a unit of work)每个逻辑处理单元是一组对数据的修改。比如说在一个帐户系统中一个逻辑处理单元由更新可支付帐户,更新帐簿,创建一张支票组成。每一个逻辑处理单元所作的工作是完全独立于由其它逻辑处理单元的工作。在一个逻辑处理单元中修改的资源或是全部成功或全部失败。这个逻辑处理单元(LUW)的概念对应SYNC

3、POINT之间的代码。,Logical Unit of Work,LUW-交易中两个相邻的提交/回滚之间的处理 Server Program 可以控制LUW EXEC CICS SYNCPOINT; EXEC CICS SYNCPOINT ROLLBACK; ECI Client 可以控制LUW eci_extend_mode参数 ECI_NO_EXTEND结束一个LUW ECI_EXTENDED将LUW延续至下一次ECI调用 eci_luw_token参数 说明LUW的编号 ECI_LUW_NEW本次CALL 作为一个LUW,TRN1: ProgName = PROG1 TClass = 2

4、,使用交易分类(TClass),11个交易类 1 -10,“NONE” (默认) 交易类1-10可以限制并发运行数 TClass定义在TD stanza 建议 用户交易定义TCLass CICS交易使用NONE MaxServers = sum(ClassMaxTasks) 示例 1 instance of TRN2. Limit = 5 Allowed to run 2 instances of TRN1. Limit =1 1 allowed to run, 1 queued,TClass,Class Max Tasks,TRN1: ProgName = PROG1 TClass = 2,

5、TRN2: ProgName = PROG2 TClass = 7,设置交易分类,制作类似CPMI的交易定义,修改TClass为110。例如“LPMI”:cicsadd -r CICSNT01 -c td -m CPMI LPMI TClass=1 酌情修改RD:ClassMaxTasks (缺省:“1,1,1,1,1,1,1,1,1,1”),RD:ClassMaxTaskLim (缺省:“0,0,0,0,0,0,0,0,0,0”)。 修改ECI程序之EciParms:eci_version=ECI_VERSION_1A,EciParms:eci_tpn为新的TD名(例如“LPMI”)。#注:

6、EasyCICS使用SetTransId函数/方法。,CICS Communication Area,CICS通讯区域,由CICS 自动传递。 长度不大于32 K (32500)。 EXEC CICS ADDRESS COMMAREA。 被异步启动的交易程序通讯区域长度为0。,CICS通信区要用NULL填充,A CICS optimisation Applies to LINK and RETURN commareas,: LINK PROGRAM (abcd) COMMAREA (comm) LENGTH (500) :,: LINKAGE SECTION 01 DFHCOMMAREA PI

7、C X(500). :,abcd,Data x00,0,20,500,21,500 bytes sent,LESS DATA TRANSMITTED,20 bytes transmitted,500 bytes received,TXSeries/CICS客户机程序,CICS Client编程概述,功能 从非CICS程序的客户程序调用CICS Server交易 编程方式 External Call Interface,简称ECI 基于对Server程序(Program)的请求 通过通讯缓冲数据区(COMMAREA)与Server交换数据 ECI应用程序被Server视为发出DPL请求的对等Se

8、rver External Presentation Interface,简称EPI 基于对Server交易(Transaction)的请求 通过3270数据流与Server交换数据 EPI 应用程序被Server视为3270终端 多用于内部管理应用,External Call Interface (ECI),ECI Client程序示例 (C语言),#include ECI_PARMS EciParms; char commArea1024; memset (,ECI Client程序示例 (Java语言),byte abytCommarea = new byteiCommareaSize;

9、 javaGatewayObject = new JavaGateway(“local:”, 0); /local gateway /javaGatewayObject = new JavaGateway(“tcp:/localhost”, 2006); /remote gateway String strServer = CICS01; /strServer= “tcp:/9.181.108.101:1436”; /Use IPIC ECIRequest requestObject = new ECIRequest(ECIRequest.ECI_SYNC, strServer, TEST,

10、TEST, strProgram, null, abytCommarea, iCommareaSize, ECIRequest.ECI_NO_EXTEND, 0); int iRc = javaGatewayObject.flow(requestObject); if(requestObject.getCicsRc() = ECIRequest.ECI_NO_ERROR) System.out.print(Integer.toHexString(abytCommareai); javaGatewayObject.close();,ECI函数调用,CICS_ExternalCall cics_s

11、short_t CICSCALL CICS_ExternalCall(ECI_PARMS CICSPTR *EciParms); 实现了ECI的大部分功能 只有一个参数,称为ECI参数模块(ECI parameter block) 该模块描述了ECI调用实现的功能及输入输出的数据 CICS_EciListSystems 获得Client定义的可连接的Server名称及描述,ECI CICS_ExternalCall调用分类,CICS_ExternalCall 通过设置ECI参数模块中的eci_call_type栏位来控制调用类型。 程序执行调用(Program link calls)请求执行S

12、erver程序 同步调用 异步调用(异步调用后必须使用回复信息查询调用获得结果) 状态查询调用(Status information calls)查询Server属性及状态信息 同步调用 异步调用 回复查询调用(Reply solicitation calls)获得异步调用的结果 获得任何类型的异步调用结果 获得指定异步调用的返回结果(eci_message_qualifier),ECI CICS_ExternalCall参数设置,eci_system_nameCICS Server名称 Region Name ( RPC Client ) Client定义的Server Instance 名

13、称 ( Universal Client ) eci_userid eci_password eci_commarea 通讯数据区(线性缓冲区) 调用前存放将要传至Server的数据 调用返回后,其中存放Server传回的数据 eci_commarea_length数据区的长度 该值应设为上传和返回数据长度两者中的较大值 若上传实际数据长度小于该值,数据后的空间应以NULL字符填充 eci_call_type 调用类型,程序执行调用(Program link calls),eci_program_name请求执行的Server程序名 同步调用eci_call_type = ECI_SYNC 异

14、步调用eci_call_type = ECI_ASYNC eci_message_qualifier = xxxx (可选)标示每一个异步调用,回复查询调用时使用 , 以便获得特定的调用返回结果 eci_callback回调函数,逻辑工作单元( Logical Unit of Work ) 的管理,LUW可以由唯一一个程序执行调用构成,或通过扩展(Extend)调用由多个顺序执行的程序调用构成 eci_luw_token栏位来标识LUW eci_luw_token取值由ECI自动生成 LUW中的第一个程序调用时 , eci_luw_token应设为ECI_LUW_NEW,该调用返回后,eci_

15、luw_token中即保存了ECI生成的数值 该LUW中后续程序调用的eci_luw_token应保持该值不变 eci_extend_mode栏位LUW是否扩展、提交或回滚 ECI_NO_EXTEND ECI_EXTENDED ECI_COMMIT (不能和eci_program_name栏位同时设置) ECI_BACKOUT (不能和eci_program_name栏位同时设置),状态查询调用(Status information calls),ECI状态模块 状态信息存放在ECI状态模块(ECI status block) 中 状态模块的输入输出通过eci_commarea栏位完成 ECI

16、中包括如下信息: 连接类型(连接到Server、Client 或Nothing) Server状态(available, unavailable, or unknown) Client状态(available, not applicable, or unknown) 状态查询调用可以完成的功能 请查询当前状态 检测状态变化 取消状态检测,如何请查询当前状态,eci_commarea指向ECI状态模块的指针,返回结果存放其中 eci_commarea_length = ECI_STATUS_LENGTH eci_extend_mode = ECI_STATE_IMMEDIATE 同步调用eci_call_type = ECI_STATE_SYNC 异步调用 eci_call_type = ECI_STATE_ASYNC eci_message_qualifier = xxxx (可选) 标示每一个异步调用 回复查询调用时使用 , 以便获得特定的调用返回结果,如何检测状态变化,为ECI指定一个特定的状态, 一旦实际状态与指定状态不

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号