📄 logserial.cp
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#include <memory.h>#include <sys/types.h>#include "apgloble.h"#include "bms_strcdef.h"#include "bms_micro.h"EXEC SQL INCLUDE SQLCA;EXEC SQL INCLUDE "bms_sql.h";#define IVR 1#define AGENT 2#define TERMINAL 5extern void error_handler();extern void warning_handler();extern void notfound_handler();int DB_GenSerialNo(int *Active, BIG_STRC *bs);int DB_LogTransaction(int Active, BIG_STRC *bs);int DB_GenSerialNo(int *Active, BIG_STRC *bs){ EXEC SQL BEGIN DECLARE SECTION; char WorkDate[10 + 1]; short CurrLog; int SerialNo; EXEC SQL END DECLARE SECTION; EXEC SQL WHENEVER SQLERROR CALL error_handler() ; EXEC SQL WHENEVER SQLWARNING CALL warning_handler() ; EXEC SQL WHENEVER NOT FOUND CALL notfound_handler() ; EXEC SQL BEGIN TRANSACTION; /*EXEC SQL LOCK TABLE daily_switch_ctl IN SHARE MODE;*/ EXEC SQL SELECT currlog, workdate INTO :CurrLog, :WorkDate FROM daily_switch_ctl; if (sqlca.sqlcode) { bms_trace("error2 = [%d]\n", sqlca.sqlcode); fprintf(stdout, "%s\n", sqlca.sqlerrm.sqlerrmc); EXEC SQL ROLLBACK TRANSACTION; return FAILURE; } bms_trace("CurrLog[%d] [%s]", CurrLog, WorkDate); EXEC SQL EXEC :SerialNo = proc_getserialno; if( SerialNo < 0 ) { bms_trace("EXEC proc_getserialno failed."); return FAILURE; } EXEC SQL COMMIT TRANSACTION; strcpy(bs->serv_date, WorkDate); bs->trade_serial = SerialNo; *Active = CurrLog; return SUCCESS;}int DB_LogTransaction(int ActiveLog, BIG_STRC *bs){ EXEC SQL BEGIN DECLARE SECTION ; SQL_DAILY_TXLOG daily_txlog; short active = 0; int trade_serial; char serv_time[19 + 1]; EXEC SQL END DECLARE SECTION; FILE *fp; char filename[128]; memset((char *)&daily_txlog, 0, sizeof(SQL_DAILY_TXLOG )); bms_trace("active log = [%d]", ActiveLog); memset(filename, 0, sizeof(filename)); sprintf(filename, "%s/log/dberr%08ld.log", getenv("HOME"), GetDate()); if(bs->side == IVR) { strcpy(bs->teller, "IVR"); } else { bs->teller[5] = 0; } sprintf(serv_time, "%08ld %s", GetDate(), bs->serv_time); strncpy(daily_txlog.teller, bs->teller, 5 ); daily_txlog.teller[strlen(daily_txlog.teller)] = 0; daily_txlog.trade_serial = bs->trade_serial ; daily_txlog.otrade_serial = bs->otrade_serial ; strncpy(daily_txlog.flag , bs->flag, 1); bs->flag[strlen(bs->flag)] = 0; daily_txlog.side = bs->side ; daily_txlog.optcode = bs->optcode ; strncpy(daily_txlog.serv_type, bs->serv_type, 1); daily_txlog.busin_type = bs->busin_type ; daily_txlog.trade_type = bs->trade_type ; daily_txlog.result = bs->result ; strncpy(daily_txlog.serv_date, bs->serv_date , 10 ); sprintf(daily_txlog.serv_time, "%08ld %s", GetDate(), bs->serv_time); strncpy(daily_txlog.auther, bs->auther, 5); strncpy(daily_txlog.auth_no, bs->auth_no, strlen(bs->auth_no)); sprintf(daily_txlog.zoneno, "%05d", bs->zoneno); daily_txlog.ctype = bs->ctype; strncpy(daily_txlog.cid , bs->cid, 11 ); daily_txlog.bid = bs->bid ; strncpy(daily_txlog.debi_aid, bs->debi_aid, 4); daily_txlog.debi_acct_type = bs->debi_acct_type ; strncpy(daily_txlog.debi_bank, bs->debi_bank, 20 ); strncpy(daily_txlog.debi_acct, bs->debi_acct, 30 ); daily_txlog.debi_acct[strlen(daily_txlog.debi_acct)] = 0; daily_txlog.debi_curr = bs->debi_curr; strncpy(daily_txlog.cred_aid, bs->cred_aid, 4 ); daily_txlog.cred_acct_type = bs->cred_acct_type ; strncpy(daily_txlog.cred_bank, bs->cred_bank, 20 ); strncpy(daily_txlog.cred_acct, bs->cred_acct, 30 ); daily_txlog.cred_curr = bs->cred_curr; daily_txlog.debi_amt = bs->debi_amt; daily_txlog.cred_amt = bs->cred_amt; daily_txlog.debi_bala = bs->debi_bala; daily_txlog.cred_bala = bs->cred_bala; daily_txlog.bill_flg = bs->bill_flg; strncpy(daily_txlog.abstract, bs->abstract, 10 ); daily_txlog.deduct_type = bs->deduct_type; daily_txlog.pz_type = bs->pz_type; strncpy(daily_txlog.pz_num, bs->pz_num, 30 ); daily_txlog.pz_num[strlen(daily_txlog.pz_num)]=0; daily_txlog.source_typ = bs->source_typ ; daily_txlog.source_ser = bs->source_ser ; strncpy(daily_txlog.consign_no, bs->sonsign_no, 20 ); daily_txlog.purchase_num = bs->purchase_num; daily_txlog.detail_num= bs->detail_num; strncpy(daily_txlog.address, bs->address, 80 ); strncpy(daily_txlog.rate, bs->rate, 10 ); strncpy(daily_txlog.name, bs->name, 80 ); strncpy(daily_txlog.postcode, bs->postcode, 6 ); strncpy(daily_txlog.tele, bs->tele, 20 ); strncpy(daily_txlog.term_no, bs->term_no, 10 ); strncpy(daily_txlog.incall_num, bs->incall_num, 30 ); strncpy(daily_txlog.call_id, bs->call_id, 30 ); daily_txlog.money1 = bs->money1; daily_txlog.money2 = bs->money2; daily_txlog.money3 = bs->money3; daily_txlog.money4 = bs->money4; strncpy(daily_txlog.notes1, bs->notes1, 30 ); strncpy(daily_txlog.notes2, bs->notes2, 30 ); strncpy(daily_txlog.notes3, bs->notes3, 30 ); strncpy(daily_txlog.notes4, bs->notes4, 30 ); strncpy(daily_txlog.notes5, bs->notes5, 30 ); strncpy(daily_txlog.notes6, bs->notes6, 256); strncpy(daily_txlog.notes7, bs->notes7, 256); strncpy(daily_txlog.notes8, bs->notes8, 256); strncpy(daily_txlog.notes9, bs->notes9, 256); strncpy(daily_txlog.notes10, bs->notes10, 256); strncpy(daily_txlog.city_no, bs->city_no, 20 ); strncpy(daily_txlog.trade_brch, bs->trade_brch, 20 ); strncpy(daily_txlog.date1, bs->date1, 10 ); strncpy(daily_txlog.date2, bs->date2, 10 ); strncpy(daily_txlog.record, bs->index, 50 ); EXEC SQL BEGIN TRANSACTION; switch(ActiveLog) { case 1: EXEC SQL INSERT INTO daily_txlog1 VALUES( :daily_txlog); break; case 2: EXEC SQL INSERT INTO daily_txlog2 VALUES( :daily_txlog); break; default: bms_trace("Invalid table flag[%d].", ActiveLog); EXEC SQL ROLLBACK TRANSACTION; return FAILURE; } if( sqlca.sqlcode != SUCCESS ) { fp = fopen(filename, "ab+"); fprintf(fp, "error due to [%d]:%s|%d|%s|%s|%d|%d|%s|%d|%s|%.2lf\n", sqlca.sqlcode, bs->teller, bs->side, bs->serv_date, bs->serv_time, bs->optcode, bs->result, bs->debi_acct, bs->zoneno, bs->trade_brch, bs->debi_amt); fclose(fp); EXEC SQL ROLLBACK TRANSACTION; return FAILURE; } EXEC SQL COMMIT TRANSACTION;; return SUCCESS;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -