Tuxedo資料buffer基本型別介紹
轉載:http://dev2dev.bea.com.cn/techdoc/200305561.html
作者:吳紹永是(dev2dev ID: wsywin) BEA dev2dev中文網站--線上技術論壇Tuxedo欄目版主,資深Tuxedo專家
一、 課程目標
透過本課程學習,你可以掌握如下知識:
注:後續的課程將介紹Tuxedo新增的資料型別:EFML(Embedded Record in FML)、XML Buffer
二、 String型別buffer介紹
(1)STRING型別buffer簡介
STRING型別buffer是主要用於面向行、變長度的文字資訊型別buffer。STRING型別buffer要求必須以NULL作為結束符的。如果系統採用STRING型別,那麼在配置ubbconfig檔案時,必須在*MACHINE部分配置TYPE,指明buffer型別為STRING型別。在兩種不同型別架構的機器進行buffer傳輸時候,TUXEDO對STRING型別buffer進行加碼、解碼過程。無論系統申請了多少長度的buffer,系統自動按著NULL所在的位置決定STRING型別的buffer長度。
(2)STRING型別buffer如何申請
char *SndBuf;
SndBuf = (char *) tpalloc("STRING",NULL,1024)
(3)STRING型別使用方法和呼叫方法
strcpy(SndBuf,"Bea Tuxedo");
tpcall("TOUPPER",SndBuf,0,&RcvBuf,&len,0);
三、 CARRAY型別buffer介紹
(1)CARRAY型別buffer簡介
CARRAY型別buffer是一種獨立於機器的buffer型別。使用者在使用時必須指定CARRAY型別資料的長度,CARRAY型別資料可以包含NULL字元。CARRAY型別資料不需要加、解碼過程。CARRAY型別資料可以用來傳輸漢字、二進位制資料、檔案、圖形等。CARRAY型別可以作為FML(FML32)、VIEW(VIEW32)的資料型別子項buffer。
(2)CARRAY型別buffer如何申請
tpalloc("CARRAY",NULL,1024*2)
(3)CARRAY型別使用方法和呼叫方法
四、 VIEW(VIEW32)型別buffer介紹
(1)VIEW型別buffer簡介
Tuxedo使用VIEW型別buffer處理類似C語言的結構等資料型別複雜資料。使用VIEW型別buffer可以將各資料元素與一種結構資料型別結合,透過結構就可以訪問各資料元素。VIEW型別資料即使沒有沒有資料也佔用空間,結構發生變化,需要重新編譯程式。
註明:(VIEW型別buffer是16位定址的,VIEW32是32位定址的.)
(2)VIEW型別buffer使用方法
使用VIEW型別資料步驟:
(1)建立VIEW檔案
VIEW user $ /* VIEW structure for user information */ #type cname fbname count flag size null long count COUNT 1 - - “” 0 float sumfee SUMFEE 1 - - 0.0 string usrname USRNAME 1 - 80 “” short num NUM 1 - - 0 END
|
(2)設定環境變數
/* view檔案存放路徑,使用冒號分割(NT用分號)*/
VIEWDIR=$APPDIR/inc
/* 用逗號分割的二進位制view檔案 */
VIEWFILES=user.V
export VIEWDIR VIEWFILES
(3)編譯VIEW檔案
$viewc -n user.v
viewc [-n] [-d viewdir] viewfile [viewfile ...]
或者:
viewc32 [-n] [-d viewdir] viewfile [viewfile ...]
[-d viewdir]:指定輸出檔案的路徑(預設在當前目錄下)
[-n]:指定在編譯view結構型別資料不產生FML buffer資料結構
(4)view編譯後生成的標頭檔案
struct user { /* VIEW structure for user information */ long count; float sumfee; char usrname[80]; short num; }; |
(5)VIEW型別buffer的使用
struct user *pszUser;
pszUser=(struct user *)tpalloc("VIEW"," user",sizeof(user));
…………………
pszUser ->count = 1680;
pszUser ->sumfee = 198.96;
strcpy(pszUser->usrname,"Wsy");
pszUser->num = 160;
…………………
tpcall("PSVC",(char *)pszUser,0,(char **)&pszUser,&rcvlen,0);
…………………
五、 FML(FML32)型別buffer介紹
(1)VIEW型別buffer簡介
FML型別buffer允許存取多個命名的欄位。例如:(NAME: "BEA",ADDRESS "China Beijing",PHONE "010-85281188")。每一個命名的欄位可以在buffer中存放零個或更多個(occurrences)的值.
註明:(FML型別buffer是16位定址的,FML32是32位定址的.)
(2)FML支援的資料型別:
(3)FML型別buffer使用方法
使用FML型別資料步驟:
(1)建立FML Field Table檔案
*base 1000 # name number type flags comments COUNT 1 long - - SUMFEE 2 float - - USRNAME 3 string - - NUM 4 short - - |
(2)設定環境變數
set FLDTBLDIR32="c:tuxedowsy"
set FIELDTBLS32=user.fld
其中:
FLDTBLDIR(FLDTBLDIR32):指明Field Table檔案的名字,多個用逗號分割
FIELDTBLS (FIELDTBLS32):Filed Table檔案的所在路徑,多個用冒號分割,在WinNT系統中使用分號分割.
(3)編譯FML Field Table檔案
$mkfldhdr32 user.fld
(4)FML Field Table編譯後生成的標頭檔案
/* fname fldid */ /* ----- ----- */ #define COUNT ((FLDID32)33555433) /* number: 1001 type: long */ #define SUMFEE ((FLDID32)100664298)/* number: 1002 type: float */ #define USRNAME ((FLDID32)167773163)/* number: 1003 type: string */ #define NUM ((FLDID32)1004) /* number: 1004 type: short */ |
(5)FML型別buffer的使用
FBFR32 *SndBuf;
SndBuf = (FBFR32 *)tpalloc("FML32",NULL,1024);
…………………
lCount = 1680;
Fchg32(SndBuf, COUNT,0,(char *)&lCount ,0);
fSumFee = 198.96;
Fchg32(SndBuf, SUMFEE, (char *)&fSumFee,0);
Strcpy(sUsrName , "wsy");
Fchg32(SndBuf, USRNAME, (char *)sUsrName,0);
iNum = 160;
Fchg32(SndBuf, SUMFEE, (char *)&iNum,0);
…………………
tpcall("PSVC",(char *) SndBuf,0,(char **)& SndBuf,&rcvlen,0);
Fget32(SndBuf, COUNT,0, (char *)&lCount ,0);
Fget32(SndBuf, USRNAME,0, (char *)sUsrName,0);
…………………
注:FML和VIEW型別buffer的API函式在後續的文章有詳細的介紹和程式碼分析.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267897/viewspace-1007485/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Redis】資料型別介紹Redis資料型別
- Rust 資料型別介紹Rust資料型別
- Oracle資料型別介紹Oracle資料型別
- JAVA_資料型別介紹與基本資料型別之間的運算規則Java資料型別
- 第二章 java基礎(基本資料型別介紹)Java資料型別
- 學習變數的目的及基本資料型別介紹變數資料型別
- Tuxedo總體介紹UX
- javascript資料型別和作用域介紹JavaScript資料型別
- MySQL CHAR和VARCHAR資料型別介紹MySql資料型別
- 基本資料型別資料型別
- js資料型別之基本資料型別和引用資料型別JS資料型別
- Tuxedo的配置檔案介紹UX
- 基本資料型別與字串型別資料型別字串
- C++中的基本變數型別介紹C++變數型別
- GBase8s資料型別介紹資料型別
- javascript資料型別轉換簡單介紹JavaScript資料型別
- JavaScript基本資料型別JavaScript資料型別
- Java 基本資料型別Java資料型別
- Java基本資料型別Java資料型別
- Mysql基本資料型別MySql資料型別
- Redis基本資料型別Redis資料型別
- Java -基本資料型別Java資料型別
- JAVA中基本資料型別和引用資料型別Java資料型別
- Python技術之Number資料型別介紹Python資料型別
- MySQL全面瓦解3:資料型別介紹與分析MySql資料型別
- 變數以及八大資料型別介紹變數大資料資料型別
- 常用資料庫基本資料型別資料庫資料型別
- Java中的基本資料型別與引用資料型別Java資料型別
- 基本資料型別,for迴圈資料型別
- Redis資料型別基本操作Redis資料型別
- python基本資料型別Python資料型別
- 基本資料型別轉化資料型別
- 基本資料型別之字串資料型別字串
- Java的基本資料型別Java資料型別
- 三,基本資料型別(下)資料型別
- 二, 基本資料型別(上)資料型別
- 2-基本資料型別資料型別
- JavaScript 基本資料型別(轉)JavaScript資料型別