Duangw

CICS Server编程

索引:

  1. 注意事项
  2. 交易间数据共享方法
  3. Execute Interface Block
  4. CICS Server API
  5. Server程序编译

1.注意事项

调用操作系统系统调用、函数必须是线程安全的。

gethostbyname()、gethostbyaddr()、getprotent()、getservbyname()等非线程安全,用gethostbyname_r()、gethostbyaddr_r()、getprotent_r()、getservbyname_r()等替代。

不能调用fork()、execl()、system(),分别用EXEC CICS LINK 、XCTL 、START代替实现类似功能。

exit()用EXEC CICS RETURN替代。

不推荐使用malloc(),用EXEC CICS GETMAIN代替。

kill()用EXEC CICS SET TASK PURGETTYPE(PURGE | FORCEPURGE)代替。

在程序中打开的资源不用时注意关闭,CICS会保留他们的状态:

当CICS程序需要驻留在内存时(PD Resident = Yes),慎用静态变量(static)。

注意字节序问题,结构的对齐问题。数据库游标和临时表等不用时要清除和关闭。

 

2.交易间数据共享方法

CWA;

使用临时存储队列(TSQ);

使用暂存数据队列(TDQ);

使用VSAM文件;

使用CICS RETURN的COMMAREA:

EXEC CICS RETURN COMMAREA()

CICS共享存储区:

CICS GETMAIN SET() SHARED

 

3.Execute Interface Block

EIBTASKN Sequential task number
EIBDATE System date (start or 'asktime')
EIBTIME System time of day
EIBTRNID Transaction identification
EIBTRMID Terminal identifier
EIBCALEN Communications area length
EIBFN Last command issued
EIBRSRCE Resource name (terminal or queue)
EIBDS Resource name (file)
EIBRESP Error condition response
EIBAID 3270 attention identifier (key)
EIBCPOSN 3270 cursor position

 

4.CICS Server API

(1).命令形式

以EXEC CICS为前缀。

形式:

EXEC CICS command [ option [ ( argument ) ] ] ...
Command:Operation Type
Option:Optional Facilities
Arguments:Data Values or Keywords

错误处理:通常情况下CICS会abend该任务;若使用RESP选项则CICS返回错误码。

(2).命令选项

每个命令基本都有的Command Option:

Communications Area:32K。

(3).ADDRESS
EXEC CICS ADDRESS [COMMAREA(ptr_ref)]
    [CWA(ptr_ref)]    CWA公共内存区
    … …

如果RESP不为NORMAL,则存取失败。

(4).RETRIEVE
EXEC CICS RETRIEVE

获取START参数。

(5).ASSIGN
EXEC CICS ASSIGN

获得环境参数。

(6)GETMAIN
EXEC CICS GETMAIN SET(ptr_ref){LENGTH…}[SHARED]

向CICS申请内存,没有SHARED选项,交易结束会被CICS释放。

(7).FREEMAIN
EXEC CICS FREEMAIN

释放GETMAIN申请的内存。

(8).ENQ
EXEC CICS ENQ

对共享资源加锁。

(9).DEQ
EXEC CICS DEQ

释放锁。

(10).ASKTIME
EXEC CICS ASKTIME

获得绝对时间。

(11).FORMATTIME
EXEC CICS FORMATTIME

按要求格式化绝对时间。

(12).DELAY
EXEC CICS DELAY

使程序延时执行。

(13).CANCEL
EXEC CICS CANCEL

取消延时或取消异步执行的交易。

(14).SYNCPOINT
EXEC CICS SYNCPOINT

交易数据提交(XA),结束一个LUW,达成两阶段提交。

(15).ROLLBACK
EXEC CICS SYNCPOINT ROLLBACK

交易数据回滚(XA),结束一个LUW。

(16).LINK
EXEC CICS LINK

调用另一个程序,结束返回调用程序(fork)。

(17).XCTL
EXEC CICS XCTL

将控制转给另一个程序(exec)。

(18).START
EXEC CICS START

异步执行另一个交易(system)。

(19).ABEND
EXEC CICS [ABCODE(name)]
    [CANCEL]

中断当前CICS交易,name ABEND,作为代码是为四个字符;[CANCEL]选项可以屏蔽EXEC CICS HANDLE ABEND。

(20).RETURN
EXEC CICS RETURN

执行返回语句,返回调用者。

 

5.Server程序编译

cicstran

cicstcl