




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、CICS培训-开发介绍介绍l通过这门课,我们可以学习:CICS客户端程序开发基础CICS服务器端程序开发基础编写利用CICS访问数据库的程序CICS提供的应用数据类型CICS应用模型应用模型客客户户程程序序SFSRDBMQECIEPI区域1区域2区域3其他CICS服务器CICS服务器CICS CLIENT 开发开发CICS ECI 调用调用l功能从非CICS程序的客户程序调用CICS Server交易l方式ECIExternal Call InterfaceEPIExternal Presentation Interfacel函数CICS_ExternalCall ()CICS ECI 程序实
2、例程序实例(1)l#include lECI_PARMS EciParms;lchar commArea1024;l注:注:commArea不能大于不能大于32KCICS ECI 程序实例程序实例(2)lmemset( &EciParms, 0, sizeof(ECI_PARMS) );lmemset( commArea, 0, sizeof(commArea) );lEciParms.eci_version= ECI_VERSION_1;lEciParms.eci_call_type= ECI_SYNC;lmemcpy( &EciParms.eci_system_name,
3、CICSRG01, 8 );lmemcpy( &EciParms.eci_userid, CICSUSER, 8 );lmemcpy( &EciParms.eci_password, CICSUSER, 8 );lmemcpy( &EciParms.eci_program_name, SERV0001, 8 );CICS ECI 程序实例程序实例(3)lEciParm.eci_commarea= commArea;lEciParm.eci_commarea_length= sizeof(commArea);lEciParm.eci_extend_mode= ECI_NO
4、_EXTEND;lEciParm.eci_luw_token= ECI_LUW_NEW;lEciParm.eci_timeout= 30;l注注1:commArea 任意格式,最好是字符串。任意格式,最好是字符串。l注注2:长度为发送和接收的较大者。:长度为发送和接收的较大者。CICS ECI 程序实例程序实例(4)lrc = CICS_ExternalCall ( &EciParms );l注:注:rc : 在在cics_eci.h中定义中定义EciParms. eci_abend_code : # info l cics s 编译编译 CICS ECI 程序程序l在SCO Open
5、Server:cc -DCICS_SCO -b elf -lcclsco -lc -o c c.c运行运行 CICS ECI 程序程序l启动 CICS ECI# cicscli /S=CICSRGxl运行程序$ cl停止 CICS ECI# cicscli /X=CICSRGxCICS SERVER 开发开发CICS SERVER 程序实例程序实例main() unsigned long rc; char * commArea; EXEC CICS ADDRESS EIB(dfheiptr) RESP(rc); EXEC CICS ADDRESS COMMAREA(commArea) RESP
6、(rc); . EXEC SQL . . EXEC CICS SYNCPOINT; strcpy( commArea, Result Data ); EXEC CICS RETURN;CICS语句语法语句语法lEXEC CICS command options options:lRESP(rc)l例如:lunsigned long rc;lEXEC CICS SYNCPOINT RESP(rc);lif ( rc = DFHRESP(NORMAL) ) then 数据通讯区数据通讯区 CommAreal使用方式非CICS程序中(客户端程序):l用户申请空间l接收和返回均使用此空间l申请大小为发
7、送和接收两者的较大者CICS程序中:l无须申请空间l接收和返回均使用此空间l同步调用其他CICS程序时传递数据l异步调用时传递数据l长度不大于32KSERVER程序获得程序获得COMMAREAl获得请求数据char *commarea;/* 无须申请空间 */EXEC CICS ADDRESS EIB(dfheiptr)EXEC CICS ADDRESS COMMAREA(commarea)l获得请求数据的长度 dfheiptr-eibcalenl例如:if (dfheiptr-eibcalen 0 ) then 逻辑事务单元(逻辑事务单元(Logical Unit of Work)lCICS
8、交易中,两个CICS提交/回滚之间的处理为一个LUW。客户端A客户端ABC客户端AB客户端AB交易的提交和回滚交易的提交和回滚l显式调用提交显式调用提交/回滚命令回滚命令EXEC CICS SYNCPOINT 提提交交EXEC CICS SYNCPOINT ROLLBACK 回滚回滚客户端A客户程序提交和回滚客户程序提交和回滚lECI Client 控制提交控制提交/回滚回滚eci_extend_mode 参数参数lECI_NO_EXTEND执行完毕即提交执行完毕即提交lECI_EXTENDED延延伸到下一次伸到下一次ECI调用调用lECI_COMMIT提提交交lECI_BACKOUT回回滚滚
9、eci_luw_token参数参数l指定指定LUW的编号的编号lECI_LUW_NEW 开始一个新的开始一个新的LUW客户端AB客户端A客户程序提交和回滚示例客户程序提交和回滚示例l示例程序:示例程序:EciParm.eci_commarea= commArea;EciParm.eci_commarea_length= sizeof(commArea);EciParm.eci_extend_mode= ECI_NO_EXTEND;EciParm.eci_luw_token= ECI_LUW_NEW;EciParm.eci_timeout= 30;rc = CICS_ExternalCall (
10、 &EciParms );访问数据库(访问数据库(XA方式)方式)l无须连接数据库l数据库操作EXEC SQL l数据库提交/回滚EXEC CICS SYNCPOINTEXEC CICS SYNCPOINT ROLLBACKl通过sqlca.sqlcode判断EXEC SQL的执行结果访问数据库(非访问数据库(非XA方式)方式)l连接数据库EXEC SQL CONNECT TO DATABASEl数据库操作EXEC SQL l数据库提交/回滚EXEC SQL COMMITEXEC SQL ROLLBACKl数据库关闭EXEC SQL DISCONNECTl通过sqlca.sqlcode
11、判断执行结果程序间调用语句程序间调用语句lEXEC CICS LINK调用另一个程序结束后返回调用程序lEXEC CICS XCTL将控制转给另一个程序,不返回lEXEC CICS START异步执行另一个交易,可设置启动时间。lEXEC CICS RETURN返回调用程序当前CommArea内容也返回。客户端ABCEXEC CICS LINKlEXEC CICS LINK PROGRAM(name) COMMAREA(dataarea) LENGTH(datavalue) SYSID(name) SYNCONRETURN 例:例:EXEC CICS LINK PROGRAM (PROG1)
12、COMMAREA (CommArea) LENGTH (100) l关于事务提交与回滚:关于事务提交与回滚:B中中SYNCPOINT只提交只提交B中内容;中内容;A中中SYNCPOINT提交提交A和和B中内容(若中内容(若B未提交);未提交);若若B提交了,而提交了,而A回滚,则回滚,则B中内容不会回滚。中内容不会回滚。AB数据访问与共享数据访问与共享l交易内数据共享l交易间数据共享客户端A客户端X客户端AB交易内数据共享交易内数据共享lTWATransaction Work Area同一交易内所有程序共享TD中定义大小:0-31767EXEC CICS ADDRESS TWA()l使用CIC
13、S私有存储区EXEC CICS GETMAINl使用CommAreaEXEC CICS LINKCOMMAREA()EXEC CICS XCTLCOMMAREA()客户端AB交易间数据共享交易间数据共享lCWACommon Work Area所有程序共享RD中定义:512-3584EXEC CICS ADDRESS CWA()l共享CICS存储区EXEC CICS GETMAIN SET() SHAREDlVSAM文件/SFS文件(FD)l临时存储队列(TSQ)l瞬时数据队列(TDQ)TSQ(临时存储队列)(临时存储队列)l用于多个事务间共享数据通常只有一条记录不定义即可使用,但对于REMOT
14、E方式最好事先定义。超过指定时间后,自动被删除。可用CEBR浏览和删除。l存储类型MAIN:在内存中,不可恢复,区域停止后丢失。AUXILIARY:在SFS中,可设置为可恢复,冷启动后才丢失。TDQ(瞬时数据队列)(瞬时数据队列)l真正的先进先出队列多个记录,按顺序读取,读后被删除。需在区域启动前定义:TDDl队列类型分区内TDQ:存储在SFS中lTrigger:可触发执行事务(当队列元素数目达到指定大小)lRecoverable属性:none:不可恢复physical:当区域异常中断后,可恢复最后一次读出的元素logical:根据LUW,可恢复分区外TDQ:存储在AIX文件系统中l定长记录/
15、不定长记录/特定字符/NULL/行(支持以文本行为记录单位)l只读或只写,但不能以可读可写方式打开。l可由所有分区的程序访问。开发注意事项开发注意事项注意事项(一)注意事项(一)lCICS不可使用的系统函数fork(), execl(), system()l可用EXEC CICS LINK, XCTL, START代替gethostbyname(), gethostbyaddr(), getprotent(), getservbyname()l可用gethostbyname_r(), gethostbyaddr _r(), getprotent _r(), getservbyname _r()
16、代替exit()l用EXEC CICS RETURN代替注意事项(二)注意事项(二)lCICS不推荐使用的函数malloc()l可用EXEC CICS GETMAIN代替kill()l用EXEC CICS SET TASK PURGETYPE() 代替exit()l用EXEC CICS RETURN代替注意事项(三)注意事项(三)lCICS 应用服务器会保留下列进程状态,因此在交易结束时应关闭:打开的文件句柄TCPIP SOCKET句柄环境变量当前工作目录进程级别共享内存动态申请的内存注意事项(四)注意事项(四)l当CICS程序需要驻留内存时(PD的RESIDENT=YES),慎用静态(sta
17、tic)变量。l示例static int val=0;val = val+1;注意事项(五)注意事项(五)l尽量不使用结构来定义CommArea,因为其长度在各种机器上不一定相同。而用pack会影响效率。lINT类型变量在各种机器上高低位不一定相同,在传递结构需转换。struct CommAreaStru int a; char str5;注意事项(六)注意事项(六)l数据库cursor操作完毕必须释放。EXEC SQL DECLARE CURSOR;EXEC SQL OPEN CURSOR;EXEC SQL CLOSE CURSOR;EXEC SQL DEALLOCATE CURSOR;注意
18、事项(七)注意事项(七)l使用动态SQL语句时由数据库自动申请的pSQLDA空间,应用程序必须释放。EXEC SQL PREPARE;EXEC SQL DESCRIBE INTO pSQLDA;注意事项(八)注意事项(八)l程序结束需显式删除临时表:EXEC SQL SELECT * FROM table1 INTO TEMP tmptable;EXEC SQL DROP TABLE tmptable;编译与调试编译与调试相关目录相关目录l/var/cics_regions/CICSRGx/bin应用程序data数据文件/队列编译编译CICS SERVER程序程序l没有没有SQLSQL语句时:
19、语句时:cicstran -lC s.ccs - s.ccicstran -lC s.ccs - s.c#CICS#CICS预编译预编译cc L$CICS/lib -lcics_api e main -I$CICS/include o s s.c - scc L$CICS/lib -lcics_api e main -I$CICS/include o s s.c - s或:或:export CCFLAGS= L$CICS/lib -lcics_api e main -I$CICS/include export CCFLAGS= L$CICS/lib -lcics_api e main -I$C
20、ICS/include cicstcl -lC s.ccs - scicstcl -lC s.ccs - sl有有SQLSQL语句时:语句时:cpre s.pc - s.c cpre s.pc - s.c #SYBASE#SYBASE预编译预编译mv s.c - s.ccsmv s.c - s.ccscicstran -lC s.ccs - s.ccicstran -lC s.ccs - s.ccc L$CICS/lib -lcics_api e main -I$CICS/include o s s.c - scc L$CICS/lib -lcics_api e main -I$CICS/in
21、clude o s s.c - sl/usr/lpp/cics/src/samples /usr/lpp/cics/src/samples 有有 makefile makefile 示例。示例。CICS SERVER程序注册程序注册lPD中注册程序smitty cics -Manage CICS Regions-Define CICS Resources- Program Definationsl程序名:8个字符l路径:/var/cics_regions/CICSRGx/bin/系统运行日志系统运行日志l交易日志:/var/cics_region/CICSRGx/data/CSMT.outl系
22、统日志:/var/cics_region/CICSRGx/console.msgl程序中printf的内容打印到console.msgl可用vi、tail、cicstail 命令查看内容CICS系统日志中显示的错误系统日志中显示的错误lAxxy/Ummnn-ABEND代号xx=PC : 程序控制错误xx=SR : 系统恢复错误l常见错误代码:AEIO在指定的路径下没有找到执行程序。ASRA类似UNIX下的core dump。AEY7安全检查错误。lPD中应设为public。l检查CICS用户安全级别和PD中程序的级别是否匹配。APCTPD中未定义或未激活。 CICS不可用。l查看错误代码说明: # info -l cics -s AEIO常用常用CICS语句语句LINKXCTLSYNCPOINTASKTIMEFORMATTIMEINQUIRElEXEC CICS INQUIRE FILE PROGRAM TDQUEUE TSQUEUE 获得指定资源的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心内介入治疗护理
- 2025年汽车挂靠协议
- 2025年年度框架协议
- 武劲松建设工程法规课件
- 穿孔护理教程图解
- 降低高渗药物的外渗率
- 关于医院人才建设的思考培训课件
- 伟大细胞秦文君
- 呼吸窘迫综合护理课件
- 男女术后护理常规
- 《学前卫生学》课程教学大纲
- 北京市专业技术类职业资格培训服务合同
- 唇腭裂儿童的语音干预与治疗
- FSSC22000 食品安全管理体系管理手册和全套程序文件
- HY∕T 0289-2020 海水淡化浓盐水排放要求
- 高校基建管理部门组织构成及管理模式研究
- 特种设备检验流程图
- (高清正版)T-CAGHP 021—2018泥石流防治工程设计规范(试行)
- 北京协和医院食物交换表
- 成都市零诊级高中毕业班摸底测试化学试题及答案
- 脱产学习证明
评论
0/150
提交评论