CICS Client编程
索引:
1.概念
两种方式:
External Call Interface,ECI;
External Presentation Interface,EPI。
ECI:COMMAREA;
EPI:3270数据流。
2.Client API
CICS_ExternalCall:
cics_sshort_t CICSCALL CICS_ExternalCall(ECI_PARMS CICSPTR *EciParms);
只有一个参数,通过它进行控制。
参数域说明:
eci_call_type:控制调用类型:同步/异步程序执行调用、同步/异步状态查询调用、回复查询调用。
eci_system_name:CICS Server名称。
Region Name(RPC Client)。
Client定义的Server Instance名称(Universal Client)。
eci_userid。
eci_password。
eci_commarea:通讯数据区(线性缓冲区),调用前存放将要传至Server的数据,调用返回后,其中存放Server传回的数据。
eci_commarea_length:数据区的长度,该值应设为上传和返回数据长度两者中的较大值,若上传实际数据长度小于该值,数据后的空间应以NULL字符填充。
3.程序执行调用
eci_program_name:请求执行的Server程序名;
同步调用:eci_call_type = ECI_SYNC;
异步调用:eci_call_type = ECI_ASYNC;
eci_message_qualifier = xxxx (可选)标示每一个异步调用,回复查询调用时使用,以便获得特定的调用返回结果;
eci_callback:回调函数。
4.LUW的管理
LUW可以由唯一一个程序执行调用构成或通过扩展(Extend)调用由多个顺序执行的程序调用构成。
eci_luw_token:标识LUW。eci_luw_token取值由ECI自动生成,LUW中的第一个程序调用时,eci_luw_token应设为ECI_LUW_NEW,该调用返回后,eci_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)栏位同时设置。
当程序出错时,eci_extend_mode的值表示LUW的状态。
5.状态查询
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(可选)标示每一个异步调用,回复查询调用时使用以便获得特定的调用返回结果。
6.检测状态变化
为ECI指定一个特定的状态,一旦ECI实际状态与指定状态不符将得到提示。只能是异步调用。
eci_commarea:指向ECI状态模块的指针,返回结果存放其中;
eci_commarea_length=ECI_STATUS_LENGTH;
eci_extend_mode=ECI_STATE_CHANGED;
eci_call_type=ECI_STATE_ASYNC;
eci_message_qualifier=xxxx(可选),标示每一个异步调用,回复查询调用时使用以便获得特定的调用返回结果;
eci_luw_token=ECI_LUW_NEW。
调用返回后,该栏位存放一个有ECI生成的值,标示该检测。用于取消检测时,指定操作对象。
7.取消状态检测
eci_commarea=NULL;
eci_commarea_length=0;
eci_extend_mode=ECI_STATE_CANCEL;
eci_call_type=ECI_STATE_SYNC;
eci_luw_token:请求检测状态调用该栏位的返回值。
8.回复查询调用
获得异步调用的返回结果。
回复查询调用分为如下类型(eci_call_type):
- ECI_GET_REPLY:获得任何异步调用的返回结果,若无回应,立即返回;
- ECI_GET_REPLY_WAIT:获得任何异步调用的返回结果,若无回应,等待;
- ECI_GET_SPECIFIC_REPLY:获得指定异步调用的返回结果,若无回应,立即返回;
- ECI_GET_SPECIFIC_REPLY_WAIT:获得指定异步调用的返回结果,若无回应,等待。
eci_message_qualifier:设为相应异步调用该栏位的返回值;
eci_commarea:若取得程序执行调用的回复,其中存放Server返回的数据,若取得状态查询调用的回复,其中存放ECI状态模块;
eci_commarea_length:相应COMMAREA的长度。
9.Client程序编译
包含CICS_ECI.h,链接相应库。