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

📄 yxapi.c

📁 unix 下用pro*c tuxedo 开发的东西
💻 C
📖 第 1 页 / 共 2 页
字号:
	/* EXEC SQL WHENEVER SQLERROR DO sqlerror(); */ 

	/* EXEC SQL INSERT INTO t_jsyxsj VALUES
		( :YXSJ ); */ 

{
 struct sqlexd sqlstm;

 sqlstm.sqlvsn = 8;
 sqlstm.arrsiz = 5;
 sqlstm.stmt = "insert into t_jsyxsj values (:s1 ,:s2 ,:s3 ,:s4 )";
 sqlstm.iters = (unsigned int  )1;
 sqlstm.offset = (unsigned int  )90;
 sqlstm.cud = sqlcud0;
 sqlstm.sqlest = (unsigned char  *)&sqlca;
 sqlstm.sqlety = (unsigned short)0;
 sqlstm.sqhstv[0] = (unsigned char  *)YXSJ.yxxl;
 sqlstm.sqhstl[0] = (unsigned int  )4;
 sqlstm.sqindv[0] = (         short *)0;
 sqlstm.sqharm[0] = (unsigned int  )0;
 sqlstm.sqhstv[1] = (unsigned char  *)YXSJ.wjbh;
 sqlstm.sqhstl[1] = (unsigned int  )3;
 sqlstm.sqindv[1] = (         short *)0;
 sqlstm.sqharm[1] = (unsigned int  )0;
 sqlstm.sqhstv[2] = (unsigned char  *)&YXSJ.jsxh;
 sqlstm.sqhstl[2] = (unsigned int  )4;
 sqlstm.sqindv[2] = (         short *)0;
 sqlstm.sqharm[2] = (unsigned int  )0;
 sqlstm.sqhstv[3] = (unsigned char  *)YXSJ.sjbh;
 sqlstm.sqhstl[3] = (unsigned int  )3;
 sqlstm.sqindv[3] = (         short *)0;
 sqlstm.sqharm[3] = (unsigned int  )0;
 sqlstm.sqphsv = sqlstm.sqhstv;
 sqlstm.sqphsl = sqlstm.sqhstl;
 sqlstm.sqpind = sqlstm.sqindv;
 sqlstm.sqparm = sqlstm.sqharm;
 sqlstm.sqparc = sqlstm.sqharc;
 sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
 if (sqlca.sqlcode < 0) sqlerror();
}


	if( ERROR!=0 )
	{
		ERROR=0;
		return(-1);
	}
	return(0);
}

/************** insert a record into the t_jsrz  ****************/
int CreateRecLogRec(char datatype, char *fssbh ,long int lg_Key )
{
	int i;
	
	/* EXEC SQL WHENEVER SQLERROR DO sqlerror(); */ 

	/* EXEC SQL INSERT INTO T_JSRZ VALUES (:lg_Key, :datatype, '1',:fssbh, SYSDATE ); */ 

{
 struct sqlexd sqlstm;

 sqlstm.sqlvsn = 8;
 sqlstm.arrsiz = 5;
 sqlstm.stmt = "insert into T_JSRZ values (:b0,:b1,'1',:b2,sysdate )";
 sqlstm.iters = (unsigned int  )1;
 sqlstm.offset = (unsigned int  )120;
 sqlstm.cud = sqlcud0;
 sqlstm.sqlest = (unsigned char  *)&sqlca;
 sqlstm.sqlety = (unsigned short)0;
 sqlstm.sqhstv[0] = (unsigned char  *)&lg_Key;
 sqlstm.sqhstl[0] = (unsigned int  )4;
 sqlstm.sqindv[0] = (         short *)0;
 sqlstm.sqharm[0] = (unsigned int  )0;
 sqlstm.sqhstv[1] = (unsigned char  *)&datatype;
 sqlstm.sqhstl[1] = (unsigned int  )1;
 sqlstm.sqindv[1] = (         short *)0;
 sqlstm.sqharm[1] = (unsigned int  )0;
 sqlstm.sqhstv[2] = (unsigned char  *)fssbh;
 sqlstm.sqhstl[2] = (unsigned int  )0;
 sqlstm.sqindv[2] = (         short *)0;
 sqlstm.sqharm[2] = (unsigned int  )0;
 sqlstm.sqphsv = sqlstm.sqhstv;
 sqlstm.sqphsl = sqlstm.sqhstl;
 sqlstm.sqpind = sqlstm.sqindv;
 sqlstm.sqparm = sqlstm.sqharm;
 sqlstm.sqparc = sqlstm.sqharc;
 sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
 if (sqlca.sqlcode < 0) sqlerror();
}


	if( ERROR!=0 )
	{
		ERROR=0;
		return(-1);
	}
	return(1);
}

/***  updatae a record in t_jsrz  ***/

int UpdateJSRZ_rec( long int lg_key )
{
	char temp=WAITFORCONVERT;
	ERROR=0;
	/* EXEC SQL WHENEVER SQLERROR DO sqlerror(); */ 

	/* EXEC SQL UPDATE T_JSRZ SET SJZT=:temp WHERE JSXH=:lg_key; */ 

{
 struct sqlexd sqlstm;

 sqlstm.sqlvsn = 8;
 sqlstm.arrsiz = 5;
 sqlstm.stmt = "update T_JSRZ  set SJZT=:b0 where JSXH=:b1";
 sqlstm.iters = (unsigned int  )1;
 sqlstm.offset = (unsigned int  )146;
 sqlstm.cud = sqlcud0;
 sqlstm.sqlest = (unsigned char  *)&sqlca;
 sqlstm.sqlety = (unsigned short)0;
 sqlstm.sqhstv[0] = (unsigned char  *)&temp;
 sqlstm.sqhstl[0] = (unsigned int  )1;
 sqlstm.sqindv[0] = (         short *)0;
 sqlstm.sqharm[0] = (unsigned int  )0;
 sqlstm.sqhstv[1] = (unsigned char  *)&lg_key;
 sqlstm.sqhstl[1] = (unsigned int  )4;
 sqlstm.sqindv[1] = (         short *)0;
 sqlstm.sqharm[1] = (unsigned int  )0;
 sqlstm.sqphsv = sqlstm.sqhstv;
 sqlstm.sqphsl = sqlstm.sqhstl;
 sqlstm.sqpind = sqlstm.sqindv;
 sqlstm.sqparm = sqlstm.sqharm;
 sqlstm.sqparc = sqlstm.sqharc;
 sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
 if (sqlca.sqlcode < 0) sqlerror();
}


	
	if( ERROR!=0 )
	{
		ERROR=0;
		return(-1);
	}
	return(1);
}

/*Get the Time_Interval specified in the file and return it */
int GetTimeInterval(char* cType)
{
	FILE *hTimeInterval;
	char cLine[MAX_LINE_LEN+1], cCaption[100], cValue[21];
	int iInterval, i;
	char* pLine;
	
	 
	hTimeInterval = fopen( CONFIG_FILE_FOR_TIMEINTERVAL, "r" );
	if( hTimeInterval == NULL )
	{
		ProcessError(LOG_ERROR,   "GetTimeInterval: Cannot open file: ", CONFIG_FILE_FOR_TIMEINTERVAL);
		return(DEFAULT_TIMEINTERVAL);  
	}
	
	while( myapi_ReadALine( cLine, hTimeInterval ) )
	{
		if( cLine[0] == '#' ) continue;
		if( cLine[0] == NULL ) continue;
		
		pLine = cLine;
		while( (*pLine == ' ') || (*pLine == '\t') ) pLine++;
		i=0;
		while( (*pLine != ' ') && (*pLine != '\t') && (*pLine != '\0') )
		{
			cCaption[i] = *pLine;
			i++;
			pLine++;
		}
		
		cCaption[i] = '\0';
		if( strcmp( cCaption, cType ) == 0 ) /*Match*/
		{
			while( (*pLine == ' ') || (*pLine == '\t') ) pLine++;
			if( *pLine == '\0' )
			{
				fclose(hTimeInterval);
				return(DEFAULT_TIMEINTERVAL);
			}
			i=0;
			while( (*pLine != ' ') && (*pLine != '\t') && (*pLine != '\0') )
			{
				cValue[i] = *pLine;
				i++;
				pLine++;
			}
			cValue[i] = '\0';
			iInterval = atoi(cValue);
			
			if(iInterval <= 0) 		
			{
				fclose(hTimeInterval);
				return(DEFAULT_TIMEINTERVAL);
			}
			else
			{
				fclose(hTimeInterval);
				return(iInterval);
			}
		}
		else
			continue;
	}
	fclose( hTimeInterval );
	return(DEFAULT_TIMEINTERVAL);
}

/*Read a line to a string from a file, \n is excluded.
  return 1 if sucessful, 0 otherwise
  Do not close the file.*/
int myapi_ReadALine( char* cLine, FILE* hTable )
{
	char cChar;
	int i=0;
	cLine[0] = '\0';
	while( (cChar = fgetc( hTable )) != '\n' )
	{
		if( cChar == EOF ) return(0);
		cLine[i++] = cChar;
		
		
		if( i >= MAX_LINE_LEN ) i=0;
		cLine[i] = '\0';
	}
	return(1);
}


int Snd_HZ_MQ( long int fsxh, char *fssbh, char *jssbh )
{
	char buf_hz[15];
	char c_fsxh[11];
	int  flag;

/*	itoa( fsxh, c_fsxh, 10 );
	strncat( buf_hz, c_fsxh, 11);
	strncat( buf_hz, fssbh, 3);
	strncat( buf_hz, jssbh, 3);
*/
	sprintf(buf_hz,"%10ld%2s%2s",fsxh,fssbh,jssbh);
	buf_hz[14]='\0';
/*  	flag = MQBKSend_Syn( 15, buf_hz, fssbh);*/
      	flag = MQBKSend_Syn( 15, buf_hz, 0, "HZ" );
      	if ( flag < 0 )
        {
   		ProcessError(LOG_ERROR,"PCS_RCV_YX: MQ hz did not send successful!",END);
            	return(-1);
       	}
       	flag = MQBKCmit();
      	if ( flag < 0 )
        {
   		ProcessError(LOG_ERROR,"PCS_RCV_YX: MQ hz did not commit successful!",END);
            	return(-1);
       	}
          
/*	printf("the hz msg is %s\n",buf_hz);
*/
	return(0);
}

int freect(void)
{
	/* EXEC SQL ROLLBACK WORK RELEASE; */ 

{
 struct sqlexd sqlstm;

 sqlstm.sqlvsn = 8;
 sqlstm.arrsiz = 5;
 sqlstm.iters = (unsigned int  )1;
 sqlstm.offset = (unsigned int  )168;
 sqlstm.cud = sqlcud0;
 sqlstm.sqlest = (unsigned char  *)&sqlca;
 sqlstm.sqlety = (unsigned short)0;
 sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
 if (sqlca.sqlcode < 0) sqlerror();
}


	if( buf!=NULL )
	free(buf);
	MQBKClear();
	exit(0);
}

/***  handle the receive message from MQ  ***/
int PcsRcvYX( char *message, int msg_len )
{
	struct stYXMsg YXMsg;
	struct stYXSJ  YXSJ;
	int  rec_count;
	int  flag;
	char tempstring[MID_LEN];
	char fsxh[MID_LEN];
	char sjbh[SHORT_LEN];
	char jssbh[SHORT_LEN];
	char yxxl[SHORT_LEN];
	char wjbh[SHORT_LEN];
	int retcode=0;

	/* convert to stYXMsg */
	flag=YXRcv( message,&YXMsg );
	if( flag!=0 )
	{	
		ProcessError(LOG_ERROR,"PCS_RCV_YX: error when read yx message into struct YXMsg",END);
		return(-1);
	}
	/* convert to stYXSJ  */
	YXSJConv( YXMsg, &YXSJ );
	fsxh[0]='\0';
	sjbh[0]='\0';
	yxxl[0]='\0';
	wjbh[0]='\0';
	
	strcpy(fsxh,YXMsg.fsxh);
	strcpy(sjbh,YXSJ.sjbh);
	strcpy(yxxl,YXMsg.yxxl);
	strcpy(wjbh,YXMsg.wjbh);
	trim(fsxh);
	trim(sjbh);
	trim(yxxl);
	trim(wjbh);
/*	strcpy(tempstring,YXFILE_PATH);
	strcat(tempstring,"yx");
	strcat(tempstring,yxxl);
	strcat(tempstring,sjbh);
	strcat(tempstring,".");
	strcat(tempstring,wjbh);
	printf("tempstring is %s\n",tempstring);
*/	
	/* EXEC SQL SELECT count(*) INTO :rec_count FROM t_zcjssj 
		WHERE jsxh=:YXSJ.jsxh; */ 

{
 struct sqlexd sqlstm;

 sqlstm.sqlvsn = 8;
 sqlstm.arrsiz = 5;
 sqlstm.stmt = "select count(*)  into :b0  from t_zcjssj where jsxh=:b1";
 sqlstm.iters = (unsigned int  )1;
 sqlstm.offset = (unsigned int  )182;
 sqlstm.selerr = (unsigned short)1;
 sqlstm.cud = sqlcud0;
 sqlstm.sqlest = (unsigned char  *)&sqlca;
 sqlstm.sqlety = (unsigned short)0;
 sqlstm.sqhstv[0] = (unsigned char  *)&rec_count;
 sqlstm.sqhstl[0] = (unsigned int  )4;
 sqlstm.sqindv[0] = (         short *)0;
 sqlstm.sqharm[0] = (unsigned int  )0;
 sqlstm.sqhstv[1] = (unsigned char  *)&(YXSJ.jsxh);
 sqlstm.sqhstl[1] = (unsigned int  )4;
 sqlstm.sqindv[1] = (         short *)0;
 sqlstm.sqharm[1] = (unsigned int  )0;
 sqlstm.sqphsv = sqlstm.sqhstv;
 sqlstm.sqphsl = sqlstm.sqhstl;
 sqlstm.sqpind = sqlstm.sqindv;
 sqlstm.sqparm = sqlstm.sqharm;
 sqlstm.sqparc = sqlstm.sqharc;
 sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
 if (sqlca.sqlcode < 0) sqlerror();
}


	
	if( rec_count==0 )
	{
		flag=CreateRecLogRec( DATATYPE_YX, YXSJ.sjbh, YXSJ.jsxh );
		if( flag!=1 )
		{
			ProcessError(LOG_ERROR,"PCS_RCV_YX: error when use function ","CreateRecLogRec");
			return(-1);
		}
		flag=InsertYXSJ( YXSJ );
		if( flag!=0 )
		{
			ProcessError(LOG_ERROR,"PCS_RCV_YX: error when use function ","InsertYXSJ");
			return(-1);
		}
	}
/*		
		fp=fopen(tempstring,"w");
		if( fp==NULL )
		{
			ProcessError(LOG_ERROR,"PCS_RCV_YX: error cannot open ",tempstring);
			return(-1);
		}
	}
	else 
	{	
		fp=fopen(tempstring,"a");
		if( fp==NULL )
		{
			ProcessError(LOG_ERROR,"PCS_RCV_YX: error cannot open ",tempstring);
			return(-1);
		}
	}
	

	fputs( YXMsg.yxnr,fp );
	fclose(fp);
*/	
	/* update receive log */
	flag=UpdateJSRZ_rec( YXSJ.jsxh );
	if( flag!=1 )
	{
		ProcessError(LOG_ERROR,"PCS_RCV_YX: error when use function ","UpdateJSRZ_rec");
		return(-1);
	}
	
	/* save to table zcjssj */
	flag=InsertZCSJ( YXMsg );
	if( flag!=0 )
	{
		ProcessError(LOG_ERROR,"PCS_RCV_YX: error when use function ","InsertZCSJ");
		return(-1);
	}
	
	
	/* EXEC SQL VAR jssbh IS STRING; */ 

	/* EXEC SQL SELECT bsbh INTO :jssbh FROM T_BSBH; */ 

{
 struct sqlexd sqlstm;

 sqlstm.sqlvsn = 8;
 sqlstm.arrsiz = 5;
 sqlstm.stmt = "select bsbh into :b0  from T_BSBH ";
 sqlstm.iters = (unsigned int  )1;
 sqlstm.offset = (unsigned int  )204;
 sqlstm.selerr = (unsigned short)1;
 sqlstm.cud = sqlcud0;
 sqlstm.sqlest = (unsigned char  *)&sqlca;
 sqlstm.sqlety = (unsigned short)0;
 sqlstm.sqhstv[0] = (unsigned char  *)jssbh;
 sqlstm.sqhstl[0] = (unsigned int  )10;
 sqlstm.sqindv[0] = (         short *)0;
 sqlstm.sqharm[0] = (unsigned int  )0;
 sqlstm.sqphsv = sqlstm.sqhstv;
 sqlstm.sqphsl = sqlstm.sqhstl;
 sqlstm.sqpind = sqlstm.sqindv;
 sqlstm.sqparm = sqlstm.sqharm;
 sqlstm.sqparc = sqlstm.sqharc;
 sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
 if (sqlca.sqlcode < 0) sqlerror();
}


	
	/* mqbksend () send back hz and so on */
	
	flag=Snd_HZ_MQ( YXSJ.jsxh,sjbh,jssbh );
	if( flag!=0 )
	{
		ProcessError(LOG_ERROR,"PCS_RCV_YX: error use function ", "Snd_HZ_MQ");
		return(-1);
	}
	
	return(0);
}

⌨️ 快捷键说明

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