部分类型解释:
FBFR:域缓存指示器
FLDOCC:域发生事件的序号
FLDLEN:域长度
FLDID:域的类型
FMLTYPE:支持标准的C语言的数据类型:short,long,float,double,char
增加了:string(一组连续的字符串,以NULL结尾)
carray(字符数组)
pointer(缓存指示器)
(一)ATMI函数:Application-Transaction Monitor Interface
tpreturn() 表示服务程序结束
1.发送回答给客户端
2.断开服务器开始时建立的所有连接
tpreturn(int rval, long rcode, char *data, long len, long flags)
实例:
tpreturn(TPFAIL,-1L,(char *)FBFRrqst,0L,0);程序执行失败,断开所有连接。
tpreturn(TPSUCCESS,0L,(char *)FBFRrqst,0L,0);程序执行成功,断开所有连接。
1。rval:TPFAIL和TPSUCCESS作为参数有各自的一套内部操作。在实际的程序开发中,程序成功的完成,参数置为TPFAIL;
程序失败则参数置为TPSUCCESS;
2。rcode:程序执行成功置为“0L”,执行失败置为“-1L”。
3。data:回复信息所用的参数。
4。len:指示发送数据缓冲的数量,在BOSS系统中一般置为0L或者忽略。
5。flags:为以后保留的参数必须设为0。
tpbegin()发起事务。失败返回-1,指出错误情况
#include <atmi.h>
int tpbegin(unsigned long timeout, long flags)
实例:
tpbegin(TRANSTIME, 0);发起时间控制的事件。0为预留参数必须置0
tpcommit()事务提交。失败返回-1。
实例:
tpcommit(0)
tpabort()事务回滚。失败返回-1。
实例:
tpabort(0)
userlog()打印ULOG信息
#include "userlog.h"
extern char *proc_name;
int userlog (format [ ,arg] . . .)
char *format;
实例:
(void)userlog((char *)"T--tpopen failed, Unix error %d\n",Uunixerr)
无返回类型,按字符型打印T--tpopen failed, Unix error ‘Uunixerr’错误内容。
tpalloc()申请缓存空间,失败返回-1
#include <atmi.h>
char * tpalloc(char *type, char *subtype, long size)
1。type:申请缓存空间的类型。
2。subtype:特殊缓存空间的类型,在BOSS系统中一般置为NULL。
trunc函数实例 3。size:申请缓存空间的大小。
实例:
FBFRansw=(FBFR*)tpalloc((char*)FMLTYPE,NULL,Fneeded((FLDOCC)NF,(FLDLEN)NV));
申请名为FBFRansw的缓存空间,类型为FMLTYPE,无特殊缓存类型,大小为Fneed((FLDOCC)NF,(FLDLEN)NV)
tpfree()释放缓存
tpfree(char *ptr)
1。ptr:释放的缓存名
实例:
tpfree((char *)FBFRansw);
释放名为FBFRansw的缓存。
tpgetlev()判断是否有事务正在进行,有:返回1,没有:返回0。
#include <atmi.h>
int tpgetlev()
实例:
tpgetlev() == 1
tpcall()调用服务端程序,失败返回-1
int tpcall(char *svc, char *idata, long ilen, char **odata, long *olen, long flags)
1。svc:调用的服务名
2。idata:请求数据缓冲器
3。ilen:发送数据缓冲器的数目
4。odata:回复信息写入的缓冲器指针
5。olen:回复信息的长度
6。flags:预留参数必须置0
实例:
tpcall("TOUPPER",buf,0,&buf,&len,0)
调用TOUPPER服务,传入buf,服务处理结果返回给buf。
tpopen()为连接的呼叫者打开资源管理程序,开启构造文件中的一些特殊的资源管理程序。一个呼叫者最多一个资源管理程序失败返回-1,成功返回0。
#include <atmi.h>
int tpopen(void)
tpclose()切断呼叫者与资源管理程序的联系,关闭构造文件中开启的资源管理程序失败返回-1,成功返回0。
#include <atmi.h>
int tpclose(void)
tpsvrinit()tuxedo程序调用tpsvrinit()进行初始化,发生在控制线索成为服务,而没有服务请求时。用于外部程序使得tpreturn()和tpforward()返回无结果
#include <atmi.h>
int tpsvrinit(int argc, char **argv)
tpsvrdone()tuxedo程序调用tpsvrdone()在完成处理之后,退出服务之前。断开连接,忽略未决回复,中止事务。tpreturn()和tpforward()返回无结果
#include <atmi.h>
void tpsvrdone(void)
实例:
#if defined(__STDC__)||defined(__cplusplus)
tpsvrinit(int argc,char ** argv)
#else
tpsvrinit(argc,argv) 进行初始化
int argc;
char ** argv;
#endif
{
/*打开资源管理器(数据库)*/
if (tpopen() == -1) 只能开启一次
{
}
}
void tpsvrdone() 完成服务请求
{
/*关闭资源管理器(数据库)*/
if (tpclose() == -1) 关闭
{
}
}
这些ATMI接口函数执行发生错误时,都将对tperrno()进行赋值,通过这种方式返回不同的错误。
(二)FML函数:
Fchg()修改缓存某域的值。失败返回-1。
#include <stdio.h>
#include "fml.h"
int Fchg(FBFR *fbfr, FLDID fieldid, FLDOCC oc, char *value, FLDLEN len)
1。fbfr:要改变得缓存名
2。fieldid:要改变的域名
3。oc:是发生事件的号码.(可以理解成为行号)
4。value:修改值
5。len:修改值的长度。(如果为0则是value的默认长度)
实例:
Fchg(FBFRansw,RESULTCODE,(FLDOCC)0,(char *)&resultcode,(FLDLEN)0)
把FBFRansw缓存中的域名为RESULTCODE的首条记录修改为resultcode的内容,长度为resultcode的默认长度
Ffind()查指定内容的值,失败返回NULL,并修改Ferror指出错误情况。
#include <stdio.h>
#include "fml.h"
char * Ffind(FBFR *fbfr, FLDID fieldid, FLDOCC oc, FLDLEN *len)
1。fbfr:查询的缓存名
2。fieldid:查询的域名
3。oc:查询发生事件的号码(可以理解成为行号)
4。len:查询内容的长度
实例:
Ffind(FBFRrqst,RESULTERRINFO,0,(FLDLEN *)&lLen)
查询FBFRrqst缓存中RESULTERRINFO域的首条记录的内容,长度为值的长度。
Fget()当值被修改时重新取值。失败返回-1,并修改Ferror指出错误情况。
#include <stdio.h>
#include "fml.h"
int Fget(FBFR *fbfr, FLDID fieldid, FLDOCC oc, char *value, FLDLEN *maxlen)
1。fbfr:取值的缓存名
2。fieldid:取值的域名
3。oc:取值发生事件的号码(可以理解成为行号)
4。value:取得值赋给的变量
5。maxlen:值返回长度
实例:
Fget(FBFRrqst,TRADETYPECODE,(FLDOCC)0,tradetypecode,(FLDLEN)0)
获取FBFRrqst缓存中TRADETYPECODE域的首条记录的值赋给tradetypecode,长度为默认长度
Findex()明确的指定一快缓存。失败返回-1,并修改Ferror指出错误情况。
#include <stdio.h>
#include "fml.h"
int Findex(FBFR *fbfr, FLDOCC intvl)
1。fbfr:是buffer名
2。intvl:指定的标定指数间隔
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论