打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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=/inc
/* 用逗号分割的二进制view文件 */
VIEWFILES=user.V
export VIEWDIR VIEWFILES
(3)编译VIEW文件
使用viewc(viewc32)编译view文件
-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: uxedowsy"
set FIELDTBLS32=user.fld
其中:
FLDTBLDIR(FLDTBLDIR32):指明Field Table文件的名字,多个用逗号分割
FIELDTBLS (FIELDTBLS32):Filed Table文件的所在路径,多个用冒号分割,在WinNT系统中使用分号分割.
(3)编译FML Field Table文件
使用mkfldhdr(mkfldhdr32)编译Field Table文件
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函数在后续的文章有详细的介绍和代码分析.
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【原创】(C#)字符串倒序的5种方法
ctypes 使用方法与说明
Java本地调用JNI使用规范详解
WCHAR,CHAR,TCHAR的区别
C 避坑指南
java中文件操作大全
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服