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

📄 pcs_snd_yx_p.pc

📁 unix 下用pro*c tuxedo 开发的东西
💻 PC
字号:
/*******************************************************************************
*	File Name			:	PcsSndYXP.pc 		       *
*	Module ID			:	MD_P15_01		       *
*	Module Name			:	PcsSndYXP.pc		       *
*                                               call PcsSndYX2() send msg to MQ*
*	Auther				:	Gao Lin Li		       *
*	Date Created			:	07/22/1999  		       *
*	Version				:	Version 1.0		       *
*	Environment		 	:	OSF1 Compaq V4.0 (Alpha)       *
*	Portability			:	Unix platform		       *
*	Warnings		 	:				       *
*	References			:	  			       *
*	Calling Syntax		 	:				       *
*	Parameters		  	:				       *
*	Returns			 	:	integer			       *
*                              	0  success				       *
*                       	-1 failure				       *
*	Calling Functions	  	:                                      *
*                                               InitPcsSndYXP()                *
*                                               EndPcsSndYXP()                 *
*   						PcsSndYX2()       	       *
*	Called Functions	  	:       Pcs_Start                      *
*	Data Stores and Usages	:              			       *
*				(a) Input  :    T_FSRZ,T_HZ,T_FSYXSJ,T_ZCFSSJ  *
*				(b) Output :    MQ  YX Message                 *
*	Report				:	none		               *
*	Screens				:	none			       *
*	Message Files			:	none			       *
*									       *
*	Change Log    			:				       *
*	Change No. Date		Auther		Reason for Change	       *
*******************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
EXEC SQL INCLUDE SQLCA; 
#include <fcntl.h>
#include <signal.h>
#include "/usr/bkfx/include/myapi.h"
#include "/usr/bkfx/include/Pcs_Snd_YX_P/Pcs_Snd_YX_P.h"
#include "/usr/bkfx/include/Pcs_Snd_YX_P/cmYXStr.h"
#include "/usr/bkfx/include/Pcs_Snd_YX_P/cmdef.h"


int freect()
{
	if( mheader!=NULL )
	free(mheader);
	EXEC SQL ROLLBACK WORK RELEASE;
	exit(0);
}

/*  Usage :  PcsSndYXP.x   */ 
main()
{    
   
	int  coun=0; 
	int  flag;
	int  retcode=0;
	char produce_err_str[20];
	char *PID = "Client Txn Clt_Mpt Process(Port 7111)";
	int iTime;
	
	ERROR=0;
	i=0;
        signal(SIGTERM,freect);

	ProcessError(LOG_NORMAL,"PCS_Snd_YX_P: this is NORMAL message", END);
	
	flag=InitPcsSndYXP();
    	if( flag!=0 )
    	{
    		ProcessError(LOG_ERROR,"PCS_Snd_YX_P: error cannot connect database",END);
    		exit(0);
    	}
    	EXEC SQL SELECT bsbh INTO :snd_city FROM T_BSBH;
    	if( snd_city[0]=='\0'||snd_city[1]=='\0' )
    	{
    		ProcessError(LOG_ERROR,"PCS_Snd_YX_P: bsbh in t_bsbh is NULL",END);
    		exit(0);
    	}
    	else
    		snd_city[2]='\0';
	iTime=GetTimeInterval("PCS_SND_YX_P");

begin:
	i=0;
	ERROR=0;
    	datatype = SJFL_YX;
    	status = FSRZ_WAITFOR_SND;

        EXEC SQL SELECT COUNT(*) INTO :coun FROM t_fsrz
             WHERE sjfl=:datatype AND sjzt=:status; 
        if (coun == 0) 
        {
          goto End;
        }

        EXEC SQL DECLARE c CURSOR FOR 
             SELECT fsxh FROM t_fsrz 
             WHERE sjfl = :datatype AND sjzt = :status; 
    
    	flag=MQBKInit("YX");        
    	if( flag<0 )
    	{
   		ProcessError(LOG_ERROR,"PCS_Snd_YX_P: error when init mq yx",END);
    		goto End;
    	}
    	
    /*  Get message length and memory of m_header   */ 
        len_msg = LEN_KEY + sizeof(snd_city)*2 + sizeof(fi_no) +sizeof(subtype)   
                  + ZH_LEN*2 + LEN_YX_REC + 10;

        if ((mheader = (char *)malloc(len_msg+MID_LEN)) == NULL)
        {
            ProcessError(LOG_ERROR,"PCS_Snd_YX_P: error there is no space in memory",END);
            goto End;
        }
        EXEC SQL OPEN c;
     	
    	while ( ++i <= coun )
    	{
         	EXEC SQL WHENEVER NOT FOUND DO break;
         	EXEC SQL FETCH c INTO : serial_no;

         	status = FSRZ_SENDED;

         	/*  Update T_FSRZ status to SENDED    */        
         	UpdateSndLogStatus(serial_no,status);

         	status = HZ_SENDED;

	  	flag=PcsSndYX2(serial_no,len_msg);
	  	if( flag!=0 )
	  	{
			sprintf(produce_err_str,"%10d",serial_no);
	  		ProcessError(LOG_ERROR,"PCS_Snd_YX_P: error when send yxsj to queue fsxh is: ",produce_err_str);
	  		EXEC SQL ROLLBACK WORK;
	  		continue;
	  	}
          	/* Delete these T_ZCFSSJ records   */
          	EXEC SQL DELETE FROM t_zcfssj WHERE fsxh = :serial_no;   
          	EXEC SQL COMMIT WORK;  
    	} 
        
    	EXEC SQL CLOSE c;
    
    	free(mheader);

End:
    	flag=MQBKClear();
    	if( flag<0 )
    	{
    		ProcessError(LOG_ERROR,"PCS_Snd_YX_P: error when mq bk clear",END);
    	}

#ifdef DEBUG
	exit(0);
#endif

    	sleep(iTime);

	goto begin;

}

⌨️ 快捷键说明

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