sqlcode=1802 error,
Posted in 2003
the platform is sco openserver,informix 7.22,when a program have run for a while, I get the following error sqlcode=1802,it means "Connection name in use. ",but i can't understand it,can anybody tell me why? i appreciate your help very much! the source code as follow: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <decimal.h> #include <time.h> #include <signal.h> #include <unistd.h> #include <varargs.h> $include sqlca; $include sqlda; $include sqltypes; #define SQLERRCHK 0 #define QUIRYERR 1 #define UPDATEERR 2 #define DELETEERR 2 #define SQLDEBUG 3 #define DEBDEBUG 4 $char CmdStr[80][300]; int CmdCounts; FILE *fp,*fp2,*fp3,*fp4; char char1[150]; char *ss,*ss1,ss2[300]; $char ss3[300]; char day1[15]; int i,j,k,l,flag; float m,n; main(int argc, char **argv) ${ for ( i = 0; i < 40; i++ ) close( i ); setpgrp(); putenv("INFORMIXSERVER=online1"); putenv("ONCONFIG=onconfig.1"); putenv("DBSPACETEMP=tmpdbs"); putenv("LANG=english_us.8859"); putenv("DBMONEY=."); putenv("DBDATE=y4md/"); putenv("DBTEMP=/usr1/tmp" ); if ( (fp = fopen( argv[1],"w")) == NULL ) exit( -1 ); if ( (fp2 = fopen( argv[2],"r")) == NULL ) { CheckError(DEBDEBUG,"can not open file(1)=%s\\n",argv[2]); exit( -1 ); } if ( (fp3 = fopen( argv[3],"w")) == NULL ) { CheckError(DEBDEBUG,"can not open file(2)=%s\\n",argv[3]); exit( -1 ); } if ( (fp4 = fopen( argv[4],"a")) == NULL ) { CheckError(DEBDEBUG,"can not open file(3)=%s\\n",argv[4]); exit( -1 ); } strcpy(day1,"19000101"); $database dgd_1; while( fgets( char1,150,fp2) !=NULL) { CheckError(SQLDEBUG,"select database dgd_1\\n"); sscanf(char1,"%s %s %s %s %s %s",CmdStr[0],CmdStr[1],CmdStr[2] ,CmdStr[3],CmdStr[4],CmdStr[5]); DeleteSpace(CmdStr[4]); DeleteSpace(CmdStr[5]); if( strncmp(CmdStr[5],"200305",6)!=0 ) continue; if( strncmp(CmdStr[5],day1,6)!=0 ) { CheckError(DEBDEBUG,"CmdStr[5]=%s\\n",CmdStr[5]); $select startid,endid into $CmdStr[6],$CmdStr[7] from procid where dates=DATE($CmdStr[5]); CheckError(DEBDEBUG,"select from procid \\n"); if(sqlca.sqlcode!=0) { CheckError(SQLDEBUG,"select from procid error\\n"); exit(1); } strcpy(day1,CmdStr[5]); } $select phid into $CmdStr[8] from procedure where recid>=$CmdStr[6] and recid<=$CmdStr[7] and opkind in("FF","FN","Fi") and serialno=$CmdStr[4]; CheckError(SQLDEBUG,"select procedure serinalno=%s\\n",CmdStr[4]); CheckError(SQLDEBUG,"startid=%s\\n",CmdStr[6]); CheckError(SQLDEBUG,"endid=%s\\n",CmdStr[7]); if(sqlca.sqlcode!=0) { CheckError(DEBDEBUG,"select procedure error serinalno=%s\\n",CmdStr[4]); fprintf(fp3,"%s",char1); fflush(fp3); continue; } $select datas,ldataid into $CmdStr[9],$CmdStr[10] from service where recid=$CmdStr[8]; CheckError(SQLDEBUG,"select service recid=%s\\n",CmdStr[8]); if(sqlca.sqlcode!=0) { CheckError(SQLDEBUG,"select service error serinalno=%s\\n",CmdStr[4]); fprintf(fp3,"%s",char1); fflush(fp3); continue; } if(CmdStr[10][0]!='0') { $select datas into $CmdStr[9] from alldatas where recid=$CmdStr[10]; CheckError(SQLDEBUG,"select alldatas serinalno=%s\\n",CmdStr[4]); if(sqlca.sqlcode!=0) { CheckError(SQLDEBUG,"select alldatas error serinalno=%s\\n",CmdStr[4]); fprintf(fp3,"%s",char1); fflush(fp3); continue; } flag=1; } else flag=0; strcpy(CmdStr[61],CmdStr[9]); CheckError(SQLDEBUG,"alldatas=%s\\n",CmdStr[9]); ss=strchr(CmdStr[9],'~'); *ss=0; strcpy(CmdStr[11],CmdStr[9]); CheckError(SQLDEBUG,"alldatas(1)=%s\\n",CmdStr[11]); ss++; strcpy(CmdStr[9],ss); ss=strchr(CmdStr[9],'~'); *ss=0; strcpy(CmdStr[12],CmdStr[9]); CheckError(SQLDEBUG,"alldatas(2)=%s\\n",CmdStr[12]); ss++; //CmdStr[9]=ss; strcpy(CmdStr[9],ss); if((ss=strchr(CmdStr[9],'~'))==NULL) continue; *ss=0; strcpy(CmdStr[13],CmdStr[9]); CheckError(SQLDEBUG,"alldatas(3)=%s\\n",CmdStr[13]); ss++; //CmdStr[14]=ss; strcpy(CmdStr[14],ss); CheckError(SQLDEBUG,"alldatas(4)=%s\\n",CmdStr[14]); i=0; j=1000; k=1000; while ((ss=strchr(CmdStr[13],'^'))!=NULL) { *ss=0; strcpy(CmdStr[15+i],CmdStr[13]); if(CmdStr[15+i][0]=='W') j=i; if(CmdStr[15+i][0]=='R') k=i; CheckError(SQLDEBUG,"alldatas(3)(1)=%s\\n",CmdStr[15+i]); CheckError(SQLDEBUG,"i=%d,j=%d,k=%d\\n",i,j,k); ss++; // CmdStr[13]=ss; strcpy(CmdStr[13],ss); i++; } /* if(k==1000) { CheckError(DEBDEBUG,"not find R=%s\\n",CmdStr[4]); fprintf(fp4,"%s",char1); fflush(fp4); continue; } */ m=0; for(l=0;l<i;l++) if(l!=j &&l!=k) { ss1=CmdStr[15+l]; ss1++; CheckError(SQLDEBUG,"test ss1=%f l=%d,k=%d,j=%d\\n",atof(ss1),l,k,j); m=m+atof(ss1); } CheckError(SQLDEBUG,"test m=%.2f\\n",m); CheckError(SQLDEBUG,"test (3)\\n"); if(k!=1000) sprintf(CmdStr[15+k],"%c%.2f",CmdStr[15+k][0],atof(CmdStr[12])-m); else { CheckError(SQLDEBUG,"test CmdStr[12]=%s\\n",CmdStr[12]); n=atof(CmdStr[12])-m; CheckError(SQLDEBUG,"test n=%.2f\\n",n); if(n<0) sprintf(CmdStr[60],"R-%.2f",abs(n)); else sprintf(CmdStr[60],"R%.2f",abs(n)); } //CheckError(SQLDEBUG,"test CmdStr[15+%d]=%s\\n",k,CmdStr[15+k]); sprintf(ss2,"%s^",CmdStr[15]); CheckError(DEBDEBUG,"ss21=%s\\n",ss2); for(l=1;l<i+1;l++) { strcat(ss2,CmdStr[15+l]); strcat(ss2,"^"); CheckError(DEBDEBUG,"ss21=%s\\n",ss2); } if(k==1000) { strcat(ss2,CmdStr[60]); strcat(ss2,"^"); } sprintf(ss3,"%s~%s~%s%s",CmdStr[11],CmdStr[12