Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104611242
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: C/C++

2008-04-17 17:20:51

 出处:Unix爱好者家园unix-cd.com   
8. 程序示例
8.1中心机端应用服务程序

● 编译:
cc  demoserv.c  s.a  -o  demoserv  -lsocket

● 程序:
/* demoserv.c */
#include "STrans.h"

/* 定义交易处理函数 */

int        ex1(), ex2();

term_t        stab[]= {
        {"000001",        ex1},
        {"000002",        ex2},
        {"",                0},
};

main()
{
        ServCtrl(stab, "demoserv");
}

ex1(rq, ans)
prq_t        *rq;
pans_t        *ans;
{
        char        buf[100],note[30];
        /* 根据rq进行处理 */
        /*
        ...
        ...
        */

        if (...) {
                Fail(rq, ans, "数据错误");
                return 1;
        }

        /*
        .
        .
        */
        strcpy(buf, "1234567890");
        strcpy(note,  "交易成功");
        /* 发回成功报文 */
        Ok(rq, ans, "%-15s%-20s", buf, note);
        /* 处理数据 */
        .
        .
        */
        strcpy(ans->;text, "ABCDEFGH");

        /* 主动发回处理结果 */
        SendRes("100006", ans, rq->;addr);
        /* 拷贝文件,rq->;addr是请求抱文中的客户机名称 */
        CopyStoC(PutFlag, "/tmp/file1""/tmp/file1", rq->;addr);
        CopyStoC(GetFlag, "/tmp/file2""/tmp/file2", rq->;addr);
}

ex2(rq, ans)
prq_t        *rq;
pans_t        *ans;
{
        char        buf[30000];
        char        p[10];
        int i;
        /* 交易处理,产生应答报文 */
        ans->;text[0] = 0;
        for (i = 0;i< 5000;i++) {
                sprintf(p, "%04d\n", i);
                strcat(ans->;text, p);
        }
        strcpy(ans->;bz, "0");        /* 置应答报文成功标志 */
        SendAns(rq, ans);
}

/* The end */

8.2 客户机端应用程序

● 编译:

cc  democlnt.c  CTrans.a  -o  democlnt  -lsocket 
#include "CTrans.h"
main()
{
        ex();
}

ex()
{
        pans_t pans;
        prq_t        prq;

        /* 取得消息队列 */
        ClntMsgGet();
        /* 定义请求报文*/
        CInitRq(&prq, "1234567""12""1234""ABCD");
        strcpy(prq.text, "0");
        /* 进行交易000010 */
        PktCtrl("000010""demoserv", &prq, &pans);
        printf("text=%s\n", pans.text);

        /* 等待接收主机主动发回处理结果报文 ,报文代号为100060 */
        WaitRes("100060" , &pans);
        printf("text=%s\n", pans.text);
        getchar();
        strcpy(prq.text, "1");
        PktCtrl("000020""demoserv", &prq, &pans);
        printf("text=%s\n", pans.text);

        /* 拷贝文件 */

        CopyCtoS(PutFlag, "/tmp/demo1""/tmp/demo1");
        CopyCtoS(GetFlag, "/tmp/demo2""/tmp/demo2");
}




              中创金融系统开发平台(BSDP)

                   (业务支持部分)

                      Ver 1.0

                 BSDP业务支持系统(BSS)



● cxfloor

[语法]        double cxfloor(x, n)
        double         x;
        int        n;

[说明]        cxfloor 根据传入的双精度浮点数 x, 保留小数点后 n位, 生成新的  
        浮点数返回.

[返回值] 留有小数点后 n位的新浮点数


● dateymd

[语法]        dateymd(s, y, m, d)  
        char        *s;
        int        *y, *m, *d;

[说明]        dateymd 根据字符串日期 s (格式: "yyyy/mm/dd"), 生成其对应的
        年, 月, 日, 存放在地址 y, m, d 中.

[返回值] 无


● date_dqr

[语法]        date_dqr(qxr, qx, dqr)
        char        *qxr, *dqr;
        int        qx;

[说明]        该函数调用根据起息日期 qxr, 以月为单位的存期 qx, 计算到期日 dqr.

[返回值] 无


● daysof   

[语法]        int daysof(rq1, rq2)        
        char        *rq1, *rq2;

[说明]        该函数返回两日期之间的间隔天数.

[返回值] 间隔天数


● daysofjxr   

[语法]        int daysofjxr(m, d, jxr)        
        int        m, d;
        char        *jxr;

[说明]        该函数用于活期利息积数计算, 求得到结息日的天数.

[返回值] 间隔天数


● rjdate

[语法]        char * rjdate(rq, n)        
        char        *rq;
        int        n;

[说明]        该函数返回与日期 rq 间隔 n 天的新日期.

[返回值] 新日期字符串.


● rjtrim

[语法]        rjtrim(s)
        char        *s;

[说明]        该函数将字符串 s 的前后空格及尾回车去掉

[返回值] 无


● v_floor

[语法]        v_floor(m)                  
        double *m;

[说明]        该函数对 m 对应的浮点数取整.

[返回值] 无


● monthsof   

[语法]        int monthsof(rq1, rq2)        
        char        *rq1, *rq2;

[说明]        该函数返回两日期之间的间隔月数.

[返回值] 间隔月数


● lx000      

[语法]  int lx000(hxfs, jxr, rq, fse, yjs, js, jsout)
        char        *hxfs, *jxr, *rq, *jsout;
        double        fse, yjs, *js;                

[说明]        活折类利息积数计算函数, 其中:
                hxfs: 活期利息积数方式, jxr: 结息日, rq: 工作日期
                fse: 发生额, yjs: 原利息积数, js: 业务后利息积数
                jsout: 业务后利息积数表示.

[返回值] 成功返回 0


● lx001      

[语法]        int lx001(hbcz, qxr, rq, fse, lx)
        char        *hbcz, *qxr, *rq;
        double        fse, *lx;

[说明]        活单类利息计算函数, 其中:
                hbcz: 贷币储种, qxr: 起息日, rq: 工作日期
                fse: 发生额, lx: 利息额

[返回值] 成功返回 0


● lx002      

[语法]        int lx002(hbcz, qxr, rq, fse, lx)        
        char        *hbcz, *qxr, *rq;
        double        fse, *lx;

[说明]        定活类利息计算函数, 其中:
                hbcz: 贷币储种, qxr: 起息日, rq: 工作日期
                fse: 发生额, lx: 利息额

[返回值] 成功返回 0


● lx003      

[语法]        int lx003(hbcz, qxr, rq, qx, fse, lx, bt, zdzc, yyzc, cc)
        char        *hbcz, *qxr, *rq, *zdzc, *yyzc;
        double        fse, *lx, *bt;
        int        qx, cc;

[说明]        整整类利息计算函数, 其中:
                hbcz: 贷币储种, qxr: 起息日, rq: 工作日期, qx: 原存期
                fse: 发生额, lx: 利息额, bt: 保值贴补, 
                zdzc: 自动转存标志, yyzc: 预约转存标志, cc: 到期提过标志

[返回值] 成功返回 0


● lx004      

[语法]        int lx004(zh, qxr, rq, jxfs, qx, lx, cc)
        char        *zh, *qxr, *rq, *jxfs;
        int        qx, cc;
        double        *lx;

[说明]        零整类利息计算函数, 其中:
                zh: 帐号, qxr: 起息日, rq: 工作日期, jxfs: 计息方式
                qx: 原存期, lx: 利息额, cc: 到期提过标志

[返回值] 成功返回 0


● lx005      

[语法]        int lx005(hbcz, qxr, rq, qx, jc, cqe, lx, cc)
        char        *hbcz, *qxr, *rq;
        int        qx, cc;
        double        jc, cqe, *lx;

[说明]        整零类利息计算函数, 其中:
                hbcz: 贷币储种, qxr: 起息日, rq: 工作日期
                qx: 原存期, jc: 开户金额, cqe: 周期取款额
                lx: 利息额, cc: 到期提过标志

[返回值] 成功返回 0


● cxtty_init 

[语法]        int cxtty_init()                                    

[说明]        初始化当前终端参数.            

[返回值] 成功返回 0, 当前终端未定义, 返回 -1.


● prt_init 

[语法]        int prt_init()                                    

[说明]        初始化打印参数.            

[返回值] 成功返回 0, 失败返回 -1.


● cxprt_file

[语法]        int cxprt_file(fname, flag, mode)
        char        *fname;
        int        flag;                
        int        mode;                

[说明]        文件打印函数, fname: 打印文件, flag: 0_使用存折打印机 1_报表打印机.

[返回值] 成功返回 0, 失败返回 -1.


● dzprint    

[语法]        int dzprint(fname_data, fname_form)
        char        *fname_data, *fname_form;

[说明]        存折打印函数, fname_data: 数据文件, fname_form: 格式文件

[返回值] 成功返回 0, 失败返回 -1.


● get_field            

[语法]        int get_field(fname,key,field,key_n,field_n, sep)
        char         *fname, *key, *field;
        int         key_n, field_n;
        char        sep;

[说明]        本函数用于在文件 fname 中寻找第 key_n 个字段为 key 的记录,
        把该记录的第 field_n 个字段赋给 field, 字段以 sep 为分隔符.

[返回值] 成功返回 0, 失败返回 -1.


● get_serial           

[语法]        int get_serial()

[说明]        本函数用于得软件序列号

[返回值] 成功返回 0, 失败返回 -1.


● get_uname            

[语法]        int get_uname()

[说明]        本函数用于得使用单位名称

[返回值] 成功返回 0, 失败返回 -1.


● verify               

[语法]        char verify(s)
        char        *s;

[说明]        本函数根据字符串 s, 生成校验位字符.

[返回值] 返回校验字符


● gen_mm               

[语法]        gen_mm(s)
        char        *s;

[说明]        本函数用于储户密码加密

[返回值] 无


● chk_mm               

[语法]        chk_mm(s1, s2)
        char        *s1, *s2;

[说明]        本函数用于储户密码检查

[返回值] 密码正确返回 0


● rjdelfrm             

[语法]        int rjdelfrm(sfile, dfile)
        char *sfile, *dfile;

[说明]        本函数用于将带伪打印控制码的文件, 转换成普通文件.

[返回值] 成功返回 0


● getdlldh             

[语法]        int getdlldh(hbcz, qx, rq, lldh)
        char        *hbcz, *rq, *lldh;
        int        qx;

[说明]        本函数用于取帐户到期支取时的利率代号.

[返回值] 成功返回 0


● gettlldh             

[语法]        int gettlldh(hbcz, qx, rq, lldh)
        char        *hbcz, *rq, *lldh;
        int        qx;

[说明]        本函数用于取帐户提前支取时的利率代号.

[返回值] 成功返回 0


● getglldh             

[语法]        int getglldh(hbcz, qx, rq, lldh)
        char        *hbcz, *rq, *lldh;
        int        qx;

[说明]        本函数用于取帐户过期支取时的利率代号.

[返回值] 成功返回 0


● get1ll               

[语法]        get1ll(lldh, rq, ll)
        char        *lldh, *rq;
        double        *ll;

[说明]        本函数用于根据代号 lldh, 日期 rq, 取利率, ll.

[返回值] 无


/* The end */ 
阅读(252) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~