|
|
dev2dev 首页 > 资源中心 > 技术文章
Tuxedo数据buffer基本类型介绍
Tuxedo数据buffer基本类型介绍
| |
| |
一、 课程目标 通过本课程学习,你可以掌握如下知识:
掌握tuxedo中STRING类型buffer的用途
掌握tuxedo中CARRAY类型buffer的用途
掌握tuxedo中FML(FML32)类型buffer的用途
掌握tuxedo中VIEW(VIEW32)类型buffer的用途 注:后续的课程将介绍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类型数据步骤:
建立VIEW文件
设置环境变量
编译VIEW文件
在代码中包含VIEW头文件,在程序中使用VIEW结构及API函数
编译程序
运行程序 (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(viewc32)编译view文件 $viewc -n user.v
view命令简介: 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支持的数据类型:
Short
Char
Long
Float
Double
String
Carray (3)FML类型buffer使用方法 使用FML类型数据步骤:
建立FML文件
设置环境变量
编译FML文件
在代码中包含FML头文件,在程序中使用FML API函数
编译程序
运行程序 (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:\tuxedo\wsy" set
FIELDTBLS32=user.fld 其中: FLDTBLDIR(FLDTBLDIR32):指明Field
Table文件的名字,多个用逗号分割 FIELDTBLS (FIELDTBLS32):Filed
Table文件的所在路径,多个用冒号分割,在WinNT系统中使用分号分割. (3)编译FML Field
Table文件
使用mkfldhdr(mkfldhdr32)编译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函数在后续的文章有详细的介绍和代码分析.
|
|

| 作者简介 |
|
吴绍永是(dev2dev ID: wsywin) BEA dev2dev中文网站--在线技术论坛Tuxedo栏目版主,资深Tuxedo专家 |
作者其它文章
|
|
 |
|