




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、CICS培訓(xùn)-開(kāi)發(fā)介紹介紹l通過(guò)這門(mén)課,我們可以學(xué)習(xí):CICS客戶端程序開(kāi)發(fā)基礎(chǔ)CICS服務(wù)器端程序開(kāi)發(fā)基礎(chǔ)編寫(xiě)利用CICS訪問(wèn)數(shù)據(jù)庫(kù)的程序CICS提供的應(yīng)用數(shù)據(jù)類(lèi)型CICS應(yīng)用模型應(yīng)用模型客客戶戶程程序序SFSRDBMQECIEPI區(qū)域1區(qū)域2區(qū)域3其他CICS服務(wù)器CICS服務(wù)器CICS CLIENT 開(kāi)發(fā)開(kāi)發(fā)CICS ECI 調(diào)用調(diào)用l功能從非CICS程序的客戶程序調(diào)用CICS Server交易l方式ECIExternal Call InterfaceEPIExternal Presentation Interfacel函數(shù)CICS_ExternalCall ()CICS ECI 程序?qū)?/p>
2、例程序?qū)嵗?1)l#include lECI_PARMS EciParms;lchar commArea1024;l注:注:commArea不能大于不能大于32KCICS ECI 程序?qū)嵗绦驅(qū)嵗?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 程序?qū)嵗绦驅(qū)嵗?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:長(zhǎng)度為發(fā)送和接收的較大者。:長(zhǎng)度為發(fā)送和接收的較大者。CICS ECI 程序?qū)嵗绦驅(qū)嵗?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運(yùn)行運(yùn)行 CICS ECI 程序程序l啟動(dòng) CICS ECI# cicscli /S=CICSRGxl運(yùn)行程序$ cl停止 CICS ECI# cicscli /X=CICSRGxCICS SERVER 開(kāi)發(fā)開(kāi)發(fā)CICS SERVER 程序?qū)嵗绦驅(qū)嵗齧ain() 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語(yǔ)句語(yǔ)法語(yǔ)句語(yǔ)法lEXEC CICS command options options:lRESP(rc)l例如:lunsigned long rc;lEXEC CICS SYNCPOINT RESP(rc);lif ( rc = DFHRESP(NORMAL) ) then 數(shù)據(jù)通訊區(qū)數(shù)據(jù)通訊區(qū) CommAreal使用方式非CICS程序中(客戶端程序):l用戶申請(qǐng)空間l接收和返回均使用此空間l申請(qǐng)大小為發(fā)
7、送和接收兩者的較大者CICS程序中:l無(wú)須申請(qǐng)空間l接收和返回均使用此空間l同步調(diào)用其他CICS程序時(shí)傳遞數(shù)據(jù)l異步調(diào)用時(shí)傳遞數(shù)據(jù)l長(zhǎng)度不大于32KSERVER程序獲得程序獲得COMMAREAl獲得請(qǐng)求數(shù)據(jù)char *commarea;/* 無(wú)須申請(qǐng)空間 */EXEC CICS ADDRESS EIB(dfheiptr)EXEC CICS ADDRESS COMMAREA(commarea)l獲得請(qǐng)求數(shù)據(jù)的長(zhǎng)度 dfheiptr-eibcalenl例如:if (dfheiptr-eibcalen 0 ) then 邏輯事務(wù)單元(邏輯事務(wù)單元(Logical Unit of Work)lCICS
8、交易中,兩個(gè)CICS提交/回滾之間的處理為一個(gè)LUW。客戶端A客戶端ABC客戶端AB客戶端AB交易的提交和回滾交易的提交和回滾l顯式調(diào)用提交顯式調(diào)用提交/回滾命令回滾命令EXEC CICS SYNCPOINT 提提交交EXEC CICS SYNCPOINT ROLLBACK 回滾回滾客戶端A客戶程序提交和回滾客戶程序提交和回滾lECI Client 控制提交控制提交/回滾回滾eci_extend_mode 參數(shù)參數(shù)lECI_NO_EXTEND執(zhí)行完畢即提交執(zhí)行完畢即提交lECI_EXTENDED延延伸到下一次伸到下一次ECI調(diào)用調(diào)用lECI_COMMIT提提交交lECI_BACKOUT回回滾滾
9、eci_luw_token參數(shù)參數(shù)l指定指定LUW的編號(hào)的編號(hào)lECI_LUW_NEW 開(kāi)始一個(gè)新的開(kāi)始一個(gè)新的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 );訪問(wèn)數(shù)據(jù)庫(kù)(訪問(wèn)數(shù)據(jù)庫(kù)(XA方式)方式)l無(wú)須連接數(shù)據(jù)庫(kù)l數(shù)據(jù)庫(kù)操作EXEC SQL l數(shù)據(jù)庫(kù)提交/回滾EXEC CICS SYNCPOINTEXEC CICS SYNCPOINT ROLLBACKl通過(guò)sqlca.sqlcode判斷EXEC SQL的執(zhí)行結(jié)果訪問(wèn)數(shù)據(jù)庫(kù)(非訪問(wèn)數(shù)據(jù)庫(kù)(非XA方式)方式)l連接數(shù)據(jù)庫(kù)EXEC SQL CONNECT TO DATABASEl數(shù)據(jù)庫(kù)操作EXEC SQL l數(shù)據(jù)庫(kù)提交/回滾EXEC SQL COMMITEXEC SQL ROLLBACKl數(shù)據(jù)庫(kù)關(guān)閉EXEC SQL DISCONNECTl通過(guò)sqlca.sqlcode
11、判斷執(zhí)行結(jié)果程序間調(diào)用語(yǔ)句程序間調(diào)用語(yǔ)句lEXEC CICS LINK調(diào)用另一個(gè)程序結(jié)束后返回調(diào)用程序lEXEC CICS XCTL將控制轉(zhuǎn)給另一個(gè)程序,不返回lEXEC CICS START異步執(zhí)行另一個(gè)交易,可設(shè)置啟動(dòng)時(shí)間。lEXEC CICS RETURN返回調(diào)用程序當(dāng)前CommArea內(nèi)容也返回??蛻舳薃BCEXEC CICS LINKlEXEC CICS LINK PROGRAM(name) COMMAREA(dataarea) LENGTH(datavalue) SYSID(name) SYNCONRETURN 例:例:EXEC CICS LINK PROGRAM (PROG1)
12、COMMAREA (CommArea) LENGTH (100) l關(guān)于事務(wù)提交與回滾:關(guān)于事務(wù)提交與回滾:B中中SYNCPOINT只提交只提交B中內(nèi)容;中內(nèi)容;A中中SYNCPOINT提交提交A和和B中內(nèi)容(若中內(nèi)容(若B未提交);未提交);若若B提交了,而提交了,而A回滾,則回滾,則B中內(nèi)容不會(huì)回滾。中內(nèi)容不會(huì)回滾。AB數(shù)據(jù)訪問(wèn)與共享數(shù)據(jù)訪問(wèn)與共享l交易內(nèi)數(shù)據(jù)共享l交易間數(shù)據(jù)共享客戶端A客戶端X客戶端AB交易內(nèi)數(shù)據(jù)共享交易內(nèi)數(shù)據(jù)共享lTWATransaction Work Area同一交易內(nèi)所有程序共享TD中定義大?。?-31767EXEC CICS ADDRESS TWA()l使用CIC
13、S私有存儲(chǔ)區(qū)EXEC CICS GETMAINl使用CommAreaEXEC CICS LINKCOMMAREA()EXEC CICS XCTLCOMMAREA()客戶端AB交易間數(shù)據(jù)共享交易間數(shù)據(jù)共享lCWACommon Work Area所有程序共享RD中定義:512-3584EXEC CICS ADDRESS CWA()l共享CICS存儲(chǔ)區(qū)EXEC CICS GETMAIN SET() SHAREDlVSAM文件/SFS文件(FD)l臨時(shí)存儲(chǔ)隊(duì)列(TSQ)l瞬時(shí)數(shù)據(jù)隊(duì)列(TDQ)TSQ(臨時(shí)存儲(chǔ)隊(duì)列)(臨時(shí)存儲(chǔ)隊(duì)列)l用于多個(gè)事務(wù)間共享數(shù)據(jù)通常只有一條記錄不定義即可使用,但對(duì)于REMOT
14、E方式最好事先定義。超過(guò)指定時(shí)間后,自動(dòng)被刪除。可用CEBR瀏覽和刪除。l存儲(chǔ)類(lèi)型MAIN:在內(nèi)存中,不可恢復(fù),區(qū)域停止后丟失。AUXILIARY:在SFS中,可設(shè)置為可恢復(fù),冷啟動(dòng)后才丟失。TDQ(瞬時(shí)數(shù)據(jù)隊(duì)列)(瞬時(shí)數(shù)據(jù)隊(duì)列)l真正的先進(jìn)先出隊(duì)列多個(gè)記錄,按順序讀取,讀后被刪除。需在區(qū)域啟動(dòng)前定義:TDDl隊(duì)列類(lèi)型分區(qū)內(nèi)TDQ:存儲(chǔ)在SFS中l(wèi)Trigger:可觸發(fā)執(zhí)行事務(wù)(當(dāng)隊(duì)列元素?cái)?shù)目達(dá)到指定大?。﹍Recoverable屬性:none:不可恢復(fù)physical:當(dāng)區(qū)域異常中斷后,可恢復(fù)最后一次讀出的元素logical:根據(jù)LUW,可恢復(fù)分區(qū)外TDQ:存儲(chǔ)在AIX文件系統(tǒng)中l(wèi)定長(zhǎng)記錄/
15、不定長(zhǎng)記錄/特定字符/NULL/行(支持以文本行為記錄單位)l只讀或只寫(xiě),但不能以可讀可寫(xiě)方式打開(kāi)。l可由所有分區(qū)的程序訪問(wèn)。開(kāi)發(fā)注意事項(xiàng)開(kāi)發(fā)注意事項(xiàng)注意事項(xiàng)(一)注意事項(xiàng)(一)lCICS不可使用的系統(tǒng)函數(shù)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代替注意事項(xiàng)(二)注意事項(xiàng)(二)lCICS不推薦使用的函數(shù)malloc()l可用EXEC CICS GETMAIN代替kill()l用EXEC CICS SET TASK PURGETYPE() 代替exit()l用EXEC CICS RETURN代替注意事項(xiàng)(三)注意事項(xiàng)(三)lCICS 應(yīng)用服務(wù)器會(huì)保留下列進(jìn)程狀態(tài),因此在交易結(jié)束時(shí)應(yīng)關(guān)閉:打開(kāi)的文件句柄TCPIP SOCKET句柄環(huán)境變量當(dāng)前工作目錄進(jìn)程級(jí)別共享內(nèi)存動(dòng)態(tài)申請(qǐng)的內(nèi)存注意事項(xiàng)(四)注意事項(xiàng)(四)l當(dāng)CICS程序需要駐留內(nèi)存時(shí)(PD的RESIDENT=YES),慎用靜態(tài)(sta
17、tic)變量。l示例static int val=0;val = val+1;注意事項(xiàng)(五)注意事項(xiàng)(五)l盡量不使用結(jié)構(gòu)來(lái)定義CommArea,因?yàn)槠溟L(zhǎng)度在各種機(jī)器上不一定相同。而用pack會(huì)影響效率。lINT類(lèi)型變量在各種機(jī)器上高低位不一定相同,在傳遞結(jié)構(gòu)需轉(zhuǎn)換。struct CommAreaStru int a; char str5;注意事項(xiàng)(六)注意事項(xiàng)(六)l數(shù)據(jù)庫(kù)cursor操作完畢必須釋放。EXEC SQL DECLARE CURSOR;EXEC SQL OPEN CURSOR;EXEC SQL CLOSE CURSOR;EXEC SQL DEALLOCATE CURSOR;注意
18、事項(xiàng)(七)注意事項(xiàng)(七)l使用動(dòng)態(tài)SQL語(yǔ)句時(shí)由數(shù)據(jù)庫(kù)自動(dòng)申請(qǐng)的pSQLDA空間,應(yīng)用程序必須釋放。EXEC SQL PREPARE;EXEC SQL DESCRIBE INTO pSQLDA;注意事項(xiàng)(八)注意事項(xiàng)(八)l程序結(jié)束需顯式刪除臨時(shí)表:EXEC SQL SELECT * FROM table1 INTO TEMP tmptable;EXEC SQL DROP TABLE tmptable;編譯與調(diào)試編譯與調(diào)試相關(guān)目錄相關(guān)目錄l/var/cics_regions/CICSRGx/bin應(yīng)用程序data數(shù)據(jù)文件/隊(duì)列編譯編譯CICS SERVER程序程序l沒(méi)有沒(méi)有SQLSQL語(yǔ)句時(shí):
19、語(yǔ)句時(shí):cicstran -lC s.ccs - s.ccicstran -lC s.ccs - s.c#CICS#CICS預(yù)編譯預(yù)編譯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語(yǔ)句時(shí):語(yǔ)句時(shí):cpre s.pc - s.c cpre s.pc - s.c #SYBASE#SYBASE預(yù)編譯預(yù)編譯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程序注冊(cè)程序注冊(cè)lPD中注冊(cè)程序smitty cics -Manage CICS Regions-Define CICS Resources- Program Definationsl程序名:8個(gè)字符l路徑:/var/cics_regions/CICSRGx/bin/系統(tǒng)運(yùn)行日志系統(tǒng)運(yùn)行日志l交易日志:/var/cics_region/CICSRGx/data/CSMT.outl系
22、統(tǒng)日志:/var/cics_region/CICSRGx/console.msgl程序中printf的內(nèi)容打印到console.msgl可用vi、tail、cicstail 命令查看內(nèi)容CICS系統(tǒng)日志中顯示的錯(cuò)誤系統(tǒng)日志中顯示的錯(cuò)誤lAxxy/Ummnn-ABEND代號(hào)xx=PC : 程序控制錯(cuò)誤xx=SR : 系統(tǒng)恢復(fù)錯(cuò)誤l常見(jiàn)錯(cuò)誤代碼:AEIO在指定的路徑下沒(méi)有找到執(zhí)行程序。ASRA類(lèi)似UNIX下的core dump。AEY7安全檢查錯(cuò)誤。lPD中應(yīng)設(shè)為public。l檢查CICS用戶安全級(jí)別和PD中程序的級(jí)別是否匹配。APCTPD中未定義或未激活。 CICS不可用。l查看錯(cuò)誤代碼說(shuō)明: # info -l cics -s AEIO常用常用CICS語(yǔ)句語(yǔ)句LINKXCTLSYNCPOINTASKTIMEFORMATTIMEINQUIRElEXEC CICS INQUIRE FILE PROGRAM TDQUEUE TSQUEUE 獲得指定資源的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東省佛山禪城區(qū)七校聯(lián)考2025屆七下英語(yǔ)期末預(yù)測(cè)試題含答案
- 2025年地理信息系統(tǒng)與遙感圖像處理考試卷及答案
- 2025年城市規(guī)劃與可持續(xù)發(fā)展考試試卷及答案
- 2025年法學(xué)專(zhuān)業(yè)研究生入學(xué)考試試卷及答案
- 行政樓層管家服務(wù)工作細(xì)則?
- 2025年杭州貨運(yùn)從業(yè)資格證考試從業(yè)資格考試
- 物流服務(wù)總包合同協(xié)議條款
- 2025年江蘇出租車(chē)培訓(xùn)考試試題
- 物理化學(xué)基本原理應(yīng)用真題解析及知識(shí)點(diǎn)回顧
- 術(shù)后腸漏護(hù)理疑難病例討論
- 小學(xué)勞動(dòng)教育校本課程開(kāi)發(fā)實(shí)踐與研究
- 森林草原防火 無(wú)人機(jī)巡查技術(shù)規(guī)范 編制說(shuō)明
- 2025-2030中國(guó)發(fā)泡聚苯乙烯泡沫行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 不寐的中醫(yī)護(hù)理常規(guī)
- 《能源的科普講解》課件
- 天一大聯(lián)考·天一小高考2024-2025學(xué)年(下)高三第四次考試政治試題及答案
- 2025年安慶桐城經(jīng)開(kāi)區(qū)建設(shè)投資集團(tuán)有限公司招聘12人筆試參考題庫(kù)附帶答案詳解
- 2025-2030中國(guó)藥食同源行業(yè)市場(chǎng)運(yùn)行分析及市場(chǎng)前景預(yù)測(cè)研究報(bào)告
- 2024年杭州地鐵科技有限公司招聘筆試真題
- 診所托管合同協(xié)議
- 餐飲服務(wù)與管理課件 菜單的設(shè)計(jì)與制作
評(píng)論
0/150
提交評(píng)論