⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wlfx.ec

📁 在SCO UNIX制定界面程序 可根据文件配制菜单,而不必修改源程序,非常方便
💻 EC
字号:
/****************************************************
 *	网络状态分析 wlfx()
 *
 * 最后修改:	周国祥 2001/08/26
 * 最后修改:	Wubin 2001/10/15 增加按不同的银行统计网络事件
 ****************************************************/
#include <curses.h>
#include <tool.h>
#include "mytools.h"
$include "db_struct.h";
$include sqlca;

/* not modify */
double calc_double(char *);

/* defined in cglfx.ec */
extern	struct {
	char	bankid[12];
	char	hostid[3];
	int		count;
	double	amount;
}	bankids[400];

int	wlfx ()
{
	WINDOW	*my_win;
	$char	sqlstr[1024], sqlstr2[1024];
	$int	i,ret;
	$int 	count, bank_num;
	$short	indi1,indi;
	$char	bankid[12], bankname[31], netdate[11], nettime[9], netstat[5],hostid[3];
	char	table[30], date1[15], date2[15],str[100],last_bankid[18],last_hostid[3];
	char	scr_dump_file[80];

	bank_num = ret = i = count = 0;

	sprintf( scr_dump_file, "/tmp/.screen_dump.%d", getpid() );
	scr_dump ( scr_dump_file );

	disp_below ( "网络状态" );
	clear_wline ( stdscr, LINES-1 );
	h_prompt(LINES-1, 1, "                                                                 < ESC 退出 > ", 0, 0);
	h_prompt(LINES-1, 1, "网络状态", 0, 0);
	my_win = newwin(19,80,3,0);
	mvwprintw(my_win,0,0,"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
	set_prompt(PROMPT_OFF);
	wrefresh(my_win);

	getdatef(date1, "");
	strcpy(date2, date1);
	mvwprintw(my_win, 2, 14, "日    期: [        ] 到 [        ]");
	if (in_item(my_win, "", 2, 25, date1, 8, NULL, NULL, 0, 0) != ENTER) {
		delwin ( my_win );
		scr_restore ( scr_dump_file );
		unlink ( scr_dump_file );
		return ( -1 );
	}
	if (in_item(my_win, "", 2, 39, date2, 8, NULL, NULL, 0, 0) != ENTER) {
		delwin ( my_win );
		scr_restore ( scr_dump_file );
		unlink ( scr_dump_file );
		return ( -1 );
	}

	bankid[0] = 0;
	mvwprintw(my_win, 3, 14, "联行行号: [%-11.11s][%-2.2s] [%-30.30s]", bankid, hostid, "");
	if (in_item(my_win, "", 3, 25, bankid, 11, NULL, NULL, 0, 0) != ENTER) {
		delwin ( my_win );
		scr_restore ( scr_dump_file );
		unlink ( scr_dump_file );
		return ( -1 );
	}
	strcpy(hostid,"00");
	if (in_item(my_win, "", 3, 38, hostid, 2, NULL, NULL, 0, 0) != ENTER) {
		delwin ( my_win );
		scr_restore ( scr_dump_file );
		unlink ( scr_dump_file );
		return ( -1 );
	}
	DelSpace(bankid);
	DelSpace(hostid);
	i = get_bank_name(bankid, hostid, bankname);
	if (bankid[0] && i) {
		h_winprompt(my_win, 17, 4, "无此联行行号!", 1, 0);
		delwin ( my_win );
		scr_restore ( scr_dump_file );
		unlink ( scr_dump_file );
		return ( -1 );
	}
	mvwprintw(my_win, 3, 43, "%-30.30s", bankname);
	wrefresh(my_win);

	mvwprintw(my_win, 5, 14, "处理中, 请稍候 ...");
	wrefresh(my_win);

/***************
* 统计网络事件的银行数 2001/10/15 Wubin add
***************/
/* 	if (bankid[0] == 0)
		strcpy(bankid, "%"); */
	memset(&bankids, 0, sizeof(bankids));
	if (bankid[0] == 0 ) {
		sprintf(sqlstr,
			"select distinct bank_id, count(*) \
			from net_err_msg \
			where date >= \'%s\' and date <= \'%s\' \
			group by bank_id", \
			date1, date2);
		$prepare net_err from $sqlstr;
		$declare net_err_cur cursor for net_err;
		$open net_err_cur;
	
		if ( SQLCODE ) {
			errcall ( ERROR, "open net_err_cur err[%d]",SQLCODE );
			return ( -1 );
		}

		while ( bank_num < 400 ) {
			$fetch net_err_cur into $bankid, $count:indi;
			if ( SQLCODE == SQLNOTFOUND )
				break;
			if ( SQLCODE ) {
				$close net_err_cur;
				errcall ( ERROR, "fetch net_err_cur err[%d]",SQLCODE );
				return ( -1 );
			}
			if ( indi != -1 && count ) {
				DelSpace(bankid);
				strcpy ( bankids[bank_num].bankid, bankid );
				strcpy ( bankids[bank_num].hostid, "00" );
				bankids[bank_num].count = count;
				bank_num ++;
			}
		}
		$close net_err_cur;
	} else {
		strcpy(bankids[0].bankid, bankid);
	}
/**************/

	bank_num = 0;
	while (bankids[bank_num].bankid[0] != 0) {
		strcpy(bankid, bankids[bank_num].bankid);
		sprintf(sqlstr,
			"select bank_id,host_id,date,time,net_stat \
			from net_err_msg \
			where bank_id like \'%s\' \
			and date >= \'%s\' and date <= \'%s\' \
			order by bank_id, date, time",
			bankid, date1, date2 );
		$prepare s_comm from $sqlstr;
		$declare wlfx_cur cursor for s_comm;
		$open wlfx_cur;
		if ( SQLCODE ) {
			errcall ( ERROR, "open wlfx_cur err[%d]",SQLCODE );
			h_winprompt(my_win, 17, 4, "数据库操作错误!", 1,0);
			delwin ( my_win );
			scr_restore ( scr_dump_file );
			unlink ( scr_dump_file );
			return ( -1 );
		}

		sprintf(str,"%-8.8s   %-30.30s  %-10.10s %-8.8s  %-8.8s",
			"联行行号", " 联行名称", "发生日期", "发生时间", "网络事件");
		CreateList(15, 76, 7, 2, str);
	
		last_bankid[0] = 0;
		last_hostid[0] = 0;
	
	    ret = 0;
	    for ( i=0;;i++) {
		$fetch wlfx_cur into $bankid, $hostid, $netdate, $nettime, $netstat;
		if ( SQLCODE == SQLNOTFOUND )
			break;
		if ( SQLCODE ) {
			$close wlfx_cur;
			errcall ( ERROR, "fetch wlfx_cur err[%d]",SQLCODE );
			h_winprompt(my_win, 17, 4, "数据库操作错误!", 1,0);
			FreeList();
			delwin ( my_win );
			scr_restore ( scr_dump_file );
			unlink ( scr_dump_file );
			return ( -1 );
		}
		get_bank_name( bankid, hostid, bankname );
		if ( strcmp ( bankid, last_bankid ) && strcmp ( hostid, last_hostid ) )
			sprintf(str,"  %-6.6s%2.2s %-30.30s %-8.8s    %-6.6s  %-8.8s",
				bankid, hostid, bankname, netdate, nettime, netstat );
		else
			sprintf(str,"  %-6.6s%2.2s %-30.30s %-8.8s    %-6.6s  %-8.8s",
				"","","", netdate, nettime, netstat );
		strcpy ( last_bankid, bankid );
		strcpy ( last_hostid, hostid );
		AddListItem( str, 0 );
		ret = 1;
	    }
		$close wlfx_cur;
		if (!ret) AddListItem("无网络事件", 1);
		h_wpromptr(stdscr, LINES-1, "上移: Home PgUp ↑ 下移: End PgDn ↓ 返回或显示下一个行: ESC", 0, 0);
		DispList(0);
		FreeList();
		bank_num++;
	}
	delwin ( my_win );
	clear_wline ( stdscr, LINES-1 );
	scr_restore ( scr_dump_file );
	unlink ( scr_dump_file );
	return ( 0 );
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -