部分类型解释:
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小时内删除。