VIEW(VIEW32)类型的buffer用于传输C结构数据。
1.VIEW(VIEW32)文件
tuxedo处理C结构需要一个文件,描述与C结构的映射和可能存在的FML模式转换。
文件的每一行描述C结构中的一个域,每行的格式如下:
type:域的数据类型。可选值:short、long、float、double、char、string、CARRAY;
cname:C结构域名;
fbname:FML buffer域名;
count:元素个数;
flag:标志。可选值(下列之一):
size:STRING或CARRAY型的大小,对于小数,两个数用”,”分隔;
NULL:定义该域的null值。若不定义,则tuxedo的缺省定义如下:对所有的数字型是0或(0.0);对char型是”\0”;对 STRING和CARRAY是””。定义时可以使用反斜线转义字符。指定关键字NONE表示该域没有缺省null值。对string和字符数组最大可为 2660个字符。
文件中以“#”打头的行是注释,被忽略;以“”开头的行也是注释,但它会被拷贝到生成的C头文件里。
示例:
VIEW aud
/* VIEW structure for audit information */
#type cname fbname count flag size null
long b_id BRANCH_ID 1 - - 0
float balance BALANCE 1 - - 0.0
string ermsg STATLIN 1 - 80 “”
END
2.VIEWC编译器
上一节形成了VIEW的描述文件(后缀为.v)后,还要使用VIEWC编译器编译形成一个C头文件(.h)和二进制文件(.V)。
VIEWC的语法如下:
viewc [-n] [-d viewdir] [-C] viewfile [viewfile ...]
或
viewc32 [-n] [-d viewdir] [-C] viewfile [viewfile ...]
其中viewfile就是上面的描述文件。
选项的含义如下:
-d viewdir:指定输出文件的存放路径(缺省放在当前目录);
-C:生成一份COBOL的拷贝,放在当前目录;
-n:不处理FML映射。
3.头文件
viewc生成的头文件包含结构的定义,可用于应用程序中。如:
struct aud {
long b_id; /* null=0 */
float balance; /* null=0.000000 */
char ermsg[80]; /* null=”” */
};
4.环境变量
在应用中使用VIEW,要指定二进制文件(.V或.VV)的存取路径。这通过设置如下的环境变量来实现:
VIEWFILES(VIEWFILES32):用逗号分隔的VIEW文件列表;
VIEWDIR(VIEWDIR32):用冒号分隔的路径列表;
若使用了FML,还要指定FML相关的环境变量。
注意:上面的文件列表、路径列表中间不能有空白字符。