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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、CICS培訓(xùn)-開發(fā)介紹介紹l通過這門課,我們可以學(xué)習(xí):CICS客戶端程序開發(fā)基礎(chǔ)CICS服務(wù)器端程序開發(fā)基礎(chǔ)編寫利用CICS訪問數(shù)據(jù)庫的程序CICS提供的應(yīng)用數(shù)據(jù)類型CICS應(yīng)用模型應(yīng)用模型客客戶戶程程序序SFSRDBMQECIEPI區(qū)域1區(qū)域2區(qū)域3其他CICS服務(wù)器CICS服務(wù)器CICS CLIENT 開發(fā)開發(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:長度為發(fā)送和接收的較大者。:長度為發(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運行運行 CICS ECI 程序程序l啟動 CICS ECI# cicscli /S=CICSRGxl運行程序$ cl停止 CICS ECI# cicscli /X=CICSRGxCICS SERVER 開發(fā)開發(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語句語法語句語法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用戶申請空間l接收和返回均使用此空間l申請大小為發(fā)

7、送和接收兩者的較大者CICS程序中:l無須申請空間l接收和返回均使用此空間l同步調(diào)用其他CICS程序時傳遞數(shù)據(jù)l異步調(diào)用時傳遞數(shù)據(jù)l長度不大于32KSERVER程序獲得程序獲得COMMAREAl獲得請求數(shù)據(jù)char *commarea;/* 無須申請空間 */EXEC CICS ADDRESS EIB(dfheiptr)EXEC CICS ADDRESS COMMAREA(commarea)l獲得請求數(shù)據(jù)的長度 dfheiptr-eibcalenl例如:if (dfheiptr-eibcalen 0 ) then 邏輯事務(wù)單元(邏輯事務(wù)單元(Logical Unit of Work)lCICS

8、交易中,兩個CICS提交/回滾之間的處理為一個LUW??蛻舳薃客戶端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的編號的編號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 );訪問數(shù)據(jù)庫(訪問數(shù)據(jù)庫(XA方式)方式)l無須連接數(shù)據(jù)庫l數(shù)據(jù)庫操作EXEC SQL l數(shù)據(jù)庫提交/回滾EXEC CICS SYNCPOINTEXEC CICS SYNCPOINT ROLLBACKl通過sqlca.sqlcode判斷EXEC SQL的執(zhí)行結(jié)果訪問數(shù)據(jù)庫(非訪問數(shù)據(jù)庫(非XA方式)方式)l連接數(shù)據(jù)庫EXEC SQL CONNECT TO DATABASEl數(shù)據(jù)庫操作EXEC SQL l數(shù)據(jù)庫提交/回滾EXEC SQL COMMITEXEC SQL ROLLBACKl數(shù)據(jù)庫關(guān)閉EXEC SQL DISCONNECTl通過sqlca.sqlcode

11、判斷執(zhí)行結(jié)果程序間調(diào)用語句程序間調(diào)用語句lEXEC CICS LINK調(diào)用另一個程序結(jié)束后返回調(diào)用程序lEXEC CICS XCTL將控制轉(zhuǎn)給另一個程序,不返回lEXEC CICS START異步執(zhí)行另一個交易,可設(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)容不會回滾。中內(nèi)容不會回滾。AB數(shù)據(jù)訪問與共享數(shù)據(jù)訪問與共享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私有存儲區(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存儲區(qū)EXEC CICS GETMAIN SET() SHAREDlVSAM文件/SFS文件(FD)l臨時存儲隊列(TSQ)l瞬時數(shù)據(jù)隊列(TDQ)TSQ(臨時存儲隊列)(臨時存儲隊列)l用于多個事務(wù)間共享數(shù)據(jù)通常只有一條記錄不定義即可使用,但對于REMOT

14、E方式最好事先定義。超過指定時間后,自動被刪除??捎肅EBR瀏覽和刪除。l存儲類型MAIN:在內(nèi)存中,不可恢復(fù),區(qū)域停止后丟失。AUXILIARY:在SFS中,可設(shè)置為可恢復(fù),冷啟動后才丟失。TDQ(瞬時數(shù)據(jù)隊列)(瞬時數(shù)據(jù)隊列)l真正的先進(jìn)先出隊列多個記錄,按順序讀取,讀后被刪除。需在區(qū)域啟動前定義:TDDl隊列類型分區(qū)內(nèi)TDQ:存儲在SFS中l(wèi)Trigger:可觸發(fā)執(zhí)行事務(wù)(當(dāng)隊列元素數(shù)目達(dá)到指定大?。﹍Recoverable屬性:none:不可恢復(fù)physical:當(dāng)區(qū)域異常中斷后,可恢復(fù)最后一次讀出的元素logical:根據(jù)LUW,可恢復(fù)分區(qū)外TDQ:存儲在AIX文件系統(tǒng)中l(wèi)定長記錄/

15、不定長記錄/特定字符/NULL/行(支持以文本行為記錄單位)l只讀或只寫,但不能以可讀可寫方式打開。l可由所有分區(qū)的程序訪問。開發(fā)注意事項開發(fā)注意事項注意事項(一)注意事項(一)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代替注意事項(二)注意事項(二)lCICS不推薦使用的函數(shù)malloc()l可用EXEC CICS GETMAIN代替kill()l用EXEC CICS SET TASK PURGETYPE() 代替exit()l用EXEC CICS RETURN代替注意事項(三)注意事項(三)lCICS 應(yīng)用服務(wù)器會保留下列進(jìn)程狀態(tài),因此在交易結(jié)束時應(yīng)關(guān)閉:打開的文件句柄TCPIP SOCKET句柄環(huán)境變量當(dāng)前工作目錄進(jìn)程級別共享內(nèi)存動態(tài)申請的內(nèi)存注意事項(四)注意事項(四)l當(dāng)CICS程序需要駐留內(nèi)存時(PD的RESIDENT=YES),慎用靜態(tài)(sta

17、tic)變量。l示例static int val=0;val = val+1;注意事項(五)注意事項(五)l盡量不使用結(jié)構(gòu)來定義CommArea,因為其長度在各種機(jī)器上不一定相同。而用pack會影響效率。lINT類型變量在各種機(jī)器上高低位不一定相同,在傳遞結(jié)構(gòu)需轉(zhuǎn)換。struct CommAreaStru int a; char str5;注意事項(六)注意事項(六)l數(shù)據(jù)庫cursor操作完畢必須釋放。EXEC SQL DECLARE CURSOR;EXEC SQL OPEN CURSOR;EXEC SQL CLOSE CURSOR;EXEC SQL DEALLOCATE CURSOR;注意

18、事項(七)注意事項(七)l使用動態(tài)SQL語句時由數(shù)據(jù)庫自動申請的pSQLDA空間,應(yīng)用程序必須釋放。EXEC SQL PREPARE;EXEC SQL DESCRIBE INTO pSQLDA;注意事項(八)注意事項(八)l程序結(jié)束需顯式刪除臨時表: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ù)文件/隊列編譯編譯CICS SERVER程序程序l沒有沒有SQLSQL語句時:

19、語句時: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語句時:語句時: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程序注冊程序注冊lPD中注冊程序smitty cics -Manage CICS Regions-Define CICS Resources- Program Definationsl程序名:8個字符l路徑:/var/cics_regions/CICSRGx/bin/系統(tǒng)運行日志系統(tǒng)運行日志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)日志中顯示的錯誤系統(tǒng)日志中顯示的錯誤lAxxy/Ummnn-ABEND代號xx=PC : 程序控制錯誤xx=SR : 系統(tǒng)恢復(fù)錯誤l常見錯誤代碼:AEIO在指定的路徑下沒有找到執(zhí)行程序。ASRA類似UNIX下的core dump。AEY7安全檢查錯誤。lPD中應(yīng)設(shè)為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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論