EasyCICS

EasyCICS的发展历史

CICS是IBM公司用于分布式联机交易(事务)处理的软件产品,有超过30年的历史,并还在不断地改进。在UNIX和Windows上的CICS又称作TXSeries。 CICS和TXSeries运行效果稳定可靠,为实施大型关键业务的用户所普遍采用。目前TXSeries从属于IBM WebSphere产品系列。
从1999年开始,IBM中国公司号召ISV(独立软件开发商)和个人程序员开发基于IBM软件的解决方案,我就开始筹划写一个有关TXSeries的辅助软件。在1999 下半年,我加入了IBM中国公司,并在年底前顺利地完成了EasyCICS的写作。起初,我想把EasyCICS做成完全支持我的RSS的产品,但最终接受了侯云峰先生 的建议,写成了现在这个样子。虽然看起来不够精致,但简洁好用。EasyCICS的Java Client是我参照曹晓强先生提供的框架编写的,在此向二位表示 诚挚的谢意。
EasyCICS自1999年12月推出以后,受到了广大国内ISV和个人程序员的普遍欢迎。早已成为TXSeries的首选辅助开发方案。在EasyCICS的发展过程中, 我参考过刘洪直、王海涛、李念庆、沈琮和张志 等几位先生的宝贵建议。EasyCICS的成功除了归功于我个人的贡献,以及IBM和ISV技术人员、销售人员的 大力支持,更重要的是,IBM CICS和TXSeries至今仍然是那种充满活力的产品。

EasyCICS学习资料

这个文档是作为EasyCICS的主要学习资料,论述了有关EasyCICS安装、配置和开发的主要方法。其中有详尽的代码可供参考。作为本文档的补充,还有 EasyCICS入门和EasyCICS手册。一些补充的示例程序可以在本网站下载,包括 EasyCICS C语言示例程序EasyCICS Java示例程序

EasyCICS v2.29d相对于v2.29c的变化

  • 针对EasyCICS的Java支持做了一些微小的修改,能其能够更容易检测出GateWay的故障

EasyCICS v2.29c相对于v2.29b的变化

  • 如果您在使用TXSeries CICS for Windows,您是否希望每次启动Windows时就自动启动CICS域和ecbuf等工具程序呢?EasyCICS v2.29c新增的Smart Batch Service,通过创建一个Windows服务来自动启动一个批处理程序。这个批处理程序可以用来启动CICS域,以及ecbuf等。

EasyCICS v2.29b相对于v2.29a的变化

  • 改进了低效的ecbuf工具

EasyCICS v2.29a相对于v2.29的变化

  • EasyCICS v2.29a仅仅增加了两个针对Borland C++的客户程序库。以前只提供Microsoft兼容的DllEc.lib和DllEcx.lib。一些Borland编译器的用户也希望采用Dll方式编程来取代COM/OLE方式,于是在这个版本又提供了Borland格式的DllEc.lib和DllEcx.lib。

EasyCICS v2.29相对于v2.28f的变化

  • 实际上EasyCICS v2.29相对于v2.28f仅仅在Java Client上有微小的变化。因为一些用户需要Java客户机调用服务程序出现错误后,从ServerErrorException.getErrorCode()看到ECI返回值,而原来EasyCICS的做法是一律返回ServerErrorException.SERVER_ERR_ECICALL(即-2),另外还掩盖了IOException的情况。现在还增加了ServerErrorException.SERVER_ERR_IOEXCEPTION(即-30000),这种情况,实际上是Gateway连接出现问题(使用LocalGateway没有这种情况),可能需要重连接。这些改变增加了对Gateway方式的错误感知能力,但对LocalGateway方式基本没有影响。

EasyCICS v2.28f相对于v2.28e的变化

  • 为了便于一些开发商使用EasyCICS的内部函数和变量,默认的内部函数方式不再是static类型

EasyCICS v2.28e相对于v2.28d的变化

  • 增加了一个增强的COM/OLE客户机EcCom.dll。相对原有的COM/OLE标准客户机EcOle.dll,增加了对Free线程模式的支持,更适于多线程的环境(例如ASP),速度更快。

EasyCICS v2.28d相对于v2.28c的变化

  • 针对C++编译的警告信息,修改了easycics.ccs

EasyCICS v2.28c相对于v2.28b的变化

  • 为了更加符合CICS API文档的要求,实现最好的兼容性,修改了easycics.ccs一处

EasyCICS v2.28b相对于v2.28a的变化

  • 在EasyCICS的Java客户程序里增加了SetTransId方法。

EasyCICS v2.28a相对于v2.28的变化

  • EasyCICS v2.26把结果集的每行扩大到最多8000字节(包括控制符。原来支持4000字节),当时由于疏漏,在Java客户机没有同步做这样的变化。目前版本Java客户机也可以支持最多8000字节。
  • 在EasyCICS Java客户机原来一直没有LoadBlock和GetBlockSize方法,在目前版本已经增加。并丰富了Java的示例程序。

EasyCICS v2.28相对于v2.26a的变化

采用了可选的文件缓冲方式来解决大批量数据传输的问题,彻底消除了TSQ的应用,明显提高了效率。详见使用文件缓冲方式
另外,在DllEcx.dll中增加了几个支持负载均衡和高可用性的函数(dllServerListInitX, dllServerListAddX, dllConnectServerListX)。
并修改了客户程序中的两个小错误(交易分类和扩展调用)。

EasyCICS v2.26a相对于v2.26的变化

根据几个客户的需要,重新增加了Windows动态连接库的支持。其中DllEc.dll用于一般使用,DllEcx.dll增加了一个句柄,可用于多线程的程序。使用DllEc.dll和DllEcx.dll比使用COM/OLE组件速度快一些,用于多线程程序也比较容易。在demo.zip中增加了一个C语言的例子。用在Delphi和PowerBuilder中也很容易,大家可以根据DllEc.h和DllEcx.h自己进行封装。

EasyCICS v2.26相对于v2.25的变化

  • 根据一些客户的需要,把结果集的每行扩大到最多8000字节(包括一些转码数据。原来支持4000字节)
  • 在COM/OLE实现中增加了GetValueByte和RsGetColByte函数,直接返回字节数组,而不是返回字符串。这样可以避免因插入半个汉字或生僻汉字而引起的Windows解析错误。自己定义的结构(中间插入半个汉字)也没有任何问题。
  • 一些兼容性的调整。去掉没用的函数

EasyCICS v2.25d相对于v2.25c的变化

  • 仅仅修改了easycics.ccs
  • 去掉了支持老版本的EasyCICS客户机(v1.x,2001年以前发布)对老版本PowerBuilder的一些支持,提高了性能。
  • 针对使用空通信区的CICS程序(例如:CICS域启动程序,使用CICS START启动的程序)经常发生的错误进行了一些调整。

EasyCICS TSQ问题的最新解决办法

由于某些异常情况,或者EasyCICS编程不规范,可能导致CICS SFS文件服务器中的残余TSQ过多,发生SFS不稳定的问题。有很多解决方案,最新的解决方案是使用使用EasyCICS v2.28以上版本支持的文件缓存方式,效率极高。参阅解决TSQ问题的一个典型事例
另外对老版本的EasyCICS,也可以使用ECTSQ工具。