📄 pbserver.c
字号:
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
tux_return(sendbuf,"OPEN CURSOR:cur_emp_dept 出错",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
}
i = 0;
while(1)
{
al_deptno=0;
/* EXEC SQL FETCH cur_emp_dept INTO :al_deptno; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 8;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )590;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)&al_deptno;
sqlstm.sqhstl[0] = (unsigned int )4;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
if( sqlca.sqlcode == SQLNOTFOUND)
{
break;
}
/*当取出的值是null时,sqlca.sqlcode = -1405*/
if ((sqlca.sqlcode != 0)&&(sqlca.sqlcode!= SQLNULL))
{
/*FETCH CURSOR失败 */
/* EXEC SQL CLOSE cur_emp_dept; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 8;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )609;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
tux_return(sendbuf,"FETCH CURSOR:cur_emp_dept 出错",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
}
#ifdef _DEBUG_
userlog("FETCHED dept:%d\n",al_deptno);
#endif
/*根据部门的代号取名称*/
c_tmp[0]='\0';
/* EXEC SQL select dname into :c_tmp
from DEPT
where deptno = :al_deptno; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 8;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select dname into :b0 from DEPT where deptno=:b1";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )624;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)c_tmp;
sqlstm.sqhstl[0] = (unsigned int )11;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)&al_deptno;
sqlstm.sqhstl[1] = (unsigned int )4;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
if (sqlca.sqlcode != 0)
{
tux_return(sendbuf,"select dname from DEPT出错",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
}
lstr_dept[i].iNo=al_deptno;
strcpy(lstr_dept[i].szName,c_tmp);
i++;
if(i>50)
{
/* EXEC SQL CLOSE cur_emp_dept; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 8;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )647;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
tux_return(sendbuf,"部门太多!",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
}
}
/* EXEC SQL CLOSE cur_emp_dept; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 8;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )662;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
if (sqlca.sqlcode != 0)
{
/*CLOSE CURSOR失败*/
tux_return(sendbuf,"CLOSE CURSOR:cur_emp_dept 出错",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
}
/*取出的部门数*/
iDept = i;
/*求每个部门的工资总数*/
sprintf(szHead,"%s","部门名称");
sprintf(szRow,"%s","工资总数");
for(i=0;i<iDept;i++)
{
sprintf(szHead,"%s|%13s",szHead,lstr_dept[i].szName);
af_sal =0;
al_deptno=lstr_dept[i].iNo;
/* EXEC SQL select sum(sal) into :af_sal
from EMP
where deptno= :al_deptno; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 8;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select sum(sal) into :b0 from EMP where deptno=:b1";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )677;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)&af_sal;
sqlstm.sqhstl[0] = (unsigned int )8;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)&al_deptno;
sqlstm.sqhstl[1] = (unsigned int )4;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
if (sqlca.sqlcode != 0)
{
/*select sum(sal)失败*/
tux_return(sendbuf,"select sum(sal)失败",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
}
sprintf(szRow,"%s|%23.2f",szRow,af_sal);
}
len = sizeof(szHead);
if(Fchg32(sendbuf, CROSSTAB, 0, szHead, (FLDLEN32)len )<0)
{
tux_return(sendbuf,"Fchg32(CROSSTAB) 出错",0,(char *)Fstrerror32(Ferror32));
}
len = sizeof(szRow);
if(Fchg32(sendbuf, CROSSTAB, 1, szRow, (FLDLEN32)len )<0)
{
tux_return(sendbuf,"Fchg32(CROSSTAB) 出错",0,(char *)Fstrerror32(Ferror32));
}
/*notice: in the PB client the datawindow font must be chinese font
then this will work ok*/
userlog("%s\n",szHead);
userlog("%s\n",szRow);
tpreturn( TPSUCCESS, 0, (char *)sendbuf, 0, 0 );
}
/*EMP_COS SERVICES*/
/*EMP_COS(TPSVCINFO *rqst)
{
FBFR32 *sendbuf=NULL;
FBFR32 *rcvbuf=NULL;
FLDLEN32 len=0;
int i=0;
int iRet=0;
int iOc=0;
int iRows=0;
char szHead[2500]="";
char szNode[2500]="";
char szAmount[2500]="";
char szSum[2500]="";
int iOilTypes=0;
userlog("begin EMP_COS\n");
//分配返回缓冲区并初始化
sendbuf = IniSendBuf(20480);
if(sendbuf==NULL)
{
tpreturn( TPFAIL, 0, 0, 0L, 0 );
}
userlog("接收客户端来的数据\n");
//接收客户端来的数据
rcvbuf = (FBFR32 *)rqst->data;
#ifdef _DEBUG_
fprintf(stdout,"EMP_COS begin Fprint32......\n");
Fprint32(rcvbuf);
fprintf(stdout,"EMP_COS end Fprint32......\n");
#endif
len = sizeof(ac_nodeno);
ac_nodeno[0]='\0';
if(Fget32(rcvbuf,NODENO,0,ac_nodeno,&len)== -1)
{
tux_return(sendbuf,"Fget32(NODENO) 出错",0,(char *)Fstrerror32(Ferror32));
}
len = sizeof(ac_begin_date);
ac_begin_date[0]='\0';
if(Fget32(rcvbuf,BEGIN_DATE,0,ac_begin_date,&len)== -1)
{
tux_return(sendbuf,"Fget32(BEGIN_DATE) 出错",0,(char *)Fstrerror32(Ferror32));
}
len = sizeof(ac_end_date);
ac_end_date[0]='\0';
if(Fget32(rcvbuf,END_DATE,0,ac_end_date,&len)== -1)
{
tux_return(sendbuf,"Fget32(END_DATE) 出错",0,(char *)Fstrerror32(Ferror32));
}
userlog("data from client nodeno=%s,begin_date=%s,end_date=%s\n",ac_nodeno,ac_begin_date,ac_end_date);
//select the node name from nodeinfor
EXEC SQL SELECT nodename into :c_nodename
from nodeinfor
where nodeno = :ac_nodeno;
if(sqlca.sqlcode!=0)
{
tux_return(sendbuf,"select the node name from nodeinfor 出错",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
}
//取油的种类
EXEC SQL DECLARE cur_oil_type CURSOR FOR
SELECT oilno
FROM nodetotalinfor_new
where nodeno = :ac_nodeno
and time >= :ac_begin_date
and time <= :ac_end_date;
if(sqlca.sqlcode!=0)
{
tux_return(sendbuf,"DECLARE CURSOR:cur_oil_type 出错",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
}
EXEC SQL OPEN cur_oil_type;
if(sqlca.sqlcode!=0)
{
EXEC SQL CLOSE cur_oil_type;
tux_return(sendbuf,"OPEN CURSOR:cur_oil_type 出错",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
}
sprintf(szHead,"%20s","");
sprintf(szNode,"%20s","网点名称");
sprintf(szAmount,"%20s",c_nodename);
sprintf(szSum, "%20s","总计");
i = 0;
while(1)
{
c_code[0]='\0';
c_content[0]='\0';
EXEC SQL FETCH cur_oil_type INTO :c_code;
if( sqlca.sqlcode == SQLNOTFOUND)
{
break;
}
//当取出的值是null时,sqlca.sqlcode = -1405
if ((sqlca.sqlcode != 0)&&(sqlca.sqlcode!= SQLNULL))
{
//FETCH CURSOR失败
EXEC SQL CLOSE cur_oil_type;
tux_return(sendbuf,"FETCH CURSOR:cur_oil_type 出错",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
}
//select oil name
EXEC SQL SELECT content into :c_content
from oiltype
where code = :c_code;
if (sqlca.sqlcode != 0)
{
//SELEFT CONTENT FROM OILTYPE失败
tux_return(sendbuf,"SELEFT CONTENT FROM OILTYPE失败",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
}
#ifdef _DEBUG_
userlog("FETCHED code=%s,content=%s\n",c_code,c_content);
#endif
EXEC SQL SELECT sum(amount),sum(litter)
into :c_amount, :c_litter
from nodetotalinfor_new
where nodeno = :ac_nodeno
and oilno = :c_code
and time >= :ac_begin_date
and time <= :ac_end_date;
if (sqlca.sqlcode != 0)
{
//select data from nodetotalinfor_new失败
tux_return(sendbuf,"select data from nodetotalinfor_new失败",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
}
userlog("amount=%s,litter=%s\n",c_amount,c_litter);
sprintf(szHead,"%s|%30s",szHead,c_content);
sprintf(szNode,"%s|%31s",szNode,"数量 |金额 ");
sprintf(szAmount,"%s|%15s|%15s",szAmount,c_amount,c_litter);
sprintf(szSum, "%s|%15s|%15s",szSum,c_amount,c_litter);
}
EXEC SQL CLOSE cur_oil_type;
if (sqlca.sqlcode != 0)
{
//CLOSE CURSOR失败
tux_return(sendbuf,"CLOSE CURSOR:cur_oil_type 出错",sqlca.sqlcode,(char *)sqlca.sqlerrm.sqlerrmc);
}
len = sizeof(szHead);
if(Fchg32(sendbuf, CROSSTAB, 0, szHead, (FLDLEN32)len )<0)
{
tux_return(sendbuf,"Fchg32(CROSSTAB) 出错",0,(char *)Fstrerror32(Ferror32));
}
len = sizeof(szNode);
if(Fchg32(sendbuf, CROSSTAB, 1, szNode, (FLDLEN32)len )<0)
{
tux_return(sendbuf,"Fchg32(CROSSTAB) 出错",0,(char *)Fstrerror32(Ferror32));
}
len = sizeof(szAmount);
if(Fchg32(sendbuf, CROSSTAB, 2, szAmount, (FLDLEN32)len )<0)
{
tux_return(sendbuf,"Fchg32(CROSSTAB) 出错",0,(char *)Fstrerror32(Ferror32));
}
len = sizeof(szSum);
if(Fchg32(sendbuf, CROSSTAB, 3, szSum, (FLDLEN32)len )<0)
{
tux_return(sendbuf,"Fchg32(CROSSTAB) 出错",0,(char *)Fstrerror32(Ferror32));
}
userlog("@@@%s\n",szHead);
userlog("@@@%s\n",szNode);
userlog("@@@%s\n",szAmount);
userlog("@@@%s\n",szSum);
#ifdef _DEBUG_
Fprint32(sendbuf);
#endif
tpreturn( TPSUCCESS, 0, (char *)sendbuf, 0, 0 );
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -