apppack

来源:互联网 发布:爆破网络连接图 编辑:程序博客网 时间:2024/05/08 23:03
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <curses.h>#include "pbbase/pbtcpdeal.h"#include "pbsysstrlen.h"#include "pbstructdef.h"#include "pbcomm.h"#include "pbbase/pberrlog.h"#include "pbbase/pbbaseipc.h"#include "pbbase/pbmsgdeal.h"#include "pbbase/pbsem.h"#include "pbbase/pbshm.h"#include "pbsys/pbconstval.h"#include "pbbase/pbfuncroute.h"EXEC SQL INCLUDE "pbappdb.h";EXEC SQL INCLUDE "pbdbfunc.h";#define ENTRY_ROW 100#define ENTRY_COL 1024EXEC SQL INCLUDE "pbbusi/busi004.h";/* * Name  : Data_HostAddHead( char *hosttrancode_para ) * Action: HostAddHead * Input : _tx_code * Output: * Return: 0-succ other-false * Auther: syd * Date  : 20130131 */intData_HostAddHead( char *hosttrancode_para ){    EXEC SQL BEGIN DECLARE SECTION;    char tlrno[10+1];    char instno[4+1];    EXEC SQL END DECLARE SECTION;    char hosttrancode[50];    char pbjourno[10+1];    char seq_no[10+1];    char tmp_str[8+1];    char ListSeqNo[10+1];    char clrdate[8+1];    char r_idx[200+1];    char tran_date_time[10+1];    char pbdate_str[8+1];    char sys_trace_num[6+1];    int  i=0;    long rellen=0;    int relen=0;    memset( hosttrancode, 0x00, sizeof(hosttrancode) );    memset( pbjourno, 0x00, sizeof(pbjourno) );    memset( seq_no, 0x00, sizeof(seq_no) );    memset( tmp_str, 0x00, sizeof(tmp_str) );    memset( ListSeqNo, 0x00, sizeof(ListSeqNo) );    memset( clrdate, 0x00, sizeof(clrdate) );    memset( r_idx, 0x00, sizeof(r_idx) );    memset(tran_date_time,0x00,sizeof(tran_date_time));    memset(sys_trace_num,0x00,sizeof(sys_trace_num));    memset(pbdate_str,0x00,sizeof(pbdate_str));    /* set data for host head */    GetPoolDataByName("PBSYS", "PbJourNo", 0, 0, pbjourno, &relen );    if(strlen(pbjourno)<=8)    {        for(i=0;i<8-strlen(pbjourno);i++)        {            tmp_str[i]='0';        }        strcat(tmp_str,pbjourno);        WriteLog( ERR_LVL, "tmp_str1[%s]", tmp_str );    }    else    {        memcpy(tmp_str,pbjourno+(strlen(pbjourno)-8),8);        WriteLog( ERR_LVL, "tmp_str2[%s]", tmp_str );    }    sprintf(seq_no, "%s%s", "TT", tmp_str );    trim(seq_no);    sprintf(ListSeqNo, "%s%s", "PB", tmp_str );    trim(ListSeqNo);    WriteLog( ERR_LVL, "seq_no[%s]ListSeqNo[%s]", seq_no ,ListSeqNo );    /* add by syd 20150119 */    GetPoolDataByName("Bconnex8583","tran_date_time",0,0,tran_date_time,&relen);    GetPoolDataByName("Bconnex8583","sys_trace_num",0,0,sys_trace_num,&relen);    GetPoolDataByName("PBSYS", "PbDate", 0, 0, pbdate_str, &relen );    trim(tran_date_time);    trim(sys_trace_num);    trim(pbdate_str);    WriteLog( ERR_LVL, "tran_date_time[%s]", tran_date_time );    WriteLog( ERR_LVL, "sys_trace_num[%s]", sys_trace_num );    WriteLog( ERR_LVL, "PbDate[%s]", pbdate_str );    memcpy(clrdate,pbdate_str,4);    memcpy(clrdate+4,tran_date_time,4);    sprintf(r_idx,"%s%s",clrdate,sys_trace_num);    trim(clrdate);    trim(r_idx);    WriteLog( ERR_LVL, "clrdate[%s]", clrdate );    WriteLog( ERR_LVL, "r_idx[%s]", r_idx );    PutPoolDataByName( "ABSHEAD", "ClrDate", 0, 0, clrdate , 0 );    PutPoolDataByName( "ABSHEAD", "record_idx", 0, 0, r_idx , 0 );    PutPoolDataByName( "ABSHEAD", "AddElements", 0, 0, "||||||||||" , 0 );    PutPoolDataByName( "ABSHEAD", "PBDate", 0, 0, pbdate_str, 0 );    strcpy( hosttrancode, hosttrancode_para );    PutPoolDataByName( "ABSHEAD", "_tx_code", 0, 0, hosttrancode , 0 );    PutPoolDataByName( "ABSHEAD", "chnl_no", 0, 0, "4", 0 );    PutPoolDataByName( "ABSHEAD", "_tx_op_stat", 0, 0, "N", 0 );    if(memcmp(hosttrancode,"9099",4)==0)    {        PutPoolDataByName( "ABSHEAD", "_seq_no", 0, 0, tmp_str, 0 );        PutPoolDataByName( "ABSHEAD", "list_seqno", 0, 0, "", 0 );    }    else    {        PutPoolDataByName( "ABSHEAD", "_seq_no", 0, 0, seq_no, 0 );    }    PutPoolDataByName( "ABSHEAD", "AreaNo", 0, 0, "000000", 0 );    PutPoolDataByName( "ABSHEAD", "ChnlNo", 0, 0, "001", 0 );    PutPoolDataByName( "ABSHEAD", "BusiType", 0, 0, "001", 0 );    if(memcmp(hosttrancode,"5710",4)==0 || memcmp(hosttrancode,"5715",4)==0 || memcmp(hosttrancode,"5718",4)==0)    {           PutPoolDataByName( "ABSHEAD", "list_seqno", 0, 0, ListSeqNo, 0 );    }       PutPoolDataByName( "ABSHEAD", "tran_flag", 0, 0, (char *)&rellen, 0 );        memset( instno, 0x00, sizeof(instno) );    memset( tlrno, 0x00, sizeof(tlrno) );            EXEC SQL select virinstno,virtlrno into :instno, :tlrno from t_pb_busi_tlr where chnlno='001' and busitype='001' and areano='000000' and terminal_no='0000000000' and terminal_type = '1' and flag='00000000000000000000';    if( SQLCODE != 0 )    {        WriteLog( ERR_LVL, "select instno,tlrno err SQLCODE[%d]!", SQLCODE );    }    rtrim(tlrno);    WriteLog( ERR_LVL, "tlrno[%s]", tlrno );        rtrim(instno);    WriteLog( ERR_LVL, "instno[%s]", instno );         if( (0>=strlen(instno)) || (0>=strlen(tlrno)) )    {        WriteLog( ERR_LVL, "instno[%s] tlrno[%s] err", instno, tlrno );        return(-1);    }        PutPoolDataByName( "ABSHEAD", "organ_no", 0, 0, instno, 0 );    PutPoolDataByName( "ABSHEAD", "_tlr_no", 0, 0, tlrno, 0 );        return(0);    }           /* Fuction  :  Pb_ftpData * Action   :  PB call host ftp sever * Input    :  filename * Output   : * Author   : * Date     : 2013/02/20 */intPb_ftpData(char *filename){    int ret;    char file_name[500+1];    memset( file_name, 0x00, sizeof(file_name) );    //sprintf(file_name, "%s/99/9996/%s",getenv("PRINTERDIR"),filename );    sprintf(file_name, "%s/%s/%s/%s",getenv("PRINTERDIR"),getenv("INST_PATH"),getenv("INST_NO_PATH"),filename );    //ret = TransFileRecv( "FTPFILE", file_name, "9996", 0 );    ret = TransFileRecv( "FTPFILE", file_name, getenv("INST_NO_PATH"), 0 );    if( ret !=0 )    {        WriteLog(ERR_LVL,"Receiving file failed!");        return PB_ERR;    }    return PB_OK;}/* Fuction  :  Host_ftpData * Action   :  PB call host ftp sever, put file to host * Input    :  filename * Output   : * Author   : * Date     : 2013/02/20 */intHost_ftpData(char *filename){    int ret;    char file_name[500+1];    memset( file_name, 0x00, sizeof(file_name) );    memcpy(file_name, filename, strlen(filename));    //ret = TransFileSend( "FTPFILE", file_name, "9996", 0 );    ret = TransFileSend( "FTPFILE", file_name, getenv("INST_NO_PATH"), 0 );    if( ret !=0 )    {        WriteLog(ERR_LVL,"Sending file failed!");        return PB_ERR;    }    return PB_OK;}const char *get_date_time( ){    EXEC SQL BEGIN DECLARE SECTION;        dtime_t process_begin;    EXEC SQL END DECLARE SECTION;     static char t_time[30];    char s_time[30];    char tmp_time[30];    memset( s_time, 0, sizeof(s_time) );    memset( t_time, 0, sizeof(t_time) );    memset( tmp_time, 0, sizeof(tmp_time) );    dtcurrent( &process_begin );    dttoasc( &process_begin, s_time );    memcpy(tmp_time,s_time,10);    strcpy(t_time,tmp_time);    memset(tmp_time, 0x00, sizeof( tmp_time));     memcpy(tmp_time,s_time+11,12);    strcat(t_time, tmp_time);    rtrim(t_time);            WriteLog( ERR_LVL, "1111111t_time[%s]", t_time );        return(t_time);}intGet_pbjourno(char * const PbJourNo,char * const TTPbJourNo,char * const PBPbJourNo){    int rellen=0;    int i;      char tmp_str[8+1];     memset(tmp_str,0x00,sizeof(tmp_str));    GetPoolDataByName("PBSYS","PbJourNo",0,0,PbJourNo,&rellen);    if(strlen(PbJourNo)<=8)    {        for(i=0;i<8-strlen(PbJourNo);i++)        {            tmp_str[i]='0';        }        strcat(tmp_str,PbJourNo);        WriteLog( ERR_LVL, "tmp_str1[%s]", tmp_str );    }    else    {           memcpy(tmp_str,PbJourNo+(strlen(PbJourNo)-8),8);        WriteLog( ERR_LVL, "tmp_str2[%s]", tmp_str );    }    sprintf(TTPbJourNo, "%s%s", "TT", tmp_str );    trim(TTPbJourNo);    sprintf(PBPbJourNo, "%s%s", "PB", tmp_str );    trim(PBPbJourNo);    WriteLog( ERR_LVL, "PbJourNo[%s]TTPbJourNo[%s]PBPbJourNo[%s]",PbJourNo,TTPbJourNo,PBPbJourNo);    return PB_OK;}/***************************************    Function    :GetValue    Action      :从串中取对应域的值    Author      :WangQiao    Date        :2010/03/24    Paramater    input_str   :输入    index       :域号    output_str  :输出    seq_str     :分隔符***************************************/intGetValue( char * const input_str, int index, char * const output_str, char * const seq_str){    char *ptr= NULL;    char *hptr = NULL;    int i = 0;    /*输出串初始化*/    rtrim(seq_str);    ltrim(seq_str);    if (index <= 0 )    {        WriteLog( ERR_LVL, "域号必须为大于零的整数index[%d]!", index );        return PB_ERR;    }    if( strlen(seq_str) == 0 )    {        WriteLog( ERR_LVL, "seq_str不能为空!");        return PB_ERR;    }    hptr = input_str;    ptr=strstr( input_str, seq_str );    while( ptr != NULL )    {        i++;        if( i == index )            break;        hptr = ptr+strlen(seq_str);        if( *hptr == '\0' )            break;        ptr = NULL;        ptr = strstr( hptr, seq_str );    }        if( i < index )    {        WriteLog( ERR_LVL, "串中最大域号为:[%d]", i);        return PB_ERR;    }    strncpy( output_str, hptr, ptr-hptr );    output_str[ptr-hptr] = '\0';     rtrim( output_str );    ltrim( output_str );        return PB_OK;}           int get_out_currtype(char * const CurrType,char * const currtype){    memset( currtype, 0x00, sizeof(currtype) );    rtrim(CurrType);    if(memcmp(CurrType,"01",2)==0)        memcpy(currtype,"156",3);    else if(memcmp(CurrType,"14",2)==0)        memcpy(currtype,"840",3);    else if(memcmp(CurrType,"41",2)==0)        memcpy(currtype,"746",3);    else if(memcmp(CurrType,"40",2)==0)        memcpy(currtype,"418",3);    else        memcpy(currtype,"XXX",3);            WriteLog( ERR_LVL, "currtype[%s]", currtype );        return 0;}           int get_in_currtype(char * const CurrType,char * const currtype){       memset( currtype, 0x00, sizeof(currtype) );        rtrim(CurrType);    if(memcmp(CurrType,"156",3)==0)        memcpy(currtype,"01",2);    else if(memcmp(CurrType,"840",3)==0)        memcpy(currtype,"14",2);    else if(memcmp(CurrType,"746",3)==0)        memcpy(currtype,"41",2);    else if(memcmp(CurrType,"418",3)==0)        memcpy(currtype,"40",2);    else            memcpy(currtype,"XX",2);    WriteLog( ERR_LVL, "currtype[%s]", currtype );    return 0;}/* Fuction  :  Pb_ReturnClient8583 * Action   :  Pb Return data to Client8583 * Input    : * Output   : * Author   : * Date     : 2014/11/06 */intPb_ReturnClient8583(char *ret_code){    int ret = -1;    int rellen = 0;    char trancode[6+1];    char tmp_str[100+1];    char PAccNum[99+1];    char ProcCode[6+1];    char tran_amt[12+1];    char tran_date_time[10+1];    char sys_trace_num[6+1];    char local_time[6+1];    char local_tran_date[4+1];    char settle_date[4+1];    char merchant_type[4+1];    char acq_ins_cou_code[3+1];    char acq_ins_id[99+1];    char track2_data[99+1];    char retr_ref_num[12+1];    char card_accp_termid[8+1];    char tran_curr_code[3+1];    char auth_num[6+1];    char add_amt[99+1];    char card_accp_name_loc[40+1];    char orig_data_ele[42+1];    memset(trancode,0x00,sizeof(trancode));    memset(tmp_str,0x00,sizeof(tmp_str));    memset(PAccNum,0x00,sizeof(PAccNum));    memset(ProcCode,0x00,sizeof(ProcCode));    memset(tran_amt,0x00,sizeof(tran_amt));    memset(tran_date_time,0x00,sizeof(tran_date_time));    memset(sys_trace_num,0x00,sizeof(sys_trace_num));    memset(local_time,0x00,sizeof(local_time));    memset(local_tran_date,0x00,sizeof(local_tran_date));    memset(settle_date,0x00,sizeof(settle_date));    memset(merchant_type,0x00,sizeof(merchant_type));    memset(acq_ins_cou_code,0x00,sizeof(acq_ins_cou_code));    memset(acq_ins_id,0x00,sizeof(acq_ins_id));     memset(track2_data,0x00,sizeof(track2_data));    memset(retr_ref_num,0x00,sizeof(retr_ref_num));    memset(card_accp_termid,0x00,sizeof(card_accp_termid));    memset(tran_curr_code,0x00,sizeof(tran_curr_code));    memset(auth_num,0x00,sizeof(auth_num));    memset(add_amt,0x00,sizeof(add_amt));     memset(card_accp_name_loc,0x00,sizeof(card_accp_name_loc));    memset(orig_data_ele,0x00,sizeof(orig_data_ele));        WriteLog(ERR_LVL,"========= Pb_ReturnClient8583 begin =========");    /* Add Public Information Returns */    GetPoolDataByName("Bconnex8583","PAccNum",0,0,PAccNum,&rellen);    GetPoolDataByName("Bconnex8583","ProcCode",0,0,ProcCode,&rellen);    GetPoolDataByName("Bconnex8583","tran_amt",0,0,tran_amt,&rellen);    GetPoolDataByName("Bconnex8583","tran_date_time",0,0,tran_date_time,&rellen);    GetPoolDataByName("Bconnex8583","sys_trace_num",0,0,sys_trace_num,&rellen);    rtrim(PAccNum);    rtrim(ProcCode);    rtrim(tran_amt);    rtrim(tran_date_time);    rtrim(sys_trace_num);    WriteLog(ERR_LVL,"PAccNum[%s]",PAccNum);    WriteLog(ERR_LVL,"ProcCode[%s]",ProcCode);    WriteLog(ERR_LVL,"tran_amt[%s]",tran_amt);    WriteLog(ERR_LVL,"tran_date_time[%s]",tran_date_time);    WriteLog(ERR_LVL,"sys_trace_num[%s]",sys_trace_num);    PutPoolDataByName("Bconnex8583","PAccNum",0,0,PAccNum,0);    PutPoolDataByName("Bconnex8583","ProcCode",0,0,ProcCode,0);    PutPoolDataByName("Bconnex8583","tran_amt",0,0,tran_amt,0);    PutPoolDataByName("Bconnex8583","tran_date_time",0,0,tran_date_time,0);    PutPoolDataByName("Bconnex8583","sys_trace_num",0,0,sys_trace_num,0);        GetPoolDataByName("PBSYS", "TranCode", 0, 0, trancode, &rellen );    rtrim(trancode);    WriteLog(ERR_LVL ,"TranCode[%s]",trancode);    if(memcmp(trancode,"001001",6)==0 || \       memcmp(trancode,"001009",6)==0 || \       memcmp(trancode,"001010",6)==0 || \       memcmp(trancode,"001012",6)==0)    {        GetPoolDataByName("Bconnex8583","local_time",0,0,local_time,&rellen);        GetPoolDataByName("Bconnex8583","local_tran_date",0,0,local_tran_date,&rellen);        GetPoolDataByName("Bconnex8583","settle_date",0,0,settle_date,&rellen);        GetPoolDataByName("Bconnex8583","merchant_type",0,0,merchant_type,&rellen);        GetPoolDataByName("Bconnex8583","acq_ins_cou_code",0,0,acq_ins_cou_code,&rellen);        GetPoolDataByName("Bconnex8583","acq_ins_id",0,0,acq_ins_id,&rellen);        GetPoolDataByName("Bconnex8583","track2_data",0,0,track2_data,&rellen);        GetPoolDataByName("Bconnex8583","retr_ref_num",0,0,retr_ref_num,&rellen);        GetPoolDataByName("Bconnex8583","card_accp_termid",0,0,card_accp_termid,&rellen);        GetPoolDataByName("Bconnex8583","tran_curr_code",0,0,tran_curr_code,&rellen);        GetPoolDataByName("Bconnex8583","add_amt",0,0,add_amt,&rellen);        GetPoolDataByName("Bconnex8583","auth_num",0,0,auth_num,&rellen);        rtrim(local_time);        rtrim(local_tran_date);        rtrim(settle_date);        rtrim(merchant_type);        rtrim(acq_ins_cou_code);        rtrim(acq_ins_id);        rtrim(track2_data);        rtrim(retr_ref_num);        rtrim(card_accp_termid);        rtrim(tran_curr_code);        rtrim(add_amt);        trim(auth_num);        WriteLog(ERR_LVL,"local_time[%s]",local_time);        WriteLog(ERR_LVL,"local_tran_date[%s]",local_tran_date);        WriteLog(ERR_LVL,"settle_date[%s]",settle_date);        WriteLog(ERR_LVL,"merchant_type[%s]",merchant_type);        WriteLog(ERR_LVL,"acq_ins_cou_code[%s]",acq_ins_cou_code);        WriteLog(ERR_LVL,"acq_ins_id[%s]",acq_ins_id);        WriteLog(ERR_LVL,"track2_data[%s]",track2_data);        WriteLog(ERR_LVL,"retr_ref_num[%s]",retr_ref_num);        WriteLog(ERR_LVL,"card_accp_termid[%s]",card_accp_termid);        WriteLog(ERR_LVL,"tran_curr_code[%s]",tran_curr_code);        WriteLog(ERR_LVL,"add_amt[%s]",add_amt);        WriteLog(ERR_LVL,"auth_num[%s]",auth_num);        PutPoolDataByName("Bconnex8583","local_time",0,0,local_time,0);        PutPoolDataByName("Bconnex8583","local_tran_date",0,0,local_tran_date,0);        PutPoolDataByName("Bconnex8583","settle_date",0,0,settle_date,0);        PutPoolDataByName("Bconnex8583","merchant_type",0,0,merchant_type,0);        PutPoolDataByName("Bconnex8583","acq_ins_cou_code",0,0,acq_ins_cou_code,0);        PutPoolDataByName("Bconnex8583","acq_ins_id",0,0,acq_ins_id,0);        PutPoolDataByName("Bconnex8583","track2_data",0,0,track2_data,0);        PutPoolDataByName("Bconnex8583","retr_ref_num",0,0,retr_ref_num,0);        PutPoolDataByName("Bconnex8583","card_accp_termid",0,0,card_accp_termid,0);        PutPoolDataByName("Bconnex8583","tran_curr_code",0,0,tran_curr_code,0);        PutPoolDataByName("Bconnex8583","MsgType",0,0,"0210",0);        if(strlen(add_amt)==0)        {            sprintf(tmp_str,"00  %s %0*d%s",tran_curr_code,12-strlen(add_amt),0,"");            rtrim(tmp_str);            PutPoolDataByName("Bconnex8583","add_amt",0,0,tmp_str,0);            WriteLog(ERR_LVL,"***now*** add_amt[%s]",tmp_str);        }        if(strlen(auth_num)==0)        {            ret = GetAuthNo(auth_num);            if( ret != PB_OK )            {                WriteLog( ERR_LVL, "GetAuthNo err!!!!" );                Pb_ReturnClient8583("06");                return PB_ERR;            }            rtrim(auth_num);            PutPoolDataByName("Bconnex8583","auth_num",0,0,auth_num,0);            WriteLog(ERR_LVL,"***now*** auth_num[%s]",auth_num);        }    }       else if(memcmp(trancode,"001003",6)==0 || \            memcmp(trancode,"001007",6)==0 || \            memcmp(trancode,"001008",6)==0 || \            memcmp(trancode,"001011",6)==0)    {           GetPoolDataByName("Bconnex8583","local_time",0,0,local_time,&rellen);        GetPoolDataByName("Bconnex8583","local_tran_date",0,0,local_tran_date,&rellen);        GetPoolDataByName("Bconnex8583","settle_date",0,0,settle_date,&rellen);        GetPoolDataByName("Bconnex8583","merchant_type",0,0,merchant_type,&rellen);        GetPoolDataByName("Bconnex8583","acq_ins_id",0,0,acq_ins_id,&rellen);        GetPoolDataByName("Bconnex8583","track2_data",0,0,track2_data,&rellen);        GetPoolDataByName("Bconnex8583","retr_ref_num",0,0,retr_ref_num,&rellen);        GetPoolDataByName("Bconnex8583","card_accp_termid",0,0,card_accp_termid,&rellen);        GetPoolDataByName("Bconnex8583","tran_curr_code",0,0,tran_curr_code,&rellen);        GetPoolDataByName("Bconnex8583","add_amt",0,0,add_amt,&rellen);        GetPoolDataByName("Bconnex8583","auth_num",0,0,auth_num,&rellen);        rtrim(local_time);        rtrim(local_tran_date);        rtrim(settle_date);        rtrim(merchant_type);        rtrim(acq_ins_id);        rtrim(track2_data);        rtrim(retr_ref_num);        rtrim(card_accp_termid);        rtrim(tran_curr_code);        rtrim(add_amt);        trim(auth_num);        WriteLog(ERR_LVL,"local_time[%s]",local_time);        WriteLog(ERR_LVL,"local_tran_date[%s]",local_tran_date);        WriteLog(ERR_LVL,"settle_date[%s]",settle_date);        WriteLog(ERR_LVL,"merchant_type[%s]",merchant_type);        WriteLog(ERR_LVL,"acq_ins_id[%s]",acq_ins_id);        WriteLog(ERR_LVL,"track2_data[%s]",track2_data);        WriteLog(ERR_LVL,"retr_ref_num[%s]",retr_ref_num);        WriteLog(ERR_LVL,"card_accp_termid[%s]",card_accp_termid);        WriteLog(ERR_LVL,"tran_curr_code[%s]",tran_curr_code);        WriteLog(ERR_LVL,"add_amt[%s]",add_amt);        WriteLog(ERR_LVL,"auth_num[%s]",auth_num);                    PutPoolDataByName("Bconnex8583","local_time",0,0,local_time,0);        PutPoolDataByName("Bconnex8583","local_tran_date",0,0,local_tran_date,0);        PutPoolDataByName("Bconnex8583","settle_date",0,0,settle_date,0);        PutPoolDataByName("Bconnex8583","merchant_type",0,0,merchant_type,0);        PutPoolDataByName("Bconnex8583","acq_ins_id",0,0,acq_ins_id,0);        PutPoolDataByName("Bconnex8583","track2_data",0,0,track2_data,0);        PutPoolDataByName("Bconnex8583","retr_ref_num",0,0,retr_ref_num,0);        PutPoolDataByName("Bconnex8583","card_accp_termid",0,0,card_accp_termid,0);        PutPoolDataByName("Bconnex8583","tran_curr_code",0,0,tran_curr_code,0);        PutPoolDataByName("Bconnex8583","MsgType",0,0,"0210",0);        if(strlen(add_amt)==0)        {            sprintf(tmp_str,"00  %s %0*d%s",tran_curr_code,12-strlen(add_amt),0,"");            rtrim(tmp_str);            PutPoolDataByName("Bconnex8583","add_amt",0,0,tmp_str,0);            WriteLog(ERR_LVL,"***now*** add_amt[%s]",tmp_str);        }        if(strlen(auth_num)==0)        {            ret = GetAuthNo(auth_num);            if( ret != PB_OK )            {                WriteLog( ERR_LVL, "GetAuthNo err!!!!" );                Pb_ReturnClient8583("06");                return PB_ERR;            }            rtrim(auth_num);            PutPoolDataByName("Bconnex8583","auth_num",0,0,auth_num,0);            WriteLog(ERR_LVL,"***now*** auth_num[%s]",auth_num);        }    }    else if(memcmp(trancode,"001004",6)==0 || \            memcmp(trancode,"001013",6)==0 || \            memcmp(trancode,"001014",6)==0 || \            memcmp(trancode,"001015",6)==0)    {        GetPoolDataByName("Bconnex8583","acq_ins_cou_code",0,0,acq_ins_cou_code,&rellen);        GetPoolDataByName("Bconnex8583","acq_ins_id",0,0,acq_ins_id,&rellen);        GetPoolDataByName("Bconnex8583","track2_data",0,0,track2_data,&rellen);        GetPoolDataByName("Bconnex8583","retr_ref_num",0,0,retr_ref_num,&rellen);        GetPoolDataByName("Bconnex8583","card_accp_termid",0,0,card_accp_termid,&rellen);        GetPoolDataByName("Bconnex8583","tran_curr_code",0,0,tran_curr_code,&rellen);        GetPoolDataByName("Bconnex8583","card_accp_name_loc",0,0,card_accp_name_loc,&rellen);        GetPoolDataByName("Bconnex8583","orig_data_ele",0,0,orig_data_ele,&rellen);        rtrim(acq_ins_cou_code);        rtrim(acq_ins_id);        rtrim(track2_data);        rtrim(retr_ref_num);        rtrim(card_accp_termid);        rtrim(tran_curr_code);        rtrim(card_accp_name_loc);        rtrim(orig_data_ele);        WriteLog(ERR_LVL,"acq_ins_cou_code[%s]",acq_ins_cou_code);        WriteLog(ERR_LVL,"acq_ins_id[%s]",acq_ins_id);        WriteLog(ERR_LVL,"track2_data[%s]",track2_data);        WriteLog(ERR_LVL,"retr_ref_num[%s]",retr_ref_num);        WriteLog(ERR_LVL,"card_accp_termid[%s]",card_accp_termid);        WriteLog(ERR_LVL,"tran_curr_code[%s]",tran_curr_code);        WriteLog(ERR_LVL,"card_accp_name_loc[%s]",card_accp_name_loc);        WriteLog(ERR_LVL,"orig_data_ele[%s]",orig_data_ele);        PutPoolDataByName("Bconnex8583","acq_ins_cou_code",0,0,acq_ins_cou_code,0);        PutPoolDataByName("Bconnex8583","acq_ins_id",0,0,acq_ins_id,0);        PutPoolDataByName("Bconnex8583","track2_data",0,0,track2_data,0);        PutPoolDataByName("Bconnex8583","retr_ref_num",0,0,retr_ref_num,0);        PutPoolDataByName("Bconnex8583","card_accp_termid",0,0,card_accp_termid,0);        PutPoolDataByName("Bconnex8583","tran_curr_code",0,0,tran_curr_code,0);        PutPoolDataByName("Bconnex8583","card_accp_name_loc",0,0,card_accp_name_loc,0);        PutPoolDataByName("Bconnex8583","orig_data_ele",0,0,orig_data_ele,0);        PutPoolDataByName("Bconnex8583","MsgType",0,0,"0430",0);    }       else    {           WriteLog(ERR_LVL,"get TranCode failed!");    }           PutPoolDataByName("Bconnex8583","resp_code",0,0,ret_code,0);    WriteLog(ERR_LVL,"***now*** RetCode[%s]",ret_code);                    WriteLog(ERR_LVL,"========= Pb_ReturnClient8583 end =========");                return PB_OK;            }                       int errcode_transform(char *errcode,char * const ret_code){               EXEC SQL BEGIN DECLARE SECTION;         char err_code[10+1];        char tmp_str[20+1];    EXEC SQL END DECLARE SECTION;            int ret = -1;    char recode[2+1];            memset(err_code,0x00,sizeof(err_code));    memset(tmp_str,0x00,sizeof(tmp_str));    memset(recode,0x00,sizeof(recode));            memcpy(err_code,errcode,strlen(errcode));    rtrim(err_code);    WriteLog(ERR_LVL,"errcode[%s]",err_code);            WriteLog(ERR_LVL,"========= ****** errcode_transform begin ****** =========");    EXEC SQL select retcode into :tmp_str from t_pb_busi_ret_code where areano='000000' and chnlno='001' and hostretcode=:err_code;    WriteLog( ERR_LVL, "select retcode from t_pb_busi_ret_code where areano='000000' and chnlno='001' and hostretcode='%s' SQLCODE[%d]!", err_code,SQLCODE );    if( SQLCODE != 0 )    {           WriteLog( ERR_LVL, "Data is not found, the default return!!!" );        EXEC SQL select retcode into :tmp_str from t_pb_busi_ret_code where areano='000000' and chnlno='001' and hostretcode='DFT';        WriteLog( ERR_LVL, "select retcode from t_pb_busi_ret_code where areano='000000' and chnlno='001' and hostretcode='DFT' SQLCODE[%d]!",SQLCODE );        if( SQLCODE != 0 )        {               WriteLog( ERR_LVL, "errcode transform err!!!, the default return!!!" );            memcpy(tmp_str,"96",2);        }    }       rtrim(tmp_str);    memcpy(ret_code,tmp_str,2);    WriteLog( ERR_LVL, "ret_code[%s]", ret_code );    WriteLog(ERR_LVL,"========= ******  errcode_transform end  ****** =========");    return PB_OK;}/* Fuction  :  Pb_Amt_Exch8583 * Action   :  Pb  amount exchange,call 5716 * Input    : * Output   : * Author   : * Date     : 2014/11/06 */intPb_Amt_Exch8583(char *currtype,char *amt,char * const nowamt){    int ret = -1;    int rellen = 0;    long transtate = 0;    char retmsg[2000+1];    char out_recode[2+1];    char errcode[10+1];    char errmessage[300+1];    char tag_amt[22+1];    char exch_rate[9+1];    memset(retmsg,0x00,sizeof(retmsg));    memset(out_recode,0x00,sizeof(out_recode));    memset(errcode,0x00,sizeof(errcode));    memset(errmessage,0x00,sizeof(errmessage));    memset(tag_amt,0x00,sizeof(tag_amt));    memset(exch_rate,0x00,sizeof(exch_rate));    WriteLog(ERR_LVL,"========= ****** Pb_Amt_Exch8583 begin ****** =========");    rtrim(currtype);    rtrim(amt);    WriteLog(ERR_LVL,"currtype[%s]",currtype);    WriteLog(ERR_LVL,"amt[%s]",amt);    /* HostAddHead */    ret = Data_HostAddHead("5716");    if(ret !=0)    {        WriteLog(ERR_LVL,"HostAddHead failed!");        Pb_ReturnClient8583("96");        return PB_ERR;    }    /* HostAddBody */    PutPoolDataByName("FDWH","soc_currtype",0,0,currtype,0);    PutPoolDataByName("FDWH","soc_amt",0,0,amt,0);    PutPoolDataByName("FDWH","tag_currtype",0,0,currtype,0);    PutPoolDataByName("FDWH","CR_flag",0,0,"0",0);    PutPoolDataByName("FDWH","BS_flag",0,0,"0",0);    PutPoolDataByName("FDWH","amt_rate",0,0,"100",0);    PutPoolDataByName("FDWH","tag_CR_flag",0,0,"1",0);     /* CallHost */    WriteLog( DEBUG_LVL0, "-----------fml dopack-------------");    ret = Data_PackFml("810|5716|0");    if( ret < 0 )    {        Pb_ReturnClient8583("96");        WriteLog( ERR_LVL, "fml dopack err! " );        return PB_ERR;    }    WriteLog( DEBUG_LVL0, "-------------call host-------------");    ret = Comm_AcCallFml( "810|PBSVC" );    if( ret < 0 )    {        Pb_ReturnClient8583("96");        WriteLog( ERR_LVL, "call host err! " );        return PB_ERR;    }        WriteLog( DEBUG_LVL0, "-----------fml unpack-----------");    ret = Data_UnpackFml("810|5716|1");    if( ret < 0 )    {        Pb_ReturnClient8583("96");        WriteLog( ERR_LVL, "fml unpack err! " );        return PB_ERR;    }        GetPoolDataByName("FDWH","transtate",0,0,&transtate,&rellen);    WriteLog(ERR_LVL ,"transtate[%ld]",transtate);    GetPoolDataByName("FDWH", "retmsg", 0, 0, retmsg, &rellen );    rtrim(retmsg);    WriteLog(ERR_LVL ,"retmsg[%s]",retmsg);        if(transtate!=0)    {        WriteLog(ERR_LVL,"chech failed! msg[%s]",retmsg);        sscanf(retmsg,"[%[^]]]:%[^'']",errcode,errmessage);        trim(errcode);        trim(errmessage);        if(strlen(errcode)==0)        {            sscanf(retmsg,"%*[^0-9]%*[0-9]%*[^0-9]%[0-9]]:%[^'']",errcode,errmessage);            trim(errcode);            trim(errmessage);        }        WriteLog(ERR_LVL ,"errcode[%s]errmsg[%s]transtate[%ld]",errcode,errmessage,transtate);        errcode_transform(errcode,out_recode);        Pb_ReturnClient8583(out_recode);        return PB_ERR;    }    else    {        GetPoolDataByName("FDWH", "tag_amt", 0, 0, tag_amt, &rellen );        rtrim(tag_amt);        WriteLog(ERR_LVL ,"tag_amt[%s]",tag_amt);        GetPoolDataByName("FDWH", "exch_rate", 0, 0, exch_rate, &rellen );        rtrim(exch_rate);        WriteLog(ERR_LVL ,"exch_rate[%s]",exch_rate);        if(strlen(tag_amt)<11)        {            memcpy(nowamt,tag_amt,strlen(tag_amt));        }        else        {            memcpy(nowamt,tag_amt,11);        }        WriteLog(ERR_LVL ,"**********amt[%s]**********",nowamt);    }    WriteLog(ERR_LVL,"========= ******  Pb_Amt_Exch8583 end  ****** =========");    return PB_OK;}/** 取系统追踪号*/intGetSysTraceNo(char *systraceno){    EXEC SQL BEGIN DECLARE SECTION;    long             jour_no;    EXEC SQL END DECLARE SECTION;    int  i = 0;    EXEC SQL SELECT  SystemTraceAuditNumber.nextval         INTO    :jour_no         FROM    dual;    if(SQLCODE)    {            WriteLog(ERR_LVL,"ERROR: GetSysTraceNo:SystemTraceAuditNumber.nextval ERR  [%s] %ld\n", SQLMSG,SQLCODE);            return PB_ERR;    }    if ( jour_no < 0  || jour_no > 999999)    {        WriteLog( DEBUG_LVL0,"INFO:   ERROR_Value[%ld] time[%d]",jour_no,i);        return PB_ERR ;    }               sprintf(systraceno,"%06ld",jour_no);        return PB_OK;}                   /*      * 取日期天数*/      int     GetDayCount(char *startDay,char *countDay){           int idate1=0,idate2=0;            rdefmtdate(&idate1, "yyyymmdd",startDay);    rdefmtdate(&idate2, "yyyymmdd",countDay);                return (idate1 - idate2 + 1);}           /** 取授权码*/int GetAuthNo(char *authno){    EXEC SQL BEGIN DECLARE SECTION;    long             jour_no;    EXEC SQL END DECLARE SECTION;    int  i = 0;    EXEC SQL SELECT  AuthorizationNumber.nextval         INTO    :jour_no         FROM    dual;    if(SQLCODE)    {            WriteLog(ERR_LVL,"ERROR: GetAuthorizationNumber:AuthorizationNumber.nextval ERR  [%s] %ld\n", SQLMSG,SQLCODE);            return PB_ERR;    }             if ( jour_no < 0  || jour_no > 999999)    {        WriteLog( DEBUG_LVL0,"INFO:   ERROR_Value[%ld] time[%d]",jour_no,i);        return PB_ERR ;    }               sprintf(authno,"%06ld",jour_no);        return PB_OK;}               /** 取内部帐机构元素* 输入:区域号、渠道号、业务类型、终端号、终端类型* 输出:机构号*/intGetInstNo(char *areano,char *chnlno,char *busitype,char *terminal_no,char *terminal_type,char *inst){    int rellen=0;    EXEC SQL BEGIN DECLARE SECTION;        char instno[4+1];        char tm_no[30+1];        char tm_type[1+1];        char area_no[6+1];        char chnl_no[3+1];        char busi_type[3+1];    EXEC SQL END DECLARE SECTION;    memset(instno,0x00,sizeof(instno));    memset(tm_no,0x00,sizeof(tm_no));    memset(tm_type,0x00,sizeof(tm_type));    memset(area_no,0x00,sizeof(area_no));    memset(chnl_no,0x00,sizeof(chnl_no));    memset(busi_type,0x00,sizeof(busi_type));    memcpy(area_no,areano,strlen(areano));    memcpy(chnl_no,chnlno,strlen(chnlno));    memcpy(busi_type,busitype,strlen(busitype));    memcpy(tm_no,terminal_no,strlen(terminal_no));    memcpy(tm_type,terminal_type,strlen(terminal_type));    rtrim(tm_no);    rtrim(tm_type);    rtrim(area_no);    rtrim(chnl_no);    rtrim(busi_type);    WriteLog( ERR_LVL, "areano[%s]", area_no );    WriteLog( ERR_LVL, "busitype[%s]", busi_type );    WriteLog( ERR_LVL, "chnlno[%s]", chnl_no );    WriteLog( ERR_LVL, "terminal_no[%s]", tm_no );    WriteLog( ERR_LVL, "tm_type[%s]", tm_type );    EXEC SQL select accinstno into :instno from t_pb_busi_tlr where areano=:area_no and chnlno=:chnl_no and busitype=:busi_type           and terminal_no=:tm_no and terminal_type=:tm_type;    if( SQLCODE != 0 )    {        WriteLog( ERR_LVL, "select instno err SQLCODE[%d]!", SQLCODE );        return PB_ERR;    }    rtrim(instno);    WriteLog( ERR_LVL, "instno[%s]", instno );    memcpy(inst,instno,strlen(instno));    WriteLog( ERR_LVL, "ret instno[%s]!!!!!!", inst );    return PB_OK;}/** 取内部帐分录尾* 输入:区域号、渠道号、业务类型、交易码、记账类型、现转类型、币种、分录类型、账类、序号* 输出:分录尾*/intGetEntryTail(char *areano,char *chnlno,char *busitype,char *trancode,char *acc_flag,char *csh_tsf_type,char *curr_type,char *entry_type,char *acc_type,char *sort_no,char *entry_tail){       int rellen=0;    EXEC SQL BEGIN DECLARE SECTION;        char entry[25+1];        char area_no[6+1];        char chnl_no[3+1];        char busi_type[3+1];        char tcode[20+1];        char ac_flag[1+1];        char ct_type[1+1];        char c_type[3+1];        char e_type[1+1];        char ac_type[1+1];        char s_no[4+1];    EXEC SQL END DECLARE SECTION;        memset(entry,0x00,sizeof(entry));    memset(area_no,0x00,sizeof(area_no));    memset(chnl_no,0x00,sizeof(chnl_no));    memset(busi_type,0x00,sizeof(busi_type));    memset(tcode,0x00,sizeof(tcode));    memset(ac_flag,0x00,sizeof(ac_flag));    memset(ct_type,0x00,sizeof(ct_type));    memset(c_type,0x00,sizeof(c_type));    memset(e_type,0x00,sizeof(e_type));    memset(ac_type,0x00,sizeof(ac_type));    memset(s_no,0x00,sizeof(s_no));        memcpy(area_no,areano,strlen(areano));    memcpy(chnl_no,chnlno,strlen(chnlno));    memcpy(busi_type,busitype,strlen(busitype));    memcpy(tcode,trancode,strlen(trancode));    memcpy(ac_flag,acc_flag,strlen(acc_flag));    memcpy(ct_type,csh_tsf_type,strlen(csh_tsf_type));    memcpy(c_type,curr_type,strlen(curr_type));    memcpy(e_type,entry_type,strlen(entry_type));    memcpy(ac_type,acc_type,strlen(acc_type));    memcpy(s_no,sort_no,strlen(sort_no));     rtrim(area_no);    rtrim(chnl_no);    rtrim(busi_type);    rtrim(tcode);    rtrim(ac_flag);    rtrim(ct_type);    rtrim(c_type);    rtrim(e_type);    rtrim(ac_type);    rtrim(s_no);    WriteLog( ERR_LVL, "areano[%s]", area_no );    WriteLog( ERR_LVL, "chnlno[%s]", chnl_no );    WriteLog( ERR_LVL, "busitype[%s]", busi_type );    WriteLog( ERR_LVL, "trancode[%s]", tcode );    WriteLog( ERR_LVL, "acc_flag[%s]", ac_flag );    WriteLog( ERR_LVL, "csh_tsf_type[%s]", ct_type );    WriteLog( ERR_LVL, "curr_type[%s]", c_type );    WriteLog( ERR_LVL, "entry_type[%s]", e_type );    WriteLog( ERR_LVL, "acc_type[%s]", ac_type );    WriteLog( ERR_LVL, "sort_no[%s]", s_no );    EXEC SQL select acc into :entry from t_pb_busi_entry where areano=:area_no and chnlno=:chnl_no and busitype=:busi_type           and trancode=:tcode and acc_flag=:ac_flag and csh_tsf_type=:ct_type and curr_type=:c_type and entry_type=:e_type            and acc_type = :ac_type and sort_no=:s_no;    if( SQLCODE != 0 )    {        WriteLog( ERR_LVL, "select entry err SQLCODE[%d]!", SQLCODE );        return PB_ERR;    }    rtrim(entry);    WriteLog( ERR_LVL, "entry[%s]", entry );    memcpy(entry_tail,entry,strlen(entry));    WriteLog( ERR_LVL, "entry_tail[%s]!!!!!!", entry_tail );    return PB_OK;}/** 取内部帐分录* 输入:交易码、记账类型、现转类型、币种、分录类型、序号* 输出:内部帐分录*/intGetEntry(char *trancode,char *acc_flag,char *csh_tsf_type,char *curr_type,char *entry_type,char *sort_no,char *entry){    int ret = -1;    int rellen=0;    char instno[4+1];    char entry_tail[25+1];    char areano[6+1];    char chnlno[3+1];    char busitype[3+1];    memset(instno,0x00,sizeof(instno));    memset(entry_tail,0x00,sizeof(entry_tail));    memset(areano,0x00,sizeof(areano));    memset(chnlno,0x00,sizeof(chnlno));    memset(busitype,0x00,sizeof(busitype));    GetPoolDataByName("PBSYS", "AreaNo", 0, 0, areano, &rellen );    GetPoolDataByName("PBSYS", "BusiType", 0, 0, busitype, &rellen );    GetPoolDataByName("PBSYS", "RChnlNo", 0, 0, chnlno, &rellen );    rtrim(areano);    rtrim(chnlno);    rtrim(busitype);    WriteLog( ERR_LVL, "areano[%s]", areano );    WriteLog( ERR_LVL, "chnlno[%s]", chnlno );    WriteLog( ERR_LVL, "busitype[%s]", busitype );        ret = GetInstNo(areano,chnlno,busitype,"0000000000","1",instno);    if( ret != PB_OK )     {        WriteLog( ERR_LVL, "GetInstNo err!!!!" );        return PB_ERR;     }    ret = GetEntryTail(areano,chnlno,busitype,trancode,acc_flag,csh_tsf_type,curr_type,entry_type,"0",sort_no,entry_tail);    if( ret != PB_OK )    {              WriteLog( ERR_LVL, "GetEntryTail err!!!!" );        return PB_ERR;    }            sprintf(entry ,"%4s%2s%1s%12s",instno,curr_type,"5",entry_tail);    rtrim(entry);    WriteLog( ERR_LVL, "entry[%s]", entry );    return PB_OK;}           /** 取记账分录* 输入:区域号、渠道号、业务类型、交易码、记账类型、现转类型、PB交易日期、(账户、户名、交易金额、币种)* 输出:记账分录数组、记账分录个数*/int GetJourEntryArray(areano,chnlno,busitype,trancode,accflag,cshtsftype,pbtrandate,s_cstm_info,entry,entry_count)char *areano;char *chnlno; char *busitype;char *trancode;char *accflag;char *cshtsftype;char *pbtrandate;char entry[ENTRY_ROW][ENTRY_COL];int *entry_count;struct S_CSTM_INFO *s_cstm_info;{    int ret = -1;    int count = 0;    int i = 0;      char innentry[32+1];        EXEC SQL BEGIN DECLARE SECTION;        char area_no[6+1];             /* 区域号 */        char chnl_no[3+1];             /* 渠道号 */        char busi_type[3+1];           /* 业务类型 */        char tran_code[20+1];          /* 交易码 */        char acc_flag[1+1];            /* 记账类型 0-记账 1-冲账 */        char csh_tsf_type[1+1];        /*现转类型 0-现金(本代本) 1-现金(本代他)2-  现金(他代本) 3-  转账(本转本) 4-  转账(本转他)5-  转账(他转本) */        char curr_type[2+1];           /* 币种 */        struct S_PB_BUSI_ENTRY busientry;    EXEC SQL END DECLARE SECTION;    memset(area_no,0x00,sizeof(area_no));    memset(chnl_no,0x00,sizeof(chnl_no));    memset(busi_type,0x00,sizeof(busi_type));    memset(tran_code,0x00,sizeof(tran_code));    memset(acc_flag,0x00,sizeof(acc_flag));    memset(csh_tsf_type,0x00,sizeof(csh_tsf_type));    memset(curr_type,0x00,sizeof(curr_type));    memset(innentry,0x00,sizeof(innentry));    WriteLog( ERR_LVL , ">>>>>>>>>>>>GetJourEntryArray<<<<<<<<<<<<<,");    memcpy(area_no,areano,6);    memcpy(chnl_no,chnlno,3);    memcpy(busi_type,busitype,3);    memcpy(tran_code,trancode,20);    memcpy(acc_flag,accflag,1);    memcpy(csh_tsf_type,cshtsftype,1);    memcpy(curr_type,s_cstm_info->curr_type,2);    rtrim(area_no);    rtrim(chnl_no);    rtrim(busi_type);    rtrim(tran_code);    rtrim(acc_flag);    rtrim(csh_tsf_type);    rtrim(curr_type);    WriteLog( ERR_LVL ,"area_no[%s]",area_no);    WriteLog( ERR_LVL ,"chnl_no[%s]",chnl_no);    WriteLog( ERR_LVL ,"busi_type[%s]",busi_type);    WriteLog( ERR_LVL ,"tran_code[%s]",tran_code);    WriteLog( ERR_LVL ,"acc_flag[%s]",acc_flag);    WriteLog( ERR_LVL ,"curr_type[%s]",curr_type);    EXEC SQL DECLARE cur_getentry CURSOR FOR        SELECT * FROM t_pb_busi_entry        WHERE areano = :area_no        AND   chnlno = :chnl_no        AND   busitype = :busi_type        AND   trancode = :tran_code        AND   acc_flag = :acc_flag        AND   csh_tsf_type = :csh_tsf_type        AND   curr_type = :curr_type        AND   entry_type = '0';    EXEC SQL OPEN cur_getentry;    if (SQLCODE != 0)    {           WriteLog(ERR_LVL, "打开游标错 = [%d]", SQLCODE);          return(-1);    }             while(1)    {        memset(&busientry,0x00,sizeof(busientry));        EXEC SQL FETCH cur_getentry INTO :busientry;        if (SQLCODE == SQLNOTFOUND)            break;        else if( SQLCODE )        {            WriteLog(ERR_LVL, "数据库操作错 SQLCODE = [%d]", SQLCODE);            EXEC SQL CLOSE cur_getentry;            EXEC SQL FREE cur_getentry;            return( -1 );        }            rtrim(busientry.areano);        rtrim(busientry.chnlno);        rtrim(busientry.busitype);        rtrim(busientry.trancode);        rtrim(busientry.acc_flag);        rtrim(busientry.csh_tsf_type);        rtrim(busientry.CshTsfFlag);        rtrim(busientry.curr_type);        rtrim(busientry.entry_type);        rtrim(busientry.acc_type);        rtrim(busientry.sort_no);        rtrim(busientry.entry_desc);        rtrim(busientry.dr_cr_flag);        rtrim(busientry.acc);        rtrim(busientry.FeeNo);        rtrim(busientry.AccStat);        rtrim(busientry.ProcFlag);        rtrim(busientry.summ_no);        rtrim(busientry.summ);        rtrim(busientry.remark);        rtrim(busientry.cert_no);        rtrim(busientry.cert_type);        rtrim(busientry.Cert_date);        rtrim(busientry.CshItmFlag);        rtrim(busientry.TwoEntryFlag);        rtrim(busientry.FeeFlag);        rtrim(busientry.AnalCode);        rtrim(busientry.FeeTranCode);        rtrim(busientry.DistFlag);        rtrim(busientry.note1);        rtrim(busientry.note2);        rtrim(busientry.note3);        WriteLog( ERR_LVL, "busientry.areano[%s]",busientry.areano);        WriteLog( ERR_LVL, "busientry.chnlno[%s]",busientry.chnlno);        WriteLog( ERR_LVL, "busientry.busitype[%s]",busientry.busitype);        WriteLog( ERR_LVL, "busientry.trancode[%s]",busientry.trancode);        WriteLog( ERR_LVL, "busientry.acc_flag[%s]",busientry.acc_flag);        WriteLog( ERR_LVL, "busientry.csh_tsf_type[%s]",busientry.csh_tsf_type);        WriteLog( ERR_LVL, "busientry.CshTsfFlag[%s]",busientry.CshTsfFlag);        WriteLog( ERR_LVL, "busientry.curr_type[%s]",busientry.curr_type);        WriteLog( ERR_LVL, "busientry.entry_type[%s]",busientry.entry_type);        WriteLog( ERR_LVL, "busientry.acc_type[%s]",busientry.acc_type);        WriteLog( ERR_LVL, "busientry.sort_no[%s]",busientry.sort_no);        WriteLog( ERR_LVL, "busientry.entry_desc[%s]",busientry.entry_desc);        WriteLog( ERR_LVL, "busientry.dr_cr_flag[%s]",busientry.dr_cr_flag);        WriteLog( ERR_LVL, "busientry.acc[%s]",busientry.acc);        WriteLog( ERR_LVL, "busientry.FeeNo[%s]",busientry.FeeNo);        WriteLog( ERR_LVL, "busientry.AccStat[%s]",busientry.AccStat);        WriteLog( ERR_LVL, "busientry.ProcFlag[%s]",busientry.ProcFlag);        WriteLog( ERR_LVL, "busientry.summ_no[%s]",busientry.summ_no);        WriteLog( ERR_LVL, "busientry.summ[%s]",busientry.summ);        WriteLog( ERR_LVL, "busientry.remark[%s]",busientry.remark);        WriteLog( ERR_LVL, "busientry.cert_no[%s]",busientry.cert_no);        WriteLog( ERR_LVL, "busientry.cert_type[%s]",busientry.cert_type);        WriteLog( ERR_LVL, "busientry.Cert_date[%s]",busientry.Cert_date);        WriteLog( ERR_LVL, "busientry.CshItmFlag[%s]",busientry.CshItmFlag);        WriteLog( ERR_LVL, "busientry.TwoEntryFlag[%s]",busientry.TwoEntryFlag);        WriteLog( ERR_LVL, "busientry.FeeFlag[%s]",busientry.FeeFlag);        WriteLog( ERR_LVL, "busientry.AnalCode[%s]",busientry.AnalCode);        WriteLog( ERR_LVL, "busientry.FeeTranCode[%s]",busientry.FeeTranCode);        WriteLog( ERR_LVL, "busientry.DistFlag[%s]",busientry.DistFlag);        WriteLog( ERR_LVL, "busientry.note1[%s]",busientry.note1);        WriteLog( ERR_LVL, "busientry.note2[%s]",busientry.note2);        WriteLog( ERR_LVL, "busientry.note3[%s]",busientry.note3);        WriteLog( ERR_LVL , "s_cstm_info[atoi(busientry.sort_no)].acc_no[%s]",s_cstm_info[atoi(busientry.sort_no)].acc_no);        WriteLog( ERR_LVL , "s_cstm_info[atoi(busientry.sort_no)].tran_amt[%lf]",s_cstm_info[atoi(busientry.sort_no)].tran_amt);        /* acc_type 0-内部帐 1-客户帐  */        if( strcmp(busientry.acc_type,"1") == 0 )           /* 客户帐  */        {            sprintf( entry[count] , "%s|%s|%s|%s|%s||%lf|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s||||||||||||||||%s|%s|",                                busientry.AccStat,                                busientry.ProcFlag,                                pbtrandate,                                s_cstm_info[atoi(busientry.sort_no)].curr_type,                                s_cstm_info[atoi(busientry.sort_no)].acc_no,                                s_cstm_info[atoi(busientry.sort_no)].tran_amt,                                busientry.cert_type,                                busientry.cert_no,                                busientry.Cert_date,                                busientry.dr_cr_flag,                                busientry.CshTsfFlag,                                busientry.CshItmFlag,                                busientry.summ_no,                                busientry.summ,                                busientry.remark,                                busientry.TwoEntryFlag,                                busientry.FeeFlag,                                busientry.FeeTranCode,                                s_cstm_info[atoi(busientry.sort_no)].acc_no,                                busientry.FeeNo);        }        else            /* 内部帐  */        {            ret = GetEntry(tran_code,acc_flag,csh_tsf_type,s_cstm_info[atoi(busientry.sort_no)].curr_type,"0",busientry.sort_no,innentry);            rtrim(innentry);            WriteLog( ERR_LVL ," innentry[%s] ",innentry );            if( ret != PB_OK )            {                WriteLog( ERR_LVL , " Err Call GetEntry ");                return(-1);            }            sprintf( entry[count] , "%s|%s|%s|%s|%s||%lf|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s||||||||||||||||||||",                                busientry.AccStat,                                busientry.ProcFlag,                                pbtrandate,                                s_cstm_info[atoi(busientry.sort_no)].curr_type,                                innentry,                                s_cstm_info[atoi(busientry.sort_no)].tran_amt,                                busientry.cert_type,                                busientry.cert_no,                                busientry.Cert_date,                                busientry.dr_cr_flag,                                busientry.CshTsfFlag,                                busientry.CshItmFlag,                                   busientry.summ_no,                                busientry.summ,                                busientry.remark,                                busientry.TwoEntryFlag);        }        count++;    }               EXEC SQL CLOSE cur_getentry;    EXEC SQL FREE cur_getentry;                                    /****** 组手续费分录  **********/    memset(innentry,0x00,sizeof(innentry));    EXEC SQL DECLARE cur_getentry2 CURSOR FOR        SELECT * FROM t_pb_busi_entry        WHERE areano = :area_no         AND   chnlno = :chnl_no         AND   busitype = :busi_type        AND   trancode = :tran_code         AND   acc_flag = :acc_flag         AND   csh_tsf_type = :csh_tsf_type         AND   curr_type = :curr_type        AND   entry_type = '1';                                     EXEC SQL OPEN cur_getentry2;    if (SQLCODE != 0)    {        WriteLog(ERR_LVL, "打开游标错 = [%d]", SQLCODE);        return(-1);    }    while(1)    {        memset(&busientry,0x00,sizeof(busientry));        EXEC SQL FETCH cur_getentry2 INTO :busientry;        if (SQLCODE == SQLNOTFOUND)            break;        else if( SQLCODE )        {            WriteLog(ERR_LVL, "数据库操作错 SQLCODE = [%d]", SQLCODE);            EXEC SQL CLOSE cur_getentry2;            EXEC SQL FREE cur_getentry2;            return( -1 );        }        rtrim(busientry.areano);        rtrim(busientry.chnlno);        rtrim(busientry.busitype);        rtrim(busientry.trancode);        rtrim(busientry.acc_flag);        rtrim(busientry.csh_tsf_type);        rtrim(busientry.CshTsfFlag);        rtrim(busientry.curr_type);        rtrim(busientry.entry_type);        rtrim(busientry.acc_type);        rtrim(busientry.sort_no);        rtrim(busientry.entry_desc);        rtrim(busientry.dr_cr_flag);        rtrim(busientry.acc);        rtrim(busientry.FeeNo);        rtrim(busientry.AccStat);        rtrim(busientry.ProcFlag);        rtrim(busientry.summ_no);        rtrim(busientry.summ);        rtrim(busientry.remark);        rtrim(busientry.cert_no);        rtrim(busientry.cert_type);        rtrim(busientry.Cert_date);        rtrim(busientry.CshItmFlag);        rtrim(busientry.TwoEntryFlag);        rtrim(busientry.FeeFlag);        rtrim(busientry.AnalCode);        rtrim(busientry.FeeTranCode);        rtrim(busientry.DistFlag);        rtrim(busientry.note1);        rtrim(busientry.note2);        rtrim(busientry.note3);        WriteLog( ERR_LVL, "busientry.areano[%s]",busientry.areano);        WriteLog( ERR_LVL, "busientry.chnlno[%s]",busientry.chnlno);        WriteLog( ERR_LVL, "busientry.busitype[%s]",busientry.busitype);        WriteLog( ERR_LVL, "busientry.trancode[%s]",busientry.trancode);        WriteLog( ERR_LVL, "busientry.acc_flag[%s]",busientry.acc_flag);        WriteLog( ERR_LVL, "busientry.csh_tsf_type[%s]",busientry.csh_tsf_type);        WriteLog( ERR_LVL, "busientry.CshTsfFlag[%s]",busientry.CshTsfFlag);        WriteLog( ERR_LVL, "busientry.curr_type[%s]",busientry.curr_type);        WriteLog( ERR_LVL, "busientry.entry_type[%s]",busientry.entry_type);        WriteLog( ERR_LVL, "busientry.acc_type[%s]",busientry.acc_type);        WriteLog( ERR_LVL, "busientry.sort_no[%s]",busientry.sort_no);        WriteLog( ERR_LVL, "busientry.entry_desc[%s]",busientry.entry_desc);        WriteLog( ERR_LVL, "busientry.dr_cr_flag[%s]",busientry.dr_cr_flag);        WriteLog( ERR_LVL, "busientry.acc[%s]",busientry.acc);        WriteLog( ERR_LVL, "busientry.FeeNo[%s]",busientry.FeeNo);        WriteLog( ERR_LVL, "busientry.AccStat[%s]",busientry.AccStat);        WriteLog( ERR_LVL, "busientry.ProcFlag[%s]",busientry.ProcFlag);        WriteLog( ERR_LVL, "busientry.summ_no[%s]",busientry.summ_no);        WriteLog( ERR_LVL, "busientry.summ[%s]",busientry.summ);        WriteLog( ERR_LVL, "busientry.remark[%s]",busientry.remark);        WriteLog( ERR_LVL, "busientry.cert_no[%s]",busientry.cert_no);        WriteLog( ERR_LVL, "busientry.cert_type[%s]",busientry.cert_type);        WriteLog( ERR_LVL, "busientry.Cert_date[%s]",busientry.Cert_date);        WriteLog( ERR_LVL, "busientry.CshItmFlag[%s]",busientry.CshItmFlag);        WriteLog( ERR_LVL, "busientry.TwoEntryFlag[%s]",busientry.TwoEntryFlag);        WriteLog( ERR_LVL, "busientry.FeeFlag[%s]",busientry.FeeFlag);        WriteLog( ERR_LVL, "busientry.AnalCode[%s]",busientry.AnalCode);        WriteLog( ERR_LVL, "busientry.FeeTranCode[%s]",busientry.FeeTranCode);        WriteLog( ERR_LVL, "busientry.DistFlag[%s]",busientry.DistFlag);        WriteLog( ERR_LVL, "busientry.note1[%s]",busientry.note1);        WriteLog( ERR_LVL, "busientry.note2[%s]",busientry.note2);        WriteLog( ERR_LVL, "busientry.note3[%s]",busientry.note3);                        WriteLog( ERR_LVL , "s_cstm_info[atoi(busientry.sort_no)].acc_no[%s]",s_cstm_info[atoi(busientry.sort_no)].acc_no);        WriteLog( ERR_LVL , "s_cstm_info[atoi(busientry.sort_no)].fee_amt[%lf]",s_cstm_info[atoi(busientry.sort_no)].fee_amt);        /* acc_type 0-内部帐 1-客户帐  */        if( strcmp(busientry.acc_type,"1") == 0 )           /* 客户帐  */        {            sprintf( entry[count] , "%s|%s|%s|%s|%s||%lf|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s||||||||||||||||%s|%s|",                                busientry.AccStat,                                busientry.ProcFlag,                                pbtrandate,                                s_cstm_info[atoi(busientry.sort_no)].curr_type,                                s_cstm_info[atoi(busientry.sort_no)].acc_no,                                s_cstm_info[atoi(busientry.sort_no)].fee_amt,                                busientry.cert_type,                                busientry.cert_no,                                busientry.Cert_date,                                busientry.dr_cr_flag,                                busientry.CshTsfFlag,                                busientry.CshItmFlag,                                busientry.summ_no,                                busientry.summ,                                busientry.remark,                                busientry.TwoEntryFlag,                                busientry.FeeFlag,                                busientry.FeeTranCode,                                s_cstm_info[atoi(busientry.sort_no)].acc_no,                                busientry.FeeNo);        }        else            /* 内部帐  */        {            ret = GetEntry(tran_code,acc_flag,csh_tsf_type,s_cstm_info[atoi(busientry.sort_no)].curr_type,"1",busientry.sort_no,innentry);            rtrim(innentry);            WriteLog( ERR_LVL ," innentry[%s] ",innentry );            if( ret != PB_OK )            {                WriteLog( ERR_LVL , " Err Call GetEntry ");                return(-1);            }            sprintf( entry[count] , "%s|%s|%s|%s|%s||%lf|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s||||||||||||||||||||",                                busientry.AccStat,                                busientry.ProcFlag,                                pbtrandate,                                s_cstm_info[atoi(busientry.sort_no)].curr_type,                                innentry,                                s_cstm_info[atoi(busientry.sort_no)].fee_amt,                                busientry.cert_type,                                busientry.cert_no,                                busientry.Cert_date,                                busientry.dr_cr_flag,                                busientry.CshTsfFlag,                                busientry.CshItmFlag,                                busientry.summ_no,                                busientry.summ,                                busientry.remark,                                busientry.TwoEntryFlag);        }        count++;    }    *entry_count = count;    WriteLog( ERR_LVL , "entry_count[%d]",*entry_count );    EXEC SQL CLOSE cur_getentry2;    EXEC SQL FREE cur_getentry2;    for( i = 0;i<count;i++)    {        WriteLog( ERR_LVL ,"!!!entry[%d][%s]",i,entry[i]);    }    return PB_OK;}/** 取记账分录* 输入:记账类型、现转类型、分录类型、PB交易日期、(账户、户名、交易金额、币种)* 输出:记账分录数组、记账分录个数*/                              int                             GetJourEntryArray2(accflag,cshtsftype,pbtrandate,s_cstm_info,entry,entry_count)char *accflag;                  char *cshtsftype;               char *pbtrandate;char entry[ENTRY_ROW][ENTRY_COL];  int *entry_count;struct S_CSTM_INFO *s_cstm_info;{               long rellen = 0;    int ret = -1;                int count = 0;    char areano[6+1];    char chnlno[3+1];    char busitype[3+1];     char trancode[20+1];                                            memset( areano , 0x00 , sizeof(areano));    memset( chnlno , 0x00 , sizeof(chnlno));        memset( busitype , 0x00 , sizeof(busitype));    memset( trancode , 0x00 , sizeof(trancode));                                    WriteLog( ERR_LVL , ">>>>>>>>>>>>GetJourEntryArray2<<<<<<<<<<<<<,");    GetPoolDataByName("PBSYS", "AreaNo", 0, 0, areano, &rellen );    GetPoolDataByName("PBSYS", "RChnlNo", 0, 0, chnlno, &rellen );    GetPoolDataByName("PBSYS", "BusiType", 0, 0, busitype, &rellen );    GetPoolDataByName("PBSYS", "TranCode", 0, 0, trancode, &rellen );    rtrim(areano);                  rtrim(chnlno);                  rtrim(busitype);                rtrim(trancode);                WriteLog(ERR_LVL ,"areano[%s]",areano);    WriteLog(ERR_LVL ,"chnlno[%s]",chnlno);    WriteLog(ERR_LVL ,"busitype[%s]",busitype);    WriteLog(ERR_LVL ,"trancode[%s]",trancode);        ret = GetJourEntryArray(areano,chnlno,busitype,trancode,accflag,cshtsftype,pbtrandate,s_cstm_info,entry,&count);    if( ret != PB_OK )    {        WriteLog( ERR_LVL ,"Err Call GetJourEntryArray" );        return(-1);    }           *entry_count = count;    return PB_OK;}/** 取记账分录* 输入:PB交易日期、(账户、户名、交易金额、币种)* 输出:记账分录数组、记账分录个数*/intGetJourEntryArray3(pbtrandate,s_cstm_info,entry,entry_count)char *pbtrandate;char entry[ENTRY_ROW][ENTRY_COL];int *entry_count;struct S_CSTM_INFO *s_cstm_info;{    int ret = -1;    int i = 0;    char accflag[1+1];    char cshtsftype[1+1];    int entry_count1 = 0;    memset( accflag, 0x00, sizeof(accflag));    memset( cshtsftype, 0x00, sizeof(cshtsftype));    sprintf(accflag,"0");    sprintf(cshtsftype,"2");    WriteLog( ERR_LVL , ">>>>>>>>>>>>GetJourEntryArray3<<<<<<<<<<<<<,");    WriteLog( ERR_LVL , "s_cstm_info.acc_no[%s]",s_cstm_info->acc_no);    WriteLog( ERR_LVL , "s_cstm_info.cstm_name[%s]",s_cstm_info->cstm_name);    WriteLog( ERR_LVL , "s_cstm_info.tran_amt[%lf]",s_cstm_info->tran_amt);    WriteLog( ERR_LVL , "s_cstm_info.curr_type[%s]",s_cstm_info->curr_type);    ret = GetJourEntryArray2(accflag,cshtsftype,pbtrandate,s_cstm_info,entry,&entry_count1);    if( ret != PB_OK )    {        WriteLog( ERR_LVL ," Err Call GetJourEntryArray2");        return(-1);    }    *entry_count = entry_count1;    return PB_OK;}/** 取冲账记账分录* 输入:区域号、渠道号、业务类型、交易码、记账类型、现转类型、PB交易日期、(账户、户名、交易金额、币种)* 输出:冲账分录数组、冲账分录个数*/intGetReverEntryArray(areano,chnlno,busitype,trancode,accflag,cshtsftype,pbtrandate,s_cstm_rever_info,entry,entry_count)char *areano;char *chnlno;char *busitype;char *trancode;char *accflag;char *cshtsftype;char *pbtrandate;char entry[ENTRY_ROW][ENTRY_COL];int *entry_count;struct S_CSTM_REVER_INFO *s_cstm_rever_info;{    int ret = -1;    int count = 0;    int i = 0;      char innentry[32+1];        EXEC SQL BEGIN DECLARE SECTION;        char area_no[6+1];             /* 区域号 */        char chnl_no[3+1];             /* 渠道号 */        char busi_type[3+1];           /* 业务类型 */        char tran_code[20+1];          /* 交易码 */        char acc_flag[1+1];            /* 记账类型 0-记账 1-冲账 */        char csh_tsf_type[1+1];        /*现转类型 0-现金(本代本) 1-现金(本代他)2-  现金(他代本) 3-  转账(本转本) 4-  转账(本转他)5-  转账(他转本) */        char curr_type[2+1];           /* 币种 */        struct S_PB_BUSI_ENTRY busientry;    EXEC SQL END DECLARE SECTION;    memset(area_no,0x00,sizeof(area_no));    memset(chnl_no,0x00,sizeof(chnl_no));    memset(busi_type,0x00,sizeof(busi_type));    memset(tran_code,0x00,sizeof(tran_code));    memset(acc_flag,0x00,sizeof(acc_flag));    memset(csh_tsf_type,0x00,sizeof(csh_tsf_type));    memset(curr_type,0x00,sizeof(curr_type));    memset(innentry,0x00,sizeof(innentry));        WriteLog( ERR_LVL , ">>>>>>>>>>>>GetJourEntryArray<<<<<<<<<<<<<,");    memcpy(area_no,areano,6);    memcpy(chnl_no,chnlno,3);    memcpy(busi_type,busitype,3);    memcpy(tran_code,trancode,20);    memcpy(acc_flag,accflag,1);    memcpy(csh_tsf_type,cshtsftype,1);    memcpy(curr_type,s_cstm_rever_info->curr_type,2);    rtrim(area_no);    rtrim(chnl_no);    rtrim(busi_type);    rtrim(tran_code);     rtrim(acc_flag);    rtrim(csh_tsf_type);    rtrim(curr_type);        WriteLog( ERR_LVL ,"area_no[%s]",area_no);    WriteLog( ERR_LVL ,"chnl_no[%s]",chnl_no);    WriteLog( ERR_LVL ,"busi_type[%s]",busi_type);    WriteLog( ERR_LVL ,"tran_code[%s]",tran_code);    WriteLog( ERR_LVL ,"acc_flag[%s]",acc_flag);    WriteLog( ERR_LVL ,"curr_type[%s]",curr_type);    EXEC SQL DECLARE cur_getentry3 CURSOR FOR        SELECT * FROM t_pb_busi_entry        WHERE areano = :area_no        AND   chnlno = :chnl_no        AND   busitype = :busi_type        AND   trancode = :tran_code        AND   acc_flag = :acc_flag        AND   csh_tsf_type = :csh_tsf_type        AND   curr_type = :curr_type        AND   entry_type = '0';    EXEC SQL OPEN cur_getentry3;    if (SQLCODE != 0)    {        WriteLog(ERR_LVL, "打开游标错 = [%d]", SQLCODE);        return(-1);    }    while(1)    {        memset(&busientry,0x00,sizeof(busientry));        EXEC SQL FETCH cur_getentry3 INTO :busientry;        if (SQLCODE == SQLNOTFOUND)            break;        else if( SQLCODE )        {            WriteLog(ERR_LVL, "数据库操作错 SQLCODE = [%d]", SQLCODE);            EXEC SQL CLOSE cur_getentry3;            EXEC SQL FREE cur_getentry3;            return( -1 );        }        rtrim(busientry.areano);        rtrim(busientry.chnlno);        rtrim(busientry.busitype);        rtrim(busientry.trancode);        rtrim(busientry.acc_flag);        rtrim(busientry.csh_tsf_type);        rtrim(busientry.CshTsfFlag);        rtrim(busientry.curr_type);        rtrim(busientry.entry_type);        rtrim(busientry.acc_type);        rtrim(busientry.sort_no);        rtrim(busientry.entry_desc);        rtrim(busientry.dr_cr_flag);        rtrim(busientry.acc);        rtrim(busientry.FeeNo);        rtrim(busientry.AccStat);        rtrim(busientry.ProcFlag);        rtrim(busientry.summ_no);        rtrim(busientry.summ);        rtrim(busientry.remark);        rtrim(busientry.cert_no);        rtrim(busientry.cert_type);        rtrim(busientry.Cert_date);        rtrim(busientry.CshItmFlag);        rtrim(busientry.TwoEntryFlag);        rtrim(busientry.FeeFlag);        rtrim(busientry.AnalCode);        rtrim(busientry.FeeTranCode);        rtrim(busientry.DistFlag);        rtrim(busientry.note1);        rtrim(busientry.note2);        rtrim(busientry.note3);        WriteLog( ERR_LVL, "busientry.areano[%s]",busientry.areano);        WriteLog( ERR_LVL, "busientry.chnlno[%s]",busientry.chnlno);        WriteLog( ERR_LVL, "busientry.busitype[%s]",busientry.busitype);        WriteLog( ERR_LVL, "busientry.trancode[%s]",busientry.trancode);        WriteLog( ERR_LVL, "busientry.acc_flag[%s]",busientry.acc_flag);        WriteLog( ERR_LVL, "busientry.csh_tsf_type[%s]",busientry.csh_tsf_type);        WriteLog( ERR_LVL, "busientry.CshTsfFlag[%s]",busientry.CshTsfFlag);        WriteLog( ERR_LVL, "busientry.curr_type[%s]",busientry.curr_type);        WriteLog( ERR_LVL, "busientry.entry_type[%s]",busientry.entry_type);        WriteLog( ERR_LVL, "busientry.acc_type[%s]",busientry.acc_type);        WriteLog( ERR_LVL, "busientry.sort_no[%s]",busientry.sort_no);        WriteLog( ERR_LVL, "busientry.entry_desc[%s]",busientry.entry_desc);        WriteLog( ERR_LVL, "busientry.dr_cr_flag[%s]",busientry.dr_cr_flag);        WriteLog( ERR_LVL, "busientry.acc[%s]",busientry.acc);        WriteLog( ERR_LVL, "busientry.FeeNo[%s]",busientry.FeeNo);        WriteLog( ERR_LVL, "busientry.AccStat[%s]",busientry.AccStat);        WriteLog( ERR_LVL, "busientry.ProcFlag[%s]",busientry.ProcFlag);        WriteLog( ERR_LVL, "busientry.summ_no[%s]",busientry.summ_no);        WriteLog( ERR_LVL, "busientry.summ[%s]",busientry.summ);        WriteLog( ERR_LVL, "busientry.remark[%s]",busientry.remark);        WriteLog( ERR_LVL, "busientry.cert_no[%s]",busientry.cert_no);        WriteLog( ERR_LVL, "busientry.cert_type[%s]",busientry.cert_type);        WriteLog( ERR_LVL, "busientry.Cert_date[%s]",busientry.Cert_date);        WriteLog( ERR_LVL, "busientry.CshItmFlag[%s]",busientry.CshItmFlag);        WriteLog( ERR_LVL, "busientry.TwoEntryFlag[%s]",busientry.TwoEntryFlag);        WriteLog( ERR_LVL, "busientry.FeeFlag[%s]",busientry.FeeFlag);        WriteLog( ERR_LVL, "busientry.AnalCode[%s]",busientry.AnalCode);        WriteLog( ERR_LVL, "busientry.FeeTranCode[%s]",busientry.FeeTranCode);        WriteLog( ERR_LVL, "busientry.DistFlag[%s]",busientry.DistFlag);        WriteLog( ERR_LVL, "busientry.note1[%s]",busientry.note1);        WriteLog( ERR_LVL, "busientry.note2[%s]",busientry.note2);        WriteLog( ERR_LVL, "busientry.note3[%s]",busientry.note3);                        WriteLog( ERR_LVL , "s_cstm_rever_info[atoi(busientry.sort_no)].acc_no[%s]",s_cstm_rever_info[atoi(busientry.sort_no)].acc_no);        WriteLog( ERR_LVL , "s_cstm_rever_info[atoi(busientry.sort_no)].tran_amt[%lf]",s_cstm_rever_info[atoi(busientry.sort_no)].tran_amt);        /* acc_type 0-内部帐 1-客户帐  */        if( strcmp(busientry.acc_type,"1") == 0 )           /* 客户帐  */        {            sprintf( entry[count],"%s|%s|%s|%s|%s||%lf|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s||||||||||||||||%s|%s|%s|%s|%s|",                                busientry.AccStat,                                busientry.ProcFlag,                                pbtrandate,                                s_cstm_rever_info[atoi(busientry.sort_no)].curr_type,                                s_cstm_rever_info[atoi(busientry.sort_no)].acc_no,                                s_cstm_rever_info[atoi(busientry.sort_no)].tran_amt,                                busientry.cert_type,                                busientry.cert_no,                                busientry.Cert_date,                                busientry.dr_cr_flag,                                busientry.CshTsfFlag,                                busientry.CshItmFlag,                                busientry.summ_no,                                busientry.summ,                                busientry.remark,                                busientry.TwoEntryFlag,                                busientry.FeeFlag,                                busientry.FeeTranCode,                                s_cstm_rever_info[atoi(busientry.sort_no)].acc_no,                                busientry.FeeNo,                                s_cstm_rever_info[atoi(busientry.sort_no)].corr_flag,                                s_cstm_rever_info[atoi(busientry.sort_no)].corr_date,                                s_cstm_rever_info[atoi(busientry.sort_no)].corrseqno);        }        else            /* 内部帐  */        {            ret = GetEntry(tran_code,acc_flag,csh_tsf_type,s_cstm_rever_info[atoi(busientry.sort_no)].curr_type,"0",busientry.sort_no,innentry);            rtrim(innentry);            WriteLog( ERR_LVL ," innentry[%s] ",innentry );            if( ret != PB_OK )            {                WriteLog( ERR_LVL , " Err Call GetEntry ");                return(-1);            }            sprintf( entry[count] , "%s|%s|%s|%s|%s||%lf|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s||||||||||||||||||||%s|%s|%s|",                                busientry.AccStat,                                busientry.ProcFlag,                                pbtrandate,                                s_cstm_rever_info[atoi(busientry.sort_no)].curr_type,                                innentry,                                s_cstm_rever_info[atoi(busientry.sort_no)].tran_amt,                                busientry.cert_type,                                busientry.cert_no,                                busientry.Cert_date,                                busientry.dr_cr_flag,                                busientry.CshTsfFlag,                                busientry.CshItmFlag,                                busientry.summ_no,                                busientry.summ,                                busientry.remark,                                busientry.TwoEntryFlag,                                s_cstm_rever_info[atoi(busientry.sort_no)].corr_flag,                                s_cstm_rever_info[atoi(busientry.sort_no)].corr_date,                                s_cstm_rever_info[atoi(busientry.sort_no)].corrseqno);        }        count++;    }                                    EXEC SQL CLOSE cur_getentry3;    EXEC SQL FREE cur_getentry3;                                    /****** 组手续费分录  **********/    memset(innentry,0x00,sizeof(innentry));    EXEC SQL DECLARE cur_getentry4 CURSOR FOR        SELECT * FROM t_pb_busi_entry        WHERE areano = :area_no         AND   chnlno = :chnl_no         AND   busitype = :busi_type        AND   trancode = :tran_code         AND   acc_flag = :acc_flag         AND   csh_tsf_type = :csh_tsf_type         AND   curr_type = :curr_type        AND   entry_type = '1';                                     EXEC SQL OPEN cur_getentry4;    if (SQLCODE != 0)               {                                   WriteLog(ERR_LVL, "打开游标错 = [%d]", SQLCODE);        return(-1);         }                   while(1)    {               memset(&busientry,0x00,sizeof(busientry));        EXEC SQL FETCH cur_getentry4 INTO :busientry;        if (SQLCODE == SQLNOTFOUND)             break;        else if( SQLCODE )        {               WriteLog(ERR_LVL, "数据库操作错 SQLCODE = [%d]", SQLCODE);            EXEC SQL CLOSE cur_getentry4;            EXEC SQL FREE cur_getentry4;            return( -1 );               }                                                               rtrim(busientry.areano);        rtrim(busientry.chnlno);        rtrim(busientry.busitype);        rtrim(busientry.trancode);        rtrim(busientry.acc_flag);        rtrim(busientry.csh_tsf_type);        rtrim(busientry.CshTsfFlag);        rtrim(busientry.curr_type);        rtrim(busientry.entry_type);        rtrim(busientry.acc_type);        rtrim(busientry.sort_no);        rtrim(busientry.entry_desc);        rtrim(busientry.dr_cr_flag);        rtrim(busientry.acc);        rtrim(busientry.FeeNo);        rtrim(busientry.AccStat);        rtrim(busientry.ProcFlag);        rtrim(busientry.summ_no);        rtrim(busientry.summ);        rtrim(busientry.remark);        rtrim(busientry.cert_no);        rtrim(busientry.cert_type);        rtrim(busientry.Cert_date);        rtrim(busientry.CshItmFlag);        rtrim(busientry.TwoEntryFlag);        rtrim(busientry.FeeFlag);        rtrim(busientry.AnalCode);        rtrim(busientry.FeeTranCode);        rtrim(busientry.DistFlag);        rtrim(busientry.note1);        rtrim(busientry.note2);        rtrim(busientry.note3);        WriteLog( ERR_LVL, "busientry.areano[%s]",busientry.areano);        WriteLog( ERR_LVL, "busientry.chnlno[%s]",busientry.chnlno);        WriteLog( ERR_LVL, "busientry.busitype[%s]",busientry.busitype);        WriteLog( ERR_LVL, "busientry.trancode[%s]",busientry.trancode);        WriteLog( ERR_LVL, "busientry.acc_flag[%s]",busientry.acc_flag);        WriteLog( ERR_LVL, "busientry.csh_tsf_type[%s]",busientry.csh_tsf_type);        WriteLog( ERR_LVL, "busientry.CshTsfFlag[%s]",busientry.CshTsfFlag);        WriteLog( ERR_LVL, "busientry.curr_type[%s]",busientry.curr_type);        WriteLog( ERR_LVL, "busientry.entry_type[%s]",busientry.entry_type);        WriteLog( ERR_LVL, "busientry.acc_type[%s]",busientry.acc_type);        WriteLog( ERR_LVL, "busientry.sort_no[%s]",busientry.sort_no);        WriteLog( ERR_LVL, "busientry.entry_desc[%s]",busientry.entry_desc);        WriteLog( ERR_LVL, "busientry.dr_cr_flag[%s]",busientry.dr_cr_flag);        WriteLog( ERR_LVL, "busientry.acc[%s]",busientry.acc);        WriteLog( ERR_LVL, "busientry.FeeNo[%s]",busientry.FeeNo);        WriteLog( ERR_LVL, "busientry.AccStat[%s]",busientry.AccStat);        WriteLog( ERR_LVL, "busientry.ProcFlag[%s]",busientry.ProcFlag);        WriteLog( ERR_LVL, "busientry.summ_no[%s]",busientry.summ_no);        WriteLog( ERR_LVL, "busientry.summ[%s]",busientry.summ);        WriteLog( ERR_LVL, "busientry.remark[%s]",busientry.remark);        WriteLog( ERR_LVL, "busientry.cert_no[%s]",busientry.cert_no);        WriteLog( ERR_LVL, "busientry.cert_type[%s]",busientry.cert_type);        WriteLog( ERR_LVL, "busientry.Cert_date[%s]",busientry.Cert_date);        WriteLog( ERR_LVL, "busientry.CshItmFlag[%s]",busientry.CshItmFlag);        WriteLog( ERR_LVL, "busientry.TwoEntryFlag[%s]",busientry.TwoEntryFlag);        WriteLog( ERR_LVL, "busientry.FeeFlag[%s]",busientry.FeeFlag);        WriteLog( ERR_LVL, "busientry.AnalCode[%s]",busientry.AnalCode);        WriteLog( ERR_LVL, "busientry.FeeTranCode[%s]",busientry.FeeTranCode);        WriteLog( ERR_LVL, "busientry.DistFlag[%s]",busientry.DistFlag);        WriteLog( ERR_LVL, "busientry.note1[%s]",busientry.note1);        WriteLog( ERR_LVL, "busientry.note2[%s]",busientry.note2);        WriteLog( ERR_LVL, "busientry.note3[%s]",busientry.note3);        WriteLog( ERR_LVL , "s_cstm_rever_info[atoi(busientry.sort_no)].acc_no[%s]",s_cstm_rever_info[atoi(busientry.sort_no)].acc_no);        WriteLog( ERR_LVL , "s_cstm_rever_info[atoi(busientry.sort_no)].fee_amt[%lf]",s_cstm_rever_info[atoi(busientry.sort_no)].fee_amt);        /* acc_type 0-内部帐 1-客户帐  */        if( strcmp(busientry.acc_type,"1") == 0 )           /* 客户帐  */        {            sprintf( entry[count],"%s|%s|%s|%s|%s||%lf|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s||||||||||||||||%s|%s|%s|%s|%s|",                                busientry.AccStat,                                busientry.ProcFlag,                                pbtrandate,                                s_cstm_rever_info[atoi(busientry.sort_no)].curr_type,                                s_cstm_rever_info[atoi(busientry.sort_no)].acc_no,                                s_cstm_rever_info[atoi(busientry.sort_no)].fee_amt,                                busientry.cert_type,                                busientry.cert_no,                                busientry.Cert_date,                                busientry.dr_cr_flag,                                busientry.CshTsfFlag,                                busientry.CshItmFlag,                                busientry.summ_no,                                busientry.summ,                                busientry.remark,                                busientry.TwoEntryFlag,                                busientry.FeeFlag,                                busientry.FeeTranCode,                                s_cstm_rever_info[atoi(busientry.sort_no)].acc_no,                                busientry.FeeNo,                                s_cstm_rever_info[atoi(busientry.sort_no)].corr_flag,                                s_cstm_rever_info[atoi(busientry.sort_no)].corr_date,                                s_cstm_rever_info[atoi(busientry.sort_no)].corrseqno);        }        else            /* 内部帐  */        {            ret = GetEntry(tran_code,acc_flag,csh_tsf_type,s_cstm_rever_info[atoi(busientry.sort_no)].curr_type,"1",busientry.sort_no,innentry);            rtrim(innentry);            WriteLog( ERR_LVL ," innentry[%s] ",innentry );            if( ret != PB_OK )            {                WriteLog( ERR_LVL , " Err Call GetEntry ");                return(-1);            }            sprintf( entry[count] , "%s|%s|%s|%s|%s||%lf|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s||||||||||||||||||||%s|%s|%s|",                                busientry.AccStat,                                busientry.ProcFlag,                                pbtrandate,                                s_cstm_rever_info[atoi(busientry.sort_no)].curr_type,                                innentry,                                s_cstm_rever_info[atoi(busientry.sort_no)].fee_amt,                                busientry.cert_type,                                busientry.cert_no,                                busientry.Cert_date,                                busientry.dr_cr_flag,                                busientry.CshTsfFlag,                                busientry.CshItmFlag,                                busientry.summ_no,                                busientry.summ,                                busientry.remark,                                busientry.TwoEntryFlag,                                s_cstm_rever_info[atoi(busientry.sort_no)].corr_flag,                                s_cstm_rever_info[atoi(busientry.sort_no)].corr_date,                                s_cstm_rever_info[atoi(busientry.sort_no)].corrseqno);        }                               count++;                    }                                                               *entry_count = count;           WriteLog( ERR_LVL , "entry_count[%d]",*entry_count );    EXEC SQL CLOSE cur_getentry4;    EXEC SQL FREE cur_getentry4;    for( i = 0;i<count;i++)         {                                   WriteLog( ERR_LVL ,"!!!entry[%d][%s]",i,entry[i]);    }                                                               return PB_OK;               }                                                                                               /*                              * 取冲账分录                    * 输入:冲账类型、现转类型、分录类型、PB交易日期、(账户、户名、交易金额、币种)* 输出:冲账分录数组、冲账分录个数*/                              int                             GetReverEntryArray2(accflag,cshtsftype,pbtrandate,s_cstm_rever_info,entry,entry_count)char *accflag;          char *cshtsftype;char *pbtrandate; char entry[ENTRY_ROW][ENTRY_COL];int *entry_count;struct S_CSTM_REVER_INFO *s_cstm_rever_info;{               int rellen = 0;    int ret = -1;                int count = 0;    char areano[6+1];               char chnlno[3+1];               char busitype[3+1];             char trancode[20+1];                                            memset( areano , 0x00 , sizeof(areano));        memset( chnlno , 0x00 , sizeof(chnlno));        memset( busitype , 0x00 , sizeof(busitype));      memset( trancode , 0x00 , sizeof(trancode));                                    WriteLog( ERR_LVL , ">>>>>>>>>>>>GetJourEntryArray2<<<<<<<<<<<<<,");    GetPoolDataByName("PBSYS", "AreaNo", 0, 0, areano, &rellen );    GetPoolDataByName("PBSYS", "RChnlNo", 0, 0, chnlno, &rellen );    GetPoolDataByName("PBSYS", "BusiType", 0, 0, busitype, &rellen );    GetPoolDataByName("PBSYS", "TranCode", 0, 0, trancode, &rellen );    rtrim(areano);                  rtrim(chnlno);    rtrim(busitype);    rtrim(trancode);    WriteLog(ERR_LVL ,"areano[%s]",areano);    WriteLog(ERR_LVL ,"chnlno[%s]",chnlno);    WriteLog(ERR_LVL ,"busitype[%s]",busitype);    WriteLog(ERR_LVL ,"trancode[%s]",trancode);    ret = GetReverEntryArray(areano,chnlno,busitype,trancode,accflag,cshtsftype,pbtrandate,s_cstm_rever_info,entry,&count);    if( ret != PB_OK )    {        WriteLog( ERR_LVL ,"Err Call GetReverEntryArray" );        return(-1);    }    *entry_count = count;    return PB_OK;}/** 取冲账分录* 输入:PB交易日期、(账户、户名、交易金额、币种)* 输出:冲账分录数组、冲账分录个数*/intGetReverEntry(pbtrandate,s_cstm_rever_info,entry,entry_count)char *pbtrandate;char entry[ENTRY_ROW][ENTRY_COL];int *entry_count;struct S_CSTM_REVER_INFO *s_cstm_rever_info;{    int ret = -1;    int i = 0;    char accflag[1+1];    char cshtsftype[1+1];    int entry_count1 = 0;    memset( accflag, 0x00, sizeof(accflag));    memset( cshtsftype, 0x00, sizeof(cshtsftype));    sprintf(accflag,"1");    sprintf(cshtsftype,"2");    WriteLog( ERR_LVL , ">>>>>>>>>>>>GetReverEntry<<<<<<<<<<<<<,");    WriteLog( ERR_LVL , "s_cstm_rever_info.acc_no[%s]",s_cstm_rever_info->acc_no);    WriteLog( ERR_LVL , "s_cstm_rever_info.cstm_name[%s]",s_cstm_rever_info->cstm_name);    WriteLog( ERR_LVL , "s_cstm_rever_info.tran_amt[%lf]",s_cstm_rever_info->tran_amt);    WriteLog( ERR_LVL , "s_cstm_rever_info.curr_type[%s]",s_cstm_rever_info->curr_type);    ret = GetReverEntryArray2(accflag,cshtsftype,pbtrandate,s_cstm_rever_info,entry,&entry_count1);    if( ret != PB_OK )    {        WriteLog( ERR_LVL ," Err Call GetJourEntryArray2");       return(-1);    }        *entry_count = entry_count1;        return PB_OK; }

0 0
原创粉丝点击