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

下載本文檔

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

文檔簡介

1、CICS技術(shù)培訓(xùn)CICS開發(fā)2022/7/20.引見經(jīng)過這門課,我們可以學(xué)習(xí):CICS客戶端程序開發(fā)根底CICS效力器端程序開發(fā)根底編寫利用CICS訪問數(shù)據(jù)庫的程序CICS提供的運(yùn)用數(shù)據(jù)類型.CICS運(yùn)用模型客戶程序SFSRDBMQECIEPI區(qū)域1區(qū)域2區(qū)域3其他CICS效力器CICS效力器.CICS CLIENT 開發(fā)CICS CLIENT 開發(fā).CICS ECI 調(diào)用功能從非CICS程序的客戶程序調(diào)用CICS Server買賣方式ECIExternal Call InterfaceEPIExternal Presentation Interface函數(shù)CICS_ExternalCall

2、().CICS ECI 程序?qū)嵗?1)#include ECI_PARMS EciParms;char commArea1024;注:commArea不能大于32K.CICS ECI 程序?qū)嵗?2)memset( &EciParms, 0, sizeof(ECI_PARMS) );memset( commArea, 0, sizeof(commArea) );EciParms.eci_version= ECI_VERSION_1;EciParms.eci_call_type= ECI_SYNC;memcpy( &EciParms.eci_system_name, CICSRG01, 8 );m

3、emcpy( &EciParms.eci_userid, CICSUSER, 8 );memcpy( &EciParms.eci_password, CICSUSER, 8 );memcpy( &EciParms.eci_program_name, SERV0001, 8 );.CICS ECI 程序?qū)嵗?3)EciParm.eci_commarea= commArea;EciParm.eci_commarea_length= sizeof(commArea);EciParm.eci_extend_mode= ECI_NO_EXTEND;EciParm.eci_luw_token= ECI_L

4、UW_NEW;EciParm.eci_timeout= 30;注1:commArea 恣意格式,最好是字符串。注2:長度為發(fā)送和接納的較大者。.CICS ECI 程序?qū)嵗?4)rc = CICS_ExternalCall ( &EciParms );注:rc : 在cics_eci.h中定義EciParms. eci_abend_code : # info l cics s .編譯 CICS ECI 程序在SCO OpenServer:cc -DCICS_SCO -b elf -lcclsco -lc -o c c.c.運(yùn)轉(zhuǎn) CICS ECI 程序啟動 CICS ECI# cicscli /S

5、=CICSRGx運(yùn)轉(zhuǎn)程序$ c停頓 CICS ECI# cicscli /X=CICSRGx.CICS SERVER 開發(fā)CICS SERVER 開發(fā).CICS SERVER 程序?qū)嵗齧ain() unsigned long rc; char * commArea; EXEC CICS ADDRESS EIB(dfheiptr) RESP(rc); EXEC CICS ADDRESS COMMAREA(commArea) RESP(rc); . EXEC SQL . . EXEC CICS SYNCPOINT; strcpy( commArea, Result Data ); EXEC CIC

6、S RETURN;.CICS語句語法EXEC CICS command options options:RESP(rc)例如:unsigned long rc;EXEC CICS SYNCPOINT RESP(rc);if ( rc = DFHRESP(NORMAL) ) then .數(shù)據(jù)通訊區(qū) CommArea運(yùn)用方式非CICS程序中客戶端程序:用戶懇求空間接納和前往均運(yùn)用此空間懇求大小為發(fā)送和接納兩者的較大者CICS程序中:無須懇求空間接納和前往均運(yùn)用此空間同步伐用其他CICS程序時傳送數(shù)據(jù)異步伐用時傳送數(shù)據(jù)長度不大于32K.SERVER程序獲得COMMAREA獲得懇求數(shù)據(jù)char *co

7、mmarea;/* 無須懇求空間 */EXEC CICS ADDRESS EIB(dfheiptr)EXEC CICS ADDRESS COMMAREA(commarea)獲得懇求數(shù)據(jù)的長度 dfheiptr-eibcalen例如:if (dfheiptr-eibcalen 0 ) then .邏輯事務(wù)單元Logical Unit of WorkCICS買賣中,兩個CICS提交/回滾之間的處置為一個LUW。客戶端A客戶端ABC客戶端AB.客戶端AB買賣的提交和回滾顯式調(diào)用提交/回滾命令EXEC CICS SYNCPOINT 提交EXEC CICS SYNCPOINT ROLLBACK 回滾客戶

8、端A.客戶程序提交和回滾ECI Client 控制提交/回滾eci_extend_mode 參數(shù)ECI_NO_EXTEND執(zhí)行終了即提交ECI_EXTENDED延伸到下一次ECI調(diào)用ECI_COMMIT提交ECI_BACKOUT回滾eci_luw_token參數(shù)指定LUW的編號ECI_LUW_NEW 開場一個新的LUW客戶端AB客戶端A.客戶程序提交和回滾例如例如程序:EciParm.eci_commarea= commArea;EciParm.eci_commarea_length= sizeof(commArea);EciParm.eci_extend_mode= ECI_NO_EXTEN

9、D;EciParm.eci_luw_token= ECI_LUW_NEW;EciParm.eci_timeout= 30;rc = CICS_ExternalCall ( &EciParms );.訪問數(shù)據(jù)庫XA方式無須銜接數(shù)據(jù)庫數(shù)據(jù)庫操作EXEC SQL 數(shù)據(jù)庫提交/回滾EXEC CICS SYNCPOINTEXEC CICS SYNCPOINT ROLLBACK經(jīng)過sqlca.sqlcode判別EXEC SQL的執(zhí)行結(jié)果.訪問數(shù)據(jù)庫非XA方式銜接數(shù)據(jù)庫EXEC SQL CONNECT TO DATABASE數(shù)據(jù)庫操作EXEC SQL 數(shù)據(jù)庫提交/回滾EXEC SQL COMMITEXEC

10、SQL ROLLBACK數(shù)據(jù)庫封鎖EXEC SQL DISCONNECT經(jīng)過sqlca.sqlcode判別執(zhí)行結(jié)果.程序間調(diào)用語句EXEC CICS LINK調(diào)用另一個程序終了后前往調(diào)用程序EXEC CICS XCTL將控制轉(zhuǎn)給另一個程序,不前往EXEC CICS START異步執(zhí)行另一個買賣,可設(shè)置啟動時間。EXEC CICS RETURN前往調(diào)用程序當(dāng)前CommArea內(nèi)容也前往。客戶端ABC.EXEC CICS LINKEXEC CICS LINK PROGRAM(name) COMMAREA(dataarea) LENGTH(datavalue) SYSID(name) SYNCONR

11、ETURN 例:EXEC CICS LINK PROGRAM (PROG1) COMMAREA (CommArea) LENGTH (100) 關(guān)于事務(wù)提交與回滾:B中SYNCPOINT只提交B中內(nèi)容;A中SYNCPOINT提交A和B中內(nèi)容假設(shè)B未提交;假設(shè)B提交了,而A回滾,那么B中內(nèi)容不會回滾。AB.數(shù)據(jù)訪問與共享買賣內(nèi)數(shù)據(jù)共享買賣間數(shù)據(jù)共享客戶端A客戶端X客戶端AB.買賣內(nèi)數(shù)據(jù)共享TWATransaction Work Area同一買賣內(nèi)一切程序共享TD中定義大小:0-31767EXEC CICS ADDRESS TWA()運(yùn)用CICS私有存儲區(qū)EXEC CICS GETMAIN運(yùn)用Co

12、mmAreaEXEC CICS LINKCOMMAREA()EXEC CICS XCTLCOMMAREA()客戶端AB.買賣間數(shù)據(jù)共享CWACommon Work Area一切程序共享RD中定義:512-3584EXEC CICS ADDRESS CWA()共享CICS存儲區(qū)EXEC CICS GETMAIN SET() SHAREDVSAM文件/SFS文件FD暫時存儲隊(duì)列TSQ瞬時數(shù)據(jù)隊(duì)列TDQ.TSQ暫時存儲隊(duì)列用于多個事務(wù)間共享數(shù)據(jù)通常只需一條記錄不定義即可運(yùn)用,但對于REMOTE方式最好事先定義。超越指定時間后,自動被刪除??捎肅EBR閱讀和刪除。存儲類型MAIN:在內(nèi)存中,不可恢復(fù),

13、區(qū)域停頓后喪失。AUXILIARY:在SFS中,可設(shè)置為可恢復(fù),冷啟動后才喪失。.TDQ瞬時數(shù)據(jù)隊(duì)列真正的先進(jìn)先出隊(duì)列多個記錄,按順序讀取,讀后被刪除。需在區(qū)域啟動前定義:TDD隊(duì)列類型分區(qū)內(nèi)TDQ:存儲在SFS中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:存儲在AIX文件系統(tǒng)中定長記錄/不定長記錄/特定字符/NULL/行支持以文本行為記錄單位只讀或只寫,但不能以可讀可寫方式翻開??捎梢磺蟹謪^(qū)的程序訪問。.開發(fā)本卷須知開發(fā)八大本卷

14、須知.本卷須知一CICS不可運(yùn)用的系統(tǒng)函數(shù)fork(), execl(), system()可用EXEC CICS LINK, XCTL, START替代gethostbyname(), gethostbyaddr(), getprotent(), getservbyname()可用gethostbyname_r(), gethostbyaddr _r(), getprotent _r(), getservbyname _r()替代exit()用EXEC CICS RETURN替代.本卷須知二CICS不引薦運(yùn)用的函數(shù)malloc()可用EXEC CICS GETMAIN替代kill()用EXE

15、C CICS SET TASK PURGETYPE() 替代exit()用EXEC CICS RETURN替代.本卷須知三CICS 運(yùn)用效力器會保管以下進(jìn)程形狀,因此在買賣終了時應(yīng)封鎖:翻開的文件句柄TCPIP SOCKET句柄環(huán)境變量當(dāng)前任務(wù)目錄進(jìn)程級別共享內(nèi)存動態(tài)懇求的內(nèi)存.本卷須知四當(dāng)CICS程序需求駐留內(nèi)存時PD的RESIDENT=YES,慎用靜態(tài)static變量。例如static int val=0;val = val+1;.本卷須知五盡量不運(yùn)用構(gòu)造來定義CommArea,由于其長度在各種機(jī)器上不一定一樣。而用pack會影響效率。INT類型變量在各種機(jī)器上高低位不一定一樣,在傳送構(gòu)造

16、需轉(zhuǎn)換。struct CommAreaStru int a; char str5;.本卷須知六數(shù)據(jù)庫cursor操作終了必需釋放。EXEC SQL DECLARE CURSOR;EXEC SQL OPEN CURSOR;EXEC SQL CLOSE CURSOR;EXEC SQL DEALLOCATE CURSOR;.本卷須知七運(yùn)用動態(tài)SQL語句時由數(shù)據(jù)庫自動懇求的pSQLDA空間,運(yùn)用程序必需釋放。EXEC SQL PREPARE;EXEC SQL DESCRIBE INTO pSQLDA;.本卷須知八程序終了需顯式刪除暫時表:EXEC SQL SELECT * FROM table1 IN

17、TO TEMP tmptable;EXEC SQL DROP TABLE tmptable;.編譯與調(diào)試編譯與調(diào)試.相關(guān)目錄/var/cics_regions/CICSRGx/bin運(yùn)用程序data數(shù)據(jù)文件/隊(duì)列.編譯CICS SERVER程序沒有SQL語句時:cicstran -lC s.ccs - s.c#CICS預(yù)編譯cc 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 cicstcl -lC s.c

18、cs - s有SQL語句時:cpre s.pc - s.c #SYBASE預(yù)編譯mv s.c - s.ccscicstran -lC s.ccs - s.ccc L$CICS/lib -lcics_api e main -I$CICS/include o s s.c - s/usr/lpp/cics/src/samples 有 makefile 例如。.CICS SERVER程序注冊PD中注冊程序smitty cics -Manage CICS Regions-Define CICS Resources- Program Definations程序名:8個字符途徑:/var/cics_regi

19、ons/CICSRGx/bin/.系統(tǒng)運(yùn)轉(zhuǎn)日志買賣日志:/var/cics_region/CICSRGx/data/CSMT.out系統(tǒng)日志:/var/cics_region/CICSRGx/console.msg程序中printf的內(nèi)容打印到console.msg可用vi、tail、cicstail 命令查看內(nèi)容.CICS系統(tǒng)日志中顯示的錯誤Axxy/Ummnn-ABEND代號xx=PC : 程序控制錯誤xx=SR : 系統(tǒng)恢復(fù)錯誤常見錯誤代碼:AEIO在指定的途徑下沒有找到執(zhí)行程序。ASRA類似UNIX下的core dump。AEY7平安檢查錯誤。PD中應(yīng)設(shè)為public。檢查CICS用戶平安級別和PD中程序的級別能否匹配。APCTPD中未定義或未激活。 CICS不可用。查看錯誤代碼闡明: # info -l cics -s AEIO.常用CICS語句常用CICS語句.LINK.XCTL.SYNCPOINT.ASKTIME.FORMATTIME.INQUIREEXEC CICS INQUIRE FILE PROGRAM TDQUEUE TSQUEUE 獲得指定資源的相關(guān)信息。.GE

溫馨提示

  • 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

提交評論