亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? agtpay.ec

?? 簡單的銀行代收系統(tǒng)
?? EC
?? 第 1 頁 / 共 2 頁
字號:
		EXEC SQL ROLLBACK WORK;
		return (-1);
	}
	
	/* 驗證 */
	if (datahead.sum_num != tot_num)
	{
		batlog("文件實際筆數與匯總信息不符合![%d][%d]  [%s][%d]", datahead.sum_num, tot_num, __FILE__, __LINE__);
	}

	if ( datahead.sum_amt - suc_amt - bad_amt < -ZEROAMT 
		|| datahead.sum_amt - suc_amt - bad_amt > ZEROAMT)
	{
		batlog("文件實際金額與匯總信息不符合![%.2lf][%.2lf]  [%s][%d]", datahead.sum_amt, suc_amt+bad_amt, __FILE__, __LINE__);
	}

	/* 生成結果文件 */
	ret = gen_retfile(&datahead, suc_num, bad_num, suc_amt, reflag);
	if (ret != 0)
	{
		batlog("生成結果文件錯!  [%s][%d]", __FILE__, __LINE__);
		return (-1);
	} 

	/* 關閉數據庫 */
	EXEC SQL CLOSE DATABASE;
	if (SQLCODE)
	{
		batlog("關閉數據庫失敗!database_name[%s][%d]  [%s][%d]", database, SQLCODE, __FILE__, __LINE__);
		return (-1);
	}

	batlog("批量代發(fā)工資完成!  [%s][%d]", __FILE__, __LINE__);

	return (0);
}

/* 寫日志函數
 * Function: batlog(char * fmt,...)
 */
void batlog(va_alist)   /*  va_alist = parameters table*/
va_dcl
{
    va_list args;/*  a varible in order to check parameters table */
    char *sign,*fmt;
    char err_str1[80],err_str2[80];
    char outfile[80];
    char *home;
    FILE *logfd;
    time_t itm;
    struct tm *stm;

    memset(err_str1,'-',79); err_str1[79]='\0';
    memset(err_str2,'*',79); err_str2[79]='\0';
    memset(outfile,0x0,80);

    itm=time(&itm);
    stm=localtime(&itm);

    sprintf(outfile,"./%s", ERRNAME );
    /*  initial parameters table, set args at start of parameters table */

    va_start(args);
    if ((logfd=fopen(outfile,"a"))==NULL)
	{
        fprintf(stderr,"Error in open %s\n",outfile);
        return;
    }

    fprintf(logfd,"%s\n",err_str2);
    fprintf(logfd,"%4d/%02d/%02d %02d:%02d:%02d\n",\
                                stm->tm_year+1900,\
                                stm->tm_mon+1,stm->tm_mday,\
                                stm->tm_hour,stm->tm_min,stm->tm_sec);

    fmt=va_arg(args,char *);
    vfprintf(logfd,fmt,args);
    fprintf(logfd,"\n%s\n",err_str1);
    fflush(logfd);

    va_end(args);       /* clear parameters table       */
    fclose(logfd);
}

/* 去右空格函數
 * Function: char *batlog(char * fmt,...)
 */
char * rtrim ( char *str )
{
    char *endp;

    if ( str == NULL )  return str;
    for ( endp = strchr (str, '\0'); endp != (char*)str && *--endp == ' '; )
         *endp = '\0';
    return (str);
}

/*取文件中某個域的值
 *Function: get_value(char * line, int *index, char * value)
 *		  line -- 原字符串
 *		  index -- 起始位置
 *        value -- 域值
 */
char *
get_value(char * line, int *index, char * value)
{
	char *p = NULL;

	p = strchr(&line[*index], '|');
	if (p == NULL)
	{
		p = strchr(&line[*index], '\n');
		if (p == NULL)
		{
			return(NULL);
		}
	}
	strncpy(value, &line[*index], p - &(line[*index]));
    *index	= *index + (p - &(line[*index])) + 1;

	return (value);
}

/*取第一行匯總信息
 *Function: read_tot_line(char * line, struct s_data_head *head)
 *			line -- 原內容字符串
 *			head -- 第一行匯總信息結構體指針
 *return: 0 -- 成功 <0 -- 失敗
 */
int
read_tot_line(char * line, struct s_data_head * head)
{
	char tmpstr[80+1];
	int index = 0;

	memset(tmpstr, 0, sizeof(tmpstr));

	/* 單位名稱 */
	get_value(line, &index, tmpstr);
	rtrim(tmpstr);
	strncpy(head->corp_name, tmpstr, 60);

	/* 合計金額 */
	memset(tmpstr, 0, sizeof(tmpstr));
	get_value(line, &index, tmpstr);
	rtrim(tmpstr);
	head->sum_amt = atof(tmpstr);

	/* 合計筆數 */
	memset(tmpstr, 0, sizeof(tmpstr));
	get_value(line, &index, tmpstr);
	rtrim(tmpstr);
	head->sum_num = atoi(tmpstr);

	/* 代發(fā)日期 */
	memset(tmpstr, 0, sizeof(tmpstr));
	get_value(line, &index, tmpstr);
	rtrim(tmpstr);
	strncpy(head->tran_date, tmpstr, 8);

	/* 內部帳戶 */
	memset(tmpstr, 0, sizeof(tmpstr));
	get_value(line, &index, tmpstr);
	rtrim(tmpstr);
	strncpy(head->inn_acc, tmpstr, 30);

	/* 檢查合法性 */
	if ( strlen(head->corp_name) == 0
		|| head->sum_amt < -ZEROAMT
		|| (head->sum_amt > -ZEROAMT && head->sum_amt < ZEROAMT)
		|| head->sum_num <= 0
		|| strlen(head->tran_date) == 0
		|| strlen(head->inn_acc) == 0
	   )
	{
		batlog("第一行匯總信息不合法!\ncorp_name[%s]\nsum_amt[%.2lf]\nsum_num[%d]\ntran_date[%s]\ninn_acc[%s]  [%s][%d]",
              head->corp_name, head->sum_amt, head->sum_num, head->tran_date,head->inn_acc, __FILE__, __LINE__);
		return (-1);
	}

	return (0);
}


/*取明細信息
 *Function: read_body(char * line, struct s_data_body *body)
 *			line -- 原內容字符串
 *			head -- 明細信息結構體指針
 *return: 0 -- 成功 <0 -- 失敗
 */
int read_body(char *line, struct s_data_body *body) 
{
	char tmpstr[80+1];
	int	index = 0;

	memset(tmpstr, 0, sizeof(tmpstr));
	
	/* 帳號 */
	get_value(line, &index, tmpstr);
	rtrim(tmpstr);
	strncpy(body->acc, tmpstr, 30);
	
	/* 戶名 */
	memset(tmpstr, 0, sizeof(tmpstr));
	get_value(line, &index, tmpstr);
	rtrim(tmpstr);
	strncpy(body->acc_name, tmpstr, 60);
	
	/* 金額 */
	memset(tmpstr, 0, sizeof(tmpstr));
	get_value(line, &index, tmpstr);
	rtrim(tmpstr);
	body->amt = atof(tmpstr);
	
	/* 檢查合法性 */
	if ( strlen(body->acc) == 0
		|| strlen(body->acc_name) == 0
		|| body->amt < -ZEROAMT
		|| (body->amt > -ZEROAMT && body->amt < ZEROAMT)
	   )
	{
		batlog("此條信息不合法!\nacc[%s]\nacc_name[%s]\namt[%.2lf]  [%s][%d]",
              body->acc, body->acc_name, body->amt, __FILE__, __LINE__);
    	return (-1); 
	}

	return (0);
}


/*插代發(fā)工資結果表
 *Function: insert_payret(struct s_data_head *head, struct s_data_body *body, int flag, char * msg)
 *			head -- 第一行匯總信息結構體指針
 *			body -- 明細信息結構體指針
 *			flag -- 0:成功操作,1:失敗操作
 *			msg  -- 失敗時的說明信息
 *return: 0 -- 成功 <0 -- 失敗
 */
int
insert_payret(head, body, flag, msg)
	struct s_data_head *head;
	struct s_data_body *body;
	int flag;
	char * msg;
{
	EXEC SQL BEGIN DECLARE SECTION;
		struct s_agt_payret payret;
	EXEC SQL END DECLARE SECTION;
	
	memset(&payret, 0, sizeof(payret));
	
	strcpy(payret.acc, body->acc);
	strcpy(payret.corp_name, head->corp_name);
	rdefmtdate(&payret.tran_date, "yyyymmdd", head->tran_date);
	sprintf(payret.flag, "%d", flag);
	if(flag == 1)
	{
		strncpy(payret.remark, msg, 60);
	}

	/* 插入表中 */
	EXEC SQL INSERT INTO t_agt_payret VALUES (:payret);
	if (SQLCODE)
	{
		if(SQLCODE == 239)
		{
			batlog("Warning:有重復記錄!\nacc[%s]\ncorp_name[%s]\ntran_date[%s]  [%s][%d]",
              payret.acc, payret.corp_name, head->tran_date, __FILE__, __LINE__);
    		return (0); 
		}
		else
		{
			batlog("數據庫操作錯!\nsqlcode[%d]\nacc[%s]\ncorp_name[%s]\ntran_date[%s]  [%s][%d]",
              SQLCODE, payret.acc, payret.corp_name, head->tran_date, __FILE__, __LINE__);
    		return (-1); 
		}	
	}
	
	return (0);
}


/*生成結果清單
 *Function: gen_retfile(struct s_data_head *head, long suc_num, long bad_num, double suc_amt, long reflag )
 *			head -- 第一行匯總信息結構體指針
 *			body -- 明細信息結構體指針
 *			flag -- 0:成功操作,1:失敗操作
 *			msg  -- 失敗時的說明信息
 *return: 0 -- 成功 <0 -- 失敗
 */
int
gen_retfile(head, suc_num, bad_num, suc_amt, reflag)
EXEC SQL BEGIN DECLARE SECTION;
	parameter struct s_data_head *head;
EXEC SQL END DECLARE SECTION;
	long suc_num;
	long bad_num;
	double suc_amt;
	long reflag;
{
	EXEC SQL BEGIN DECLARE SECTION;
		int tran_date = 0;
		struct s_agt_payret payret;
	EXEC SQL END DECLARE SECTION;
	char top[80+1];
	char mid[80+1];
	char enm[80+1];
	char end[80+1];
	char stramt[20+1];
	char filename[80+1];
	FILE * fp = NULL;

	memset(&payret, 0, sizeof(payret));
	memset(top, 0, sizeof(top));
	memset(mid, 0, sizeof(mid));
	memset(enm, 0, sizeof(enm));
	memset(end, 0, sizeof(end));
	memset(filename, 0, sizeof(filename));
	memset(stramt, 0, sizeof(stramt));

	strcpy(top, "┌─────────┬───────────────┐\n");
	strcpy(mid, "├─────────┼───────────────┤\n");
	strcpy(enm, "├─────────┴───────────────┤\n");
	strcpy(end, "└─────────────────────────┘\n");

	sprintf(filename, "./%s", RETNAME); 
	fp = fopen(filename, "w");
	if (fp == NULL)
	{
		batlog("打開結果文件失敗!filename[%s]  [%s][%d]", filename, __FILE__, __LINE__);
		return (-1);
	}

	/* 寫基本信息 */
	fprintf(fp, "%s", top);
	fprintf(fp, "|%18s|%30s|\n", "代發(fā)單位", head->corp_name);
	fprintf(fp, "%s", mid);

	memset(stramt, 0, sizeof(stramt));
	sprintf(stramt, "%.2lf", head->sum_amt);
	fprintf(fp, "|%18s|%30s|\n", "預計發(fā)放金額", stramt);
	fprintf(fp, "%s", mid);

	memset(stramt, 0, sizeof(stramt));
	sprintf(stramt, "%.2lf", suc_amt);
	if ( reflag == 0 )
	{
		fprintf(fp, "|%18s|%30s|\n", "實際發(fā)放金額", stramt);
	}
	else
	{
		fprintf(fp, "|%18s|%30s|\n", "補發(fā)金額", stramt);
	}
	fprintf(fp, "%s", mid);

	fprintf(fp, "|%18s|%30d|\n", "代發(fā)總戶數", head->sum_num);
	fprintf(fp, "%s", mid);

	fprintf(fp, "|%18s|%30d|\n", "成功戶數", suc_num);
	fprintf(fp, "%s", mid);

	fprintf(fp, "|%18s|%30d|\n", "失敗戶數", bad_num);
	fprintf(fp, "%s", mid);

	fprintf(fp, "|%18s|%30s|\n", "失敗帳戶", "失敗原因");
	fprintf(fp, "%s", enm);

	/* 查詢失敗明細 */
	rdefmtdate(&tran_date, "yyyymmdd", head->tran_date);	
	EXEC SQL DECLARE cur_payret CURSOR FOR
		SELECT * FROM t_agt_payret
			WHERE corp_name = :head->corp_name
			AND tran_date = :tran_date
			AND flag = '1';
	if (SQLCODE)
	{
		batlog("定義游標失敗!sqlcode[%d]  [%s][%d]", SQLCODE, __FILE__, __LINE__);
		fclose(fp);
		return (-1);
	}

	EXEC SQL OPEN cur_payret;
	if (SQLCODE)
	{
		batlog("打開游標失敗!sqlcode[%d]  [%s][%d]", SQLCODE, __FILE__, __LINE__);
		fclose(fp);
		return (-1);
	}

	while (1)
	{
		memset(&payret, 0, sizeof(payret));
		EXEC SQL FETCH cur_payret INTO :payret;
		if (SQLCODE == 100)
		{
			break;
		}
		else if (SQLCODE < 0)
		{
			batlog("查詢結果表失敗!sqlcode[%d]  [%s][%d]", SQLCODE, __FILE__, __LINE__);
			EXEC SQL CLOSE cur_payret;
			EXEC SQL FREE cur_payret;
			fclose(fp);
			return (-1);
		}
		rtrim(payret.acc);
		rtrim(payret.remark);
		fprintf(fp, "|%18s  %30s|\n", payret.acc, payret.remark);
	}

	EXEC SQL CLOSE cur_payret;
	EXEC SQL FREE cur_payret;

	fprintf(fp, "%s", end);

	fclose(fp);

	return (0);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区精品在线观看| 亚洲另类在线一区| 欧美日韩色综合| 在线观看中文字幕不卡| 91在线视频免费观看| 成人免费视频播放| 99re8在线精品视频免费播放| 欧美性色黄大片| 色综合夜色一区| 欧美亚日韩国产aⅴ精品中极品| 91极品美女在线| 欧美日韩情趣电影| 欧美精品v日韩精品v韩国精品v| 欧美久久一区二区| 欧美一级片在线| 久久亚洲综合色| 欧美激情一区二区三区在线| 国产精品天美传媒| 亚洲自拍都市欧美小说| 日韩国产欧美在线播放| 国产在线视频一区二区| 粉嫩aⅴ一区二区三区四区| 懂色av一区二区夜夜嗨| 99久久久久免费精品国产| 色天天综合色天天久久| 91精品在线麻豆| 欧美激情一区三区| 日韩av中文字幕一区二区三区| 日韩高清一区二区| 丰满少妇在线播放bd日韩电影| 色一情一伦一子一伦一区| 91精品国产乱| 欧美极品aⅴ影院| 日韩高清不卡在线| 国产精品99久久久久久久vr | 欧美日韩一区国产| 日韩视频免费观看高清完整版在线观看 | 欧美日韩免费高清一区色橹橹| 日韩一区二区视频| 久久久久国产精品麻豆ai换脸| 中文字幕免费在线观看视频一区| 亚洲资源在线观看| 国产高清一区日本| 欧美精品一二三区| 国产精品久久一级| 久久国产视频网| 99精品欧美一区| 欧美一级一级性生活免费录像| 中文字幕不卡在线| 国产一区二区三区视频在线播放| 成人深夜在线观看| 久久亚洲一区二区三区明星换脸| 亚洲三级免费观看| 国产成人在线视频网站| 91精品国产一区二区三区| 亚洲免费观看视频| 极品尤物av久久免费看| 欧美区在线观看| 亚洲图片另类小说| 国产精品一区二区你懂的| 欧美日韩国产三级| 亚洲女人的天堂| 懂色av一区二区夜夜嗨| 久久精品免视看| 久久91精品国产91久久小草| 欧美一区二区三区思思人| 亚洲一区av在线| 91黄视频在线观看| 亚洲欧美另类图片小说| 国产91精品一区二区麻豆亚洲| 日韩免费观看2025年上映的电影| 亚洲一区二区三区中文字幕 | 国产激情视频一区二区在线观看| 欧美吞精做爰啪啪高潮| 亚洲免费观看高清完整版在线观看| 国产九九视频一区二区三区| 精品国产乱码久久久久久夜甘婷婷 | 欧美电影免费观看高清完整版在线| 亚洲免费观看高清完整版在线观看熊 | 欧美性欧美巨大黑白大战| 亚洲天堂免费看| 色一区在线观看| 亚洲一区二区在线观看视频| 欧美三级中文字幕| 亚洲激情网站免费观看| 一本一本大道香蕉久在线精品 | 99re热视频精品| 亚洲精品免费视频| 欧洲精品一区二区三区在线观看| 亚洲一区自拍偷拍| 欧美日韩一级二级三级| 三级亚洲高清视频| 56国语精品自产拍在线观看| 夜夜爽夜夜爽精品视频| 色婷婷亚洲精品| 午夜精品一区二区三区免费视频 | 久久国产夜色精品鲁鲁99| 欧美一级xxx| 久色婷婷小香蕉久久| 337p日本欧洲亚洲大胆精品| 国产成人精品午夜视频免费| 中文字幕高清一区| 色婷婷久久久久swag精品| 欧美激情一区二区三区蜜桃视频| 91视频国产观看| 天堂va蜜桃一区二区三区漫画版| 日韩一级大片在线| 成人美女视频在线观看18| 亚洲视频免费看| 制服丝袜亚洲网站| 日韩欧美在线观看一区二区三区| 激情文学综合丁香| 欧美国产欧美综合| 7777精品伊人久久久大香线蕉 | 91丝袜高跟美女视频| 成人涩涩免费视频| 在线日韩国产精品| 国产精品综合av一区二区国产馆| 国产精品国产三级国产aⅴ无密码| 欧美亚洲一区二区在线观看| 美女视频黄 久久| 国产精品久久久久7777按摩| 91麻豆精品国产| 91在线视频免费观看| 免费在线观看视频一区| 日韩一区欧美小说| 亚洲精品在线观| 欧美日韩精品综合在线| 国产宾馆实践打屁股91| 免费欧美在线视频| 一区二区三区在线播放| 国产精品福利影院| 久久久亚洲精品一区二区三区| 欧美日韩一二三| 99精品久久99久久久久| 国产激情视频一区二区三区欧美 | 久久亚洲捆绑美女| 69p69国产精品| 欧美高清hd18日本| 欧美三级一区二区| 在线观看一区二区视频| 99国产精品久久久久久久久久| 久久成人精品无人区| 日日噜噜夜夜狠狠视频欧美人| 1024精品合集| 中文字幕五月欧美| 国产精品无人区| 中文字幕欧美国产| 国产精品乱码久久久久久| 日本一区二区成人| 国产欧美日韩在线视频| 国产午夜精品久久久久久免费视| 精品国产1区2区3区| 欧美一区二区三区性视频| 欧美精品自拍偷拍| 欧美精品在线一区二区三区| 这里只有精品视频在线观看| 欧美日韩激情在线| 欧美日韩你懂的| 日本大香伊一区二区三区| 色婷婷av一区二区三区大白胸| 色系网站成人免费| 欧美日韩中文国产| 91.com在线观看| 日韩欧美亚洲另类制服综合在线| 日韩欧美你懂的| 欧美激情一区二区三区蜜桃视频 | 亚洲日韩欧美一区二区在线| 亚洲欧美另类图片小说| 一区二区三国产精华液| 亚洲国产aⅴ成人精品无吗| 亚洲综合区在线| 午夜在线成人av| 麻豆91在线看| 国产电影精品久久禁18| 一本到不卡精品视频在线观看| 一本大道综合伊人精品热热| 欧美人xxxx| 久久久久久**毛片大全| 国产精品女主播av| 亚洲制服丝袜av| 精品亚洲aⅴ乱码一区二区三区| 国产一区视频网站| 夫妻av一区二区| 欧美疯狂性受xxxxx喷水图片| 88在线观看91蜜桃国自产| 精品免费一区二区三区| 中文字幕av一区 二区| 亚洲精品亚洲人成人网在线播放| 亚洲大片在线观看| 国产伦精品一区二区三区免费| 99re在线精品| 欧美成人高清电影在线| 亚洲欧美日韩国产综合| 裸体一区二区三区| 97精品久久久午夜一区二区三区 | 中文字幕第一区综合| 亚洲6080在线| 91网站视频在线观看| 日韩精品一区二区在线观看|