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

📄 yxpapi.c

📁 unix 下用pro*c tuxedo 开发的东西
💻 C
📖 第 1 页 / 共 2 页
字号:
			}

			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 InitPcsSndYXP()

{

    	int rtncode;

	/* EXEC SQL BEGIN DECLARE SECTION; */ 


	/* VARCHAR username[20]; */ 
struct { unsigned short len; unsigned char arr[20]; } username;


	/* VARCHAR password[20]; */ 
struct { unsigned short len; unsigned char arr[20]; } password;


	/* EXEC SQL END DECLARE SECTION; */ 


	

	strcpy(username.arr,"pcsdba");

	username.len=strlen(username.arr);

	strcpy(password.arr,"dba");

	password.len=strlen(password.arr);

	/* EXEC SQL WHENEVER SQLERROR DO sqlerror(); */ 


	/* EXEC SQL CONNECT :username IDENTIFIED BY :password; */ 

{
 struct sqlexd sqlstm;

 sqlstm.sqlvsn = 8;
 sqlstm.arrsiz = 3;
 sqlstm.iters = (unsigned int  )10;
 sqlstm.offset = (unsigned int  )78;
 sqlstm.cud = sqlcud0;
 sqlstm.sqlest = (unsigned char  *)&sqlca;
 sqlstm.sqlety = (unsigned short)0;
 sqlstm.sqhstv[0] = (unsigned char  *)&username;
 sqlstm.sqhstl[0] = (unsigned int  )22;
 sqlstm.sqindv[0] = (         short *)0;
 sqlstm.sqharm[0] = (unsigned int  )0;
 sqlstm.sqhstv[1] = (unsigned char  *)&password;
 sqlstm.sqhstl[1] = (unsigned int  )22;
 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(0);

}



/*delete the ' ' or '\n' of a string at the begin and end*/



void trim(char *CAline)

{

	int i,j;

	char temp_string[100];

	i=strlen(CAline);

	while(i>0)		/*delete the end ' ' or '\n' */

	{

		if(CAline[i-1]==' '||CAline[i-1]=='\n')

			CAline[i-1]='\0';

		else

			break;

		i--;

	}

	i=0;j=0;

	while( CAline[i]!='\0' )	/*delete the head ' ' or '\n' */

	{

		if(CAline[i]==' '||CAline[i]=='\n')

			i++;

		else

		{

			for (j=0;CAline[i]!='\0';i++,j++)

				CAline[j]=CAline[i];

			break;	

		}	

	}

	CAline[j]='\0';

}





/* add '0' at head of string converted from num */



int strformat(char *tempstr)

{

	int    old,new,count;

	char  test_str[MID_LEN],tempstring[MID_LEN];

	strcpy(test_str,tempstr);

	trim(test_str);

	old=strlen(tempstr);

	new=strlen(test_str);

	count=old-new;

	tempstring[0]='\0';

	for( ;count>0;count-- )

		strcat(tempstring,"0");

	strcat(tempstring,test_str);

	strcpy(tempstr,tempstring);

	return(0);

}



int EndPcsSndYXP()

{

    	/* EXEC SQL COMMIT WORK RELEASE; */ 

{
     struct sqlexd sqlstm;

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

       

    	return(0);

}    



int getMsgHeader(char *jssbh, long int serial_no)

{

    	mheader[0] = '\0'; 

    	/* EXEC SQL VAR fi_no IS STRING; */ 


    	/* EXEC SQL VAR subtype IS STRING; */ 


    	/* EXEC SQL WHENEVER NOT FOUND DO sqlerror(); */ 


    	/* EXEC SQL SELECT wjbh,yxxl INTO :fi_no,:subtype FROM t_fsyxsj

         	WHERE fsxh = :serial_no; */ 

{
     struct sqlexd sqlstm;

     sqlstm.sqlvsn = 8;
     sqlstm.arrsiz = 3;
     sqlstm.stmt = "select wjbh ,yxxl into :b0,:b1  from t_fsyxsj where fsxh\
=:b2";
     sqlstm.iters = (unsigned int  )1;
     sqlstm.offset = (unsigned int  )118;
     sqlstm.selerr = (unsigned short)1;
     sqlstm.cud = sqlcud0;
     sqlstm.sqlest = (unsigned char  *)&sqlca;
     sqlstm.sqlety = (unsigned short)0;
     sqlstm.sqhstv[0] = (unsigned char  *)fi_no;
     sqlstm.sqhstl[0] = (unsigned int  )3;
     sqlstm.sqindv[0] = (         short *)0;
     sqlstm.sqharm[0] = (unsigned int  )0;
     sqlstm.sqhstv[1] = (unsigned char  *)subtype;
     sqlstm.sqhstl[1] = (unsigned int  )4;
     sqlstm.sqindv[1] = (         short *)0;
     sqlstm.sqharm[1] = (unsigned int  )0;
     sqlstm.sqhstv[2] = (unsigned char  *)&serial_no;
     sqlstm.sqhstl[2] = (unsigned int  )4;
     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 == 1403) sqlerror();
     if (sqlca.sqlcode < 0) sqlerror();
}



    	if( ERROR!=0 )

    	{

    		ERROR=0;

   		ProcessError(LOG_ERROR,"PCS_Snd_YX_P: not found when retrieve from t_fsyxsj ",END);

  		return(-1);

    	}



 /*   	itoa(serial_no,rec_YX_Msg.fsxh,11);*/

/*	sprintf(rec_YX_Msg.fsxh,"%10ld",serial_no);

    	strcpy(mheader,rec_YX_Msg.fsxh);

    	strcat(mheader,snd_city);

    	strcat(mheader,jssbh);

    	strcat(mheader,fi_no);

   	strcat(mheader,subtype);	*/

	sprintf(mheader,"%10ld%2s%2s%2s%3s",serial_no,snd_city,jssbh,fi_no,subtype);

    	return(0);



}

 

int sleep_please()

{  

    	sleep_time=GetTimeInterval("PCS_SND_YX_P");

    	sleep(sleep_time);

    	return(0);

}



int PcsSndYX2(long serial_no,long len_msg)

{    

   

    	char gid_string[4]; 

    	int  i=0,gid,flag,center; 

    	char rcv_province_code[3];

    	int  con_round,ctrl;

    	int  total_zh;

    	char total_zh_string[10];

 	char lastflag;

	

/* EXEC SQL BEGIN DECLARE SECTION; */ 


     /* VARCHAR tmpdata[LEN_YX_REC+1]; */ 
struct { unsigned short len; unsigned char arr[32766]; } tmpdata;


/* EXEC SQL END DECLARE SECTION; */ 




	center=0;



    	/* EXEC SQL DECLARE cur_zh CURSOR FOR 

         	SELECT zh,zzh,zcfssj FROM t_zcfssj 

         	WHERE fsxh = :serial_no ORDER BY zh; */ 
 

  

	/*  Read and send each record of YX record   */ 

    	/* EXEC SQL OPEN cur_zh; */ 

{
     struct sqlexd sqlstm;

     sqlstm.sqlvsn = 8;
     sqlstm.arrsiz = 3;
     sqlstm.stmt = sq0008;
     sqlstm.iters = (unsigned int  )1;
     sqlstm.offset = (unsigned int  )144;
     sqlstm.cud = sqlcud0;
     sqlstm.sqlest = (unsigned char  *)&sqlca;
     sqlstm.sqlety = (unsigned short)0;
     sqlstm.sqhstv[0] = (unsigned char  *)&serial_no;
     sqlstm.sqhstl[0] = (unsigned int  )4;
     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();
}



    	while (1)

    	{

        	/* EXEC SQL WHENEVER NOT FOUND DO break; */ 


        	/* EXEC SQL FETCH cur_zh INTO :gid,:total_zh,:tmpdata; */ 

{
         struct sqlexd sqlstm;

         sqlstm.sqlvsn = 8;
         sqlstm.arrsiz = 3;
         sqlstm.iters = (unsigned int  )1;
         sqlstm.offset = (unsigned int  )162;
         sqlstm.cud = sqlcud0;
         sqlstm.sqlest = (unsigned char  *)&sqlca;
         sqlstm.sqlety = (unsigned short)0;
         sqlstm.sqhstv[0] = (unsigned char  *)&gid;
         sqlstm.sqhstl[0] = (unsigned int  )4;
         sqlstm.sqindv[0] = (         short *)0;
         sqlstm.sqharm[0] = (unsigned int  )0;
         sqlstm.sqhstv[1] = (unsigned char  *)&total_zh;
         sqlstm.sqhstl[1] = (unsigned int  )4;
         sqlstm.sqindv[1] = (         short *)0;
         sqlstm.sqharm[1] = (unsigned int  )0;
         sqlstm.sqhstv[2] = (unsigned char  *)&tmpdata;
         sqlstm.sqhstl[2] = (unsigned int  )32768;
         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 == 1403) break;
         if (sqlca.sqlcode < 0) sqlerror();
}



		if( gid-total_zh>0 )

            	if( flag!=0 )

            	{

            		/* EXEC SQL CLOSE cur_zh; */ 

{
              struct sqlexd sqlstm;

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



           		ProcessError(LOG_ERROR,"PCS_Snd_YX_P: error when found zh > zzh",END);

          		return(-1);

            	}

			

	    

            	/*  Organize YX message header: fsxh+fssbh+wjbh+yxxl  */

            	strcpy(rcv_province_code,"00");

            	flag=getMsgHeader(rcv_province_code,serial_no);

            	if( flag!=0 )

            	{

            		/* EXEC SQL CLOSE cur_zh; */ 

{
              struct sqlexd sqlstm;

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



           		ProcessError(LOG_ERROR,"PCS_Snd_YX_P: error when getmsgheader",END);

          		return(-1);

            	}

            	sprintf(mheader,"%s%3d%3d%s",mheader,gid,total_zh,tmpdata.arr);

		mheader[25+tmpdata.len]='\0';

#ifdef	DEBUG

		PutintoF(mheader);

		printf("msglen is %d  %d\n",strlen(mheader),tmpdata.len);

#endif



            	/****send mheader string to mq****/

		if(MQBKSend_Syn(strlen(mheader) ,mheader, center,"YX") < 0)

		{

			MQBKBack();

			/* EXEC SQL ROLLBACK WORK; */ 

{
   struct sqlexd sqlstm;

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



			ProcessError(LOG_ERROR,"Pcs_Snd_YX_P: error when send msg to mq",END);

			return(-1);

		}

		if( gid-total_zh==0 )	

		{

			flag=MQBKCmit();

			if( flag<0 )

			{

				ProcessError(LOG_ERROR,"Pcs_Snd_YX_P: error when mqbkcmit",END);

				MQBKBack();

				/* EXEC SQL ROLLBACK WORK; */ 

{
    struct sqlexd sqlstm;

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



				return(-1);

			}

#ifdef DEBUG

	printf("this is the last group\n");

#endif

		



  	          	/*  Update T_HZ status to SENDED    */ 

            		status = HZ_SENDED;

            		UpdateHZStatus(serial_no,rcv_province_code,status);

	    		break;

        	} 

    	} 





    	/* EXEC SQL CLOSE cur_zh; */ 

{
     struct sqlexd sqlstm;

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



    	return(0);

}

⌨️ 快捷键说明

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