freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

cics編程-資料下載頁

2025-08-12 02:30本頁面

【導(dǎo)讀】說的,還是聽的,都興高采烈,頻頻點(diǎn)頭:好,好!不過,具體怎么“轉(zhuǎn)”。是不是把兩層C/S結(jié)構(gòu)的程序放到什么容器里“煮”一下,再取出來就可以。當(dāng)然不行,看來一個(gè)“轉(zhuǎn)”字還頗有點(diǎn)兒學(xué)問。如果您原來靠游泳過。劃船的經(jīng)驗(yàn)來驅(qū)動(dòng)它,CICS需要的是——編程。也一樣簡單,讀了本章的內(nèi)容就會(huì)知道。它技術(shù)資料,這里只提供了C語言的例子。不過,這里提供了幾乎所有常用的。后,再回到本章。力,所以更象是一個(gè)兩層C/S的應(yīng)用。是的,如果不考慮價(jià)格因素,用CICS去實(shí)現(xiàn)許多一般的服務(wù)程序。可是個(gè)省事的好辦法。的時(shí)間,供他們的各種前端客戶程序使用。UNIX平臺(tái)和WINDOWSNT,甚至可以移植到AS400和IBM大型機(jī)上。

  

【正文】 們可以把 CICS 應(yīng)用開發(fā)工作分為三個(gè)部分:界面邏輯層的開發(fā)人員來 設(shè)計(jì)用戶界面,比如:錄入、顯示和打印等;業(yè)務(wù)邏輯層的開發(fā)人員來設(shè)計(jì)應(yīng)用邏輯,比如帳務(wù)數(shù)據(jù)處理等;數(shù)據(jù)訪問邏輯層的開發(fā)人員來配置和優(yōu)化數(shù)據(jù)庫系統(tǒng)。 針對(duì) CICS 進(jìn)行的開發(fā)工作可以總結(jié)為下面的示意圖。后文將解釋圖中涉及的開發(fā)工具和開發(fā)環(huán)境。 27 圖 222 CICS 的服務(wù)程序框架 CICS為程序員提供了豐富的 CICS API命令,這些命令是嵌入在 C或 COBOL程序中的編程語句,每條命令都以 EXEC CICS 起始,在加上一些必要的或可選的參數(shù),對(duì) C 語言來說,要以分號(hào)結(jié)束。 CICS API 在 RS6000、 AS400、 VSE/ESA、HPUX、 Solaris、 OS2 和 Windows NT 上的實(shí)現(xiàn)基本相同,所以很容易移植。cicstran命令可以把含有 CICS API的 C源文件預(yù)編譯成一般的 C源文件,當(dāng)然,也可以象本書的例子那樣,使用 cicstcl 命令,將含有 CICS API 的 C 源文件一步編譯成最終結(jié)果,即 CICS 的服務(wù)程序 (program)。 一般來說,只能用 C 或 COBOL 語言來寫 CICS 服務(wù)程序。用于 CICS 編譯命令的 C 語言后綴是 .CCS。 以下是 CICS API 的例子: EXEC CICS LINK PROGRAM(program_name) RESP(resp_code)。 If(resp_code == DFHRESP(NORMAL) ){ …… } 清單 221 28 EasyCICS 是開發(fā) CICS 的一套簡易的接口,利用 EasyCICS 提供的函數(shù),可以基本避免調(diào)用 CICS API 的復(fù)雜性,并提供其它好處 (參見下文 )。本書的示例程序基本上都用 EasyCICS 編寫。 一般來說,希望通過 CICS 來保證和協(xié)調(diào)數(shù)據(jù)庫事務(wù)的完整性。所以,針對(duì)不同的數(shù)據(jù)庫,要定義不同的 XA 文件 (switch load file)。 XA 協(xié)議是 X/Open組織針對(duì)數(shù)據(jù)庫和事務(wù)管理器制定的應(yīng)用結(jié)構(gòu)。使用 XA,可以訪問 DB ORACLE、SYBASE、 INFORMIX 和 MS SQLServer 等數(shù)據(jù)庫。如果您使用的是 CICS for Windows NT,可以在使用圖形界面的 CICS Administration Utility,選擇 CICS 域的資源定義,再選擇 product,根據(jù)數(shù)據(jù)庫種類和要求定義 XA 連接 (操作步驟見下一章 )。 具體的開發(fā)方法應(yīng)采用稱為嵌入式 SQL(ESQL)的方法 (后面有詳細(xì)的介紹,在 ORACLE 中又叫 PROC)。這個(gè)方法做出的 C 語言源程序大體可以移植到各種常用的數(shù)據(jù)庫系統(tǒng)。 C 語言中的嵌入式 SQL(ESQL)方法,指的是在 C 語言源文件中嵌入 SQL語句,通過“宿主變量”在 C 代碼和 SQL 語句之間傳遞數(shù)值。所有 SQL語句以 EXEC SQL 起始。 ESQL的源文件可以通過數(shù)據(jù)庫的預(yù)編譯工具編譯成一般的 C 源文件,這一點(diǎn)和使用 CICS API 相同。清單 2110 和 2111展示的即 ESQL源文件。 CICS 的客戶程序框架 CICS 客戶程序通常使用 ECI(External Call Interface)調(diào)用 CICS 服務(wù)程序或事務(wù),二者通過一塊稱為公共數(shù)據(jù)區(qū)的內(nèi)存空間來傳遞數(shù)據(jù)。 ECI 提供兩個(gè)基本函數(shù),其聲明如下: ? cics_sshort_t CICSCALL CICS_EciListSystems( cics_char_t CICSPTR *NameSpace, cics_ushort_t CICSPTR *Systems, CICS_EciSystem_t CICSPTR *List )。 ? cics_sshort_t CICSCALL CICS_ExternalCall( ECI_PARMS CICSPTR *EciParms )。 ECI 提供 C/C++的頭文件和函數(shù)庫,支持常見的 C 開發(fā)工具。除此之外,還有基于 ECI 的 OLE 支持。 EasyCICS 的客戶程序也是基于 ECI 的,它不但非常簡易,還提供了一些優(yōu)秀的特性,并且支持更廣泛的前端客戶開發(fā)工具,包括: ? C/C++ ? JAVA ? WebSphere(通過 JAVA) ? PowerBuilder(通過 OLE 和外部數(shù)據(jù)源 ) ? Delphi (通過 OLE 和數(shù)據(jù)控件 ) ? Notes (通過 OLE) ? Visual Basic (通過 OLE) ? C++Builder (通過 OLE) ? Inter Information Server (通過 OLE) ? Visual C++ (通過 C/C++和 OLE) 29 ? Inter Explorer (通過 OLE) ? MS Office97 (通過 OLE) ? Visual J++ (通過 OLE) ? Windows Scripting Host (通過 OLE) 本書的示例程序基本上都采用 EasyCICS 編寫。在隨 EasyCICS 發(fā)行的 CD上有所有開發(fā)工具的示例源程序。 EasyCICS—— 使用 CICS 的捷徑 如果您只了解 CICS API 和 ECI,而不熟悉 EasyCICS,那么,讀過本書后,您可能會(huì)把您的許多應(yīng)用改寫為 EasyCICS。 EasyCICS 不但簡單,而且避免了許多出現(xiàn)錯(cuò)誤的機(jī)會(huì)。 EasyCics 是針對(duì) CICS 系統(tǒng)開發(fā)的一套簡易的程序開發(fā)界面。它是主要目的是緩解數(shù)據(jù)交換的難度,便于各種前端開發(fā)工具訪問 CICS 系統(tǒng)。 EasyCics 分為服務(wù)器和客戶機(jī)兩部分。服務(wù)器部分提供增強(qiáng)的 C 語言函數(shù)庫和頭文件,客戶機(jī)部分提供 C 函數(shù)庫和頭文件, OLE 組件, JAVA 類等,供各種前端開發(fā)工具使用使用。 CICS 基本解決了一些 CICS 開發(fā)的疑難問題,例如: △ 數(shù)據(jù)量大于 32K 問題, EasyCics 對(duì)最終用戶提供透明支持。 △ 平臺(tái)數(shù)據(jù)移植問題,不必考慮高低位轉(zhuǎn)換和對(duì)齊方式。 △ 對(duì)前臺(tái)工具的廣泛支持。 30 第三節(jié) CICS 服務(wù)程序設(shè)計(jì)入門 EasyCICS 的服務(wù)程序設(shè)計(jì)流程 現(xiàn)在,相信您已經(jīng)掌握了 ESQL,并且對(duì) CICS 編程有了一定的了解,那么使用 EasyCICS 開發(fā) CICS 服務(wù)程序就再容易不過了。還是回到我們的老朋友 程序,這個(gè)程序有良好的移植性,本章的所有客戶程序的例子都 訪問這個(gè)服務(wù)程序。程序的源文件為清單 231。 /*****************************************************************************/ /* HEADER FILES */ include /*****************************************************************************/ /* DEFINES */ ifdef _WIN32 define DLLIMPORT __declspec(dllimport) define DLLEXPORT __declspec(dllexport) define CDECL __cdecl else define DLLIMPORT define DLLEXPORT define CDECL endif /* define either ORA or DB2 here */ define DB2 define SQLNOTFOUND 100 if defined ( DB2 ) include elif defined ( ORA ) define SQLNOTFOUND 1403 endif 31 /*****************************************************************************/ /* Global Variables */ EXEC SQL INCLUDE sqlca。 EXEC SQL BEGIN DECLARE SECTION。 char Usr_name[61]。 char Dev_no[9]。 long Call_flg。 char Called_arno[11]。 char Called_no[15]。 char Call_dat[21]。 double Call_dur。 double Call_rate。 double Call_fee。 double Add_fee。 char as_dev_no[9]。 EXEC SQL END DECLARE SECTION。 /*****************************************************************************/ /*Functions*/ /*****************************************************************************/ /* */ void GetValueNum(char *Key, char *Value, int Num){ char s[4096]。 GetValue( Key, s )。 strncpy(Value,s,Num)。 Value[Num1] = 39。165。039。 } /* */ void main(){ char statusbuf[1024], s[30]。 if( InitEasyCics() ) ExitEasyCics()。 32 /*Read:*/ GetValueNum( NO, as_dev_no, sizeof(as_dev_no) )。 /*Write:*/ BeginWrite()。 SetValue( VER, Tele )。 RsCreate(10)。 RsSetColNameList(Usr_name,Dev_no,Call_flg,Called_arno,Called_no, Call_dat,Call_dur,Call_rate,Call_fee,Add_fee)。 /*可省略 */ EXEC SQL DECLARE c1 CURSOR FOR SELECT , , , , , , , , , FROM auto10a_list, bas_infot WHERE ( = ) AND = :as_dev_no。 sprintf(statusbuf,declear cursor code=%d165。n, )。 PrintStatus(statusbuf)。 EXEC SQL OPEN c1。 sprintf(statusbuf,open cursor code=%d165。n, )。 PrintStatus(statusbuf)。 do{ EXEC SQL FETCH c1 INTO :Usr_name, :Dev_no, :Call_flg, :Called_arno, :Called_no, :Call_dat, :Call_dur, :Call_rate, :Call_fee, :Add_fee。 sprintf(statusbuf,fetch code=%d165。n, )。 PrintStatus(statusbuf)。 if( ( == SQLNOTFOUND) || ( 0) ) break。 else RsAddRow()。 sprintf( statusbuf, %s,%s,%d,%s,%s,%s,%,%,%,%165。n , Usr_name, Dev_no, Call_flg, Called_arno, Called_no, Call_dat , Call_dur, Call_rate, Call_fee, Add_fee )。 PrintStatus(statusbuf)。 33 RsSetCol( 1, Usr_name )。 RsSetCol( 2, Dev_no )。 sprintf( s, %l
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1