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

📄 winlib.c

📁 在IBM RS6000小型机上AIX操作系统下INFORMIX数据库C源代码有通讯和管理程序
💻 C
📖 第 1 页 / 共 2 页
字号:
                        if(bz==1) 				je = atof(str) / mod;                         else				je = atof(str);                         sprintf(fmstr,"%lf",je);                        strcpy(bp->field[nu]->upbuf,fmstr);                        *(bp->field[nu]->buf_d)=je;                        sprintf(fmstr1,"%lf",*(bp->field[nu]->buf_d));	                tomoney(fmstr,fmstr1,bp->field[nu]->dlen,                                             bp->field[nu]->scale,0);		        mvwaddstr(bp->win, bp->field[nu]->y,                                              bp->field[nu]->x, fmstr);			wrefresh(bp->win);			return(1);			break;		case CHAR:			strncpy(bp->field[nu]->buf_s, str, 1);			strncpy(bp->field[nu]->upbuf, str, 1);	                mvwaddstr(bp->win, bp->field[nu]->y, bp->field[nu]->x,                         	bp->field[nu]->buf_s);	        	wrefresh(bp->win);			return(1);			break;		case SSTR:		case MSTR:		case MSST:		case STR:			strcpy(bp->field[nu]->buf_s, str);			strcpy(bp->field[nu]->upbuf, str);	                mvwaddstr(bp->win, bp->field[nu]->y, bp->field[nu]->x,                         	bp->field[nu]->buf_s);	        	wrefresh(bp->win); 			return(1);			break;		case MAST:			strcpy(bp->field[nu]->buf_s, str);			strcpy(bp->field[nu]->upbuf, str);			for (k = 0; k < strlen(bp->field[nu]->buf_s); k++)			mvwaddch(bp->win, bp->field[nu]->y,                                  bp->field[nu]->x + k, '*');			wrefresh(bp->win);			return(1);			break;		case DAT1:                        if(chk_date(str)==ERR) return(0);                        else {				strmove(bp->field[nu]->buf_s, str, 10);				strmove(bp->field[nu]->upbuf, str, 10);	               	        mvwaddstr(bp->win, bp->field[nu]->y,                                      bp->field[nu]->x, bp->field[nu]->buf_s);	        		wrefresh(bp->win);				return(1);                           }			break;		case DAT2:                        if(chk_date(str)==ERR) return(0);                        else {				strmove(bp->field[nu]->buf_s, str, 8);				strmove(bp->field[nu]->upbuf, str, 8);	               	        mvwaddstr(bp->win, bp->field[nu]->y,                                      bp->field[nu]->x, bp->field[nu]->buf_s);	        		wrefresh(bp->win);				return(1);                          }			break;		default:			dperror(bp, "发现非法数据类型!");			return(0);			break;		}	} else {		if(bp->field[nu]->nuflag!=YES) {			dperror(bp, "不能用空串赋值!");			return(0);		}		return(1);	}}/*****   功能: 指定域显示串值****   返回: 1 ok 0 error***/dispbuf( p, nu, str)RECORD *p;  /*块指针*/short  nu;         /*域号*/char	*str;      /*值串*/{char	fmstr[20], fmstr1[20], yy[5], mm[3], dd[3];int	mod, k;double	atof(), je;clearyu(p,nu);if (strlen(str) != 0) {  	switch (p->field[nu]->type) {	case YINT:	case UINT:		tomoney(fmstr, str, p->field[nu]->dlen, 0, 1 );		mvwaddstr(p->win, p->field[nu]->y, p->field[nu]->x, fmstr);		wrefresh(p->win);		return(1);		break;	case UDOU:	case DOUB:	        tomoney(fmstr,str, p->field[nu]->dlen, p->field[nu]->scale, 0 );		mvwaddstr(p->win, p->field[nu]->y, p->field[nu]->x, fmstr);		wrefresh(p->win);		return(1);		break;	case CHAR:	case SSTR:	case MSTR:	case MSST:	case DAT1:	case DAT2:	case STR:	        mvwaddstr(p->win, p->field[nu]->y, p->field[nu]->x, str);		wrefresh(p->win);		return(1);		break;	case MAST:		for (k = 0; k < strlen(str); k++)		mvwaddch(p->win, p->field[nu]->y, p->field[nu]->x + k, '*');		wrefresh(p->win);		return(1);		break;	default:		dperror(p, "发现非法数据类型!");		return(0);		break;	}}}/*****   功能: 取指定的域STR值***/getbuf_s(p, nu, str)RECORD *p;short	nu;char	*str;{	switch (p->field[nu]->type) {	case SSTR:	case MSTR:	case MSST:	case MAST:	case STR:		strcpy(str, p->field[nu]->buf_s);		return(1);		break;	case DAT1:		strmove(str, p->field[nu]->buf_s, 10);		str[10] = '\0';		return(1);		break;	case DAT2:		strmove(str, p->field[nu]->buf_s, 8);		return(1);      		break;	default:		dperror(p, "发现非法数据类型!");		return(0);		break;	}}/*****   功能: 取指定的域CHAR值***/getbuf_c(p, nu, str)RECORD *p;short	nu;char	*str;{	strncpy(str, p->field[nu]->buf_s, 1);	return(1);}/*****   功能: 取指定的域INT值***/getbuf_i(p, nu)RECORD *p;short	nu;{	int	intm;	switch (p->field[nu]->type) {	case YINT:	case UINT:		intm = *(p->field[nu]->buf_i);		return(intm);		break;	default:		dperror(p, "发现非法数据类型!");		return(-1);		break;	}}/*****   功能: 取指定的域DOUBLE值***/double	getbuf_d(p, nu)RECORD *p;short	nu;{	double	dou, atof();	switch (p->field[nu]->type) {	case UDOU:	case DOUB:		dou = *(p->field[nu]->buf_d);		return(dou);		break;	default:		dperror(p, "发现非法数据类型!");		return(-1);		break;	}}/*****   功能: 绝对域跳转***/jmpbuf(p, nu)RECORD *p;short	nu;{	if (nu > p->nu) {		dperror(p, "跳转域号错误!");		return(0);	}/*	if (p->field[nu]->flag == NO) {		dperror(p, "跳转域不是可进入域!");		return(0);	}*/	p->dqnu = --nu;	return(1);}/*****   功能: 清除域空间***/clearyu(p,nu)RECORD *p;int nu;{	int	i;	for (i = 0; i < p->field[nu]->dlen; i++)		mvwaddch(p->win, p->field[nu]->y, p->field[nu]->x + i, SPACE);        if(p->field[nu]->type==DAT1){		mvwaddch(p->win, p->field[nu]->y, p->field[nu]->x + 4, '/');		mvwaddch(p->win, p->field[nu]->y, p->field[nu]->x + 7, '/');        }        if(p->field[nu]->type==DAT2) {		mvwaddch(p->win, p->field[nu]->y, p->field[nu]->x + 2, '/');		mvwaddch(p->win, p->field[nu]->y, p->field[nu]->x + 5, '/');        }	wrefresh(p->win);}/*****   功能: 建立SELECT条件串***/gzselect(bp,str,bctab,bcstr)RECORD *bp;char *str;char *bctab;char *bcstr;{	char str1[80],str2[80];	char tstr1[80],tstr2[80];	int i,k,j;	for(i=0,k=0,j=0;i<bp->nu;i++,j++) {   		if(bp->field[i]->tab_fie!=0) {       		 	j++;        		if(j==1) sprintf(tstr1,"select %s ",bp->field[i]->tab_fie);        		if(j>1) { 				sprintf(tstr2,",%s ",bp->field[i]->tab_fie);   	 			strcat(tstr1,tstr2);			}			if (bp->field[i]->upbuf[0]!='\0') {        		 	k++;       			if(k==1) {       				if(bp->field[i]->type>10)        					sprintf(str1, "where %s =\" %s\" ",					bp->field[i]->tab_fie,bp->field[i]->upbuf);       				else       					sprintf(str1,"where %s = %s ",					bp->field[i]->tab_fie,bp->field[i]->upbuf);       			 }        		if(k>1){         			if(bp->field[i]->type>10)          			 	sprintf(str2, "and %s =\" %s\" ",					bp->field[i]->tab_fie,bp->field[i]->upbuf);         			else       	  				sprintf(str2,"and %s = %s ",					bp->field[i]->tab_fie,bp->field[i]->upbuf);   	  			strcat(str1,str2);   			}  			}  		}	}	if(strlen(str1)>0 && bcstr[0]!='\0') {       		 sprintf(str2,"and %s ",bcstr);       		 strcat(str1,str2);	}	if(strlen(tstr1)>0 && bctab[0]!='\0') {       		 sprintf(tstr2,",%s ",bctab);       		 strcat(tstr1,tstr2);	}	if(k==0 && bcstr[0]!='\0') sprintf(str1,"where %s ",bcstr);	if(j==0 && bctab[0]!='\0') sprintf(tstr1,"select %s ",bctab);	sprintf(str,"%s from %s %s",tstr1,bp->tab_rec,str1);}disprec(bp)RECORD *bp;{	int i;	char str[40];	for(i=0;i<bp->nu;i++) {		if(bp->field[i]->type==1 || bp->field[i]->type==3) {			sprintf(str, "%d", *(bp->field[i]->buf_i));			putbuf(bp,i,str);		}		else if(bp->field[i]->type==2 || bp->field[i]->type==4) {			sprintf(str, "%lf", *(bp->field[i]->buf_d));			putbuf(bp,i,str);		}		else putbuf(bp,i,bp->field[i]->buf_s);	}}/*****   功能: 建立WHERE条件串***/gzwhere(bp,str1,bcstr)RECORD *bp;char *str1;char *bcstr;{	char str2[80];	int  i,k;	for(i=0,k=0;i<bp->nu;i++) {		if (bp->field[i]->upbuf[0]!='\0') {        		 	k++;       			if(k==1) {       				if(bp->field[i]->type>4) /* old=10 */        					sprintf(str1, "where %s =\"%s\" ",					bp->field[i]->tab_fie,bp->field[i]->upbuf);       				else       					sprintf(str1,"where %s = %s ",					bp->field[i]->tab_fie,bp->field[i]->upbuf);       			 }        		if(k>1){         			if(bp->field[i]->type>4 )          			 	sprintf(str2, "and %s =\"%s\" ",					bp->field[i]->tab_fie,bp->field[i]->upbuf);         			else       	  				sprintf(str2,"and %s = %s ",					bp->field[i]->tab_fie,bp->field[i]->upbuf);   	  			strcat(str1,str2);   			}  		}	}	if(strlen(str1)>0 && bcstr[0]!='\0') {       		 sprintf(str2,"and %s ",bcstr);       		 strcat(str1,str2);	}	if(k==0 && bcstr[0]!='\0') sprintf(str1,"where %s ",bcstr);}

⌨️ 快捷键说明

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