CICS培訓(xùn)-開(kāi)發(fā)_第1頁(yè)
CICS培訓(xùn)-開(kāi)發(fā)_第2頁(yè)
CICS培訓(xùn)-開(kāi)發(fā)_第3頁(yè)
CICS培訓(xùn)-開(kāi)發(fā)_第4頁(yè)
CICS培訓(xùn)-開(kāi)發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩64頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論