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

📄 bank_svr.c

📁 转发交易接口
💻 C
📖 第 1 页 / 共 3 页
字号:
      sql_setdlist[0].sqlind = 0L;
#line 382 "bank_svr.sqc"
      sqlasetdata(2,0,1,sql_setdlist,NULL,0L);
    }
#line 382 "bank_svr.sqc"
  sqlaaloc(3,1,18,0L);
    {
      struct sqla_setdata_list sql_setdlist[1];
#line 382 "bank_svr.sqc"
      sql_setdlist[0].sqltype = 496; sql_setdlist[0].sqllen = 4;
#line 382 "bank_svr.sqc"
      sql_setdlist[0].sqldata = (void*)&Records;
#line 382 "bank_svr.sqc"
      sql_setdlist[0].sqlind = 0L;
#line 382 "bank_svr.sqc"
      sqlasetdata(3,0,1,sql_setdlist,NULL,0L);
    }
#line 382 "bank_svr.sqc"
  sqlacall((unsigned short)24,9,2,3,0L);
#line 382 "bank_svr.sqc"
  sqlastop(0L);
}

#line 382 "bank_svr.sqc"

   	 	}
   	 	else
  		{
        		
/*
EXEC SQL SELECT count(*)
   	 	 	 INTO :Records
   	 	 	 FROM dr_jqxxmx
   	 	 	 WHERE Iss21 = :termno and Iss3 = :pc;
*/

{
#line 389 "bank_svr.sqc"
  sqlastrt(sqla_program_id, &sqla_rtinfo, &sqlca);
#line 389 "bank_svr.sqc"
  sqlaaloc(2,2,19,0L);
    {
      struct sqla_setdata_list sql_setdlist[2];
#line 389 "bank_svr.sqc"
      sql_setdlist[0].sqltype = 460; sql_setdlist[0].sqllen = 8;
#line 389 "bank_svr.sqc"
      sql_setdlist[0].sqldata = (void*)termno;
#line 389 "bank_svr.sqc"
      sql_setdlist[0].sqlind = 0L;
#line 389 "bank_svr.sqc"
      sql_setdlist[1].sqltype = 460; sql_setdlist[1].sqllen = 32;
#line 389 "bank_svr.sqc"
      sql_setdlist[1].sqldata = (void*)pc;
#line 389 "bank_svr.sqc"
      sql_setdlist[1].sqlind = 0L;
#line 389 "bank_svr.sqc"
      sqlasetdata(2,0,2,sql_setdlist,NULL,0L);
    }
#line 389 "bank_svr.sqc"
  sqlaaloc(3,1,20,0L);
    {
      struct sqla_setdata_list sql_setdlist[1];
#line 389 "bank_svr.sqc"
      sql_setdlist[0].sqltype = 496; sql_setdlist[0].sqllen = 4;
#line 389 "bank_svr.sqc"
      sql_setdlist[0].sqldata = (void*)&Records;
#line 389 "bank_svr.sqc"
      sql_setdlist[0].sqlind = 0L;
#line 389 "bank_svr.sqc"
      sqlasetdata(3,0,1,sql_setdlist,NULL,0L);
    }
#line 389 "bank_svr.sqc"
  sqlacall((unsigned short)24,10,2,3,0L);
#line 389 "bank_svr.sqc"
  sqlastop(0L);
}

#line 389 "bank_svr.sqc"

   	 	}
   	 	 
   		if (sqlca.sqlcode != 0)   
  		{
	            SqlInfoGet(errorMsg, &sqlca);
  		    debugLog(__FILE__, __LINE__, "select sql false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
        	    retcode = abs(sqlca.sqlcode)%10000; 
        	    strcpy(snddata, errorMsg);
        	    SendToBank(rcvSocket, retcode, strlen(snddata), snddata);
  		    return;
  		}
  	 	if(Records <= 0)  
   	 	{
        	    retcode = 1001; 
        	    strcpy(snddata, "无该发卡机的库存记录");
        	    SendToBank(rcvSocket, retcode, strlen(snddata), snddata);
  		    return;   	 	
   	 	}
        	
        	if(pc[0] == 0x00)
        	{
        		
/*
EXEC SQL SELECT max(Iss3)
   	 	  	INTO :pc
   	 	  	FROM dr_jqxxmx
   	 	  	WHERE Iss21 = :termno;
*/

{
#line 414 "bank_svr.sqc"
  sqlastrt(sqla_program_id, &sqla_rtinfo, &sqlca);
#line 414 "bank_svr.sqc"
  sqlaaloc(2,1,21,0L);
    {
      struct sqla_setdata_list sql_setdlist[1];
#line 414 "bank_svr.sqc"
      sql_setdlist[0].sqltype = 460; sql_setdlist[0].sqllen = 8;
#line 414 "bank_svr.sqc"
      sql_setdlist[0].sqldata = (void*)termno;
#line 414 "bank_svr.sqc"
      sql_setdlist[0].sqlind = 0L;
#line 414 "bank_svr.sqc"
      sqlasetdata(2,0,1,sql_setdlist,NULL,0L);
    }
#line 414 "bank_svr.sqc"
  sqlaaloc(3,1,22,0L);
    {
      struct sqla_setdata_list sql_setdlist[1];
#line 414 "bank_svr.sqc"
      sql_setdlist[0].sqltype = 460; sql_setdlist[0].sqllen = 32;
#line 414 "bank_svr.sqc"
      sql_setdlist[0].sqldata = (void*)pc;
#line 414 "bank_svr.sqc"
      sql_setdlist[0].sqlind = 0L;
#line 414 "bank_svr.sqc"
      sqlasetdata(3,0,1,sql_setdlist,NULL,0L);
    }
#line 414 "bank_svr.sqc"
  sqlacall((unsigned short)24,11,2,3,0L);
#line 414 "bank_svr.sqc"
  sqlastop(0L);
}

#line 414 "bank_svr.sqc"
 
    			if (sqlca.sqlcode != 0)   
  			{
	        	       SqlInfoGet(errorMsg, &sqlca);
  		 	       debugLog(__FILE__, __LINE__, "select sql false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
        	 	       retcode = abs(sqlca.sqlcode)%10000; 
        	 	       strcpy(snddata, errorMsg);
        	  	       SendToBank(rcvSocket, retcode, strlen(snddata), snddata);
  		 	       return;
  			}
  			Alltrim(pc);
  		}
  		
/*
EXEC SQL SELECT max(Iss4)
   	 	 INTO :lsh
   	 	 FROM dr_jqxxmx
   	 	 WHERE Iss21 = :termno and Iss3 = :pc;
*/

{
#line 429 "bank_svr.sqc"
  sqlastrt(sqla_program_id, &sqla_rtinfo, &sqlca);
#line 429 "bank_svr.sqc"
  sqlaaloc(2,2,23,0L);
    {
      struct sqla_setdata_list sql_setdlist[2];
#line 429 "bank_svr.sqc"
      sql_setdlist[0].sqltype = 460; sql_setdlist[0].sqllen = 8;
#line 429 "bank_svr.sqc"
      sql_setdlist[0].sqldata = (void*)termno;
#line 429 "bank_svr.sqc"
      sql_setdlist[0].sqlind = 0L;
#line 429 "bank_svr.sqc"
      sql_setdlist[1].sqltype = 460; sql_setdlist[1].sqllen = 32;
#line 429 "bank_svr.sqc"
      sql_setdlist[1].sqldata = (void*)pc;
#line 429 "bank_svr.sqc"
      sql_setdlist[1].sqlind = 0L;
#line 429 "bank_svr.sqc"
      sqlasetdata(2,0,2,sql_setdlist,NULL,0L);
    }
#line 429 "bank_svr.sqc"
  sqlaaloc(3,1,24,0L);
    {
      struct sqla_setdata_list sql_setdlist[1];
#line 429 "bank_svr.sqc"
      sql_setdlist[0].sqltype = 460; sql_setdlist[0].sqllen = 32;
#line 429 "bank_svr.sqc"
      sql_setdlist[0].sqldata = (void*)lsh;
#line 429 "bank_svr.sqc"
      sql_setdlist[0].sqlind = 0L;
#line 429 "bank_svr.sqc"
      sqlasetdata(3,0,1,sql_setdlist,NULL,0L);
    }
#line 429 "bank_svr.sqc"
  sqlacall((unsigned short)24,12,2,3,0L);
#line 429 "bank_svr.sqc"
  sqlastop(0L);
}

#line 429 "bank_svr.sqc"
 
		if (sqlca.sqlcode != 0)   
  		{
            		SqlInfoGet(errorMsg, &sqlca);
  	    		debugLog(__FILE__, __LINE__, "select sql false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
        	        retcode = abs(sqlca.sqlcode)%10000; 
        	        strcpy(snddata, errorMsg);
        	        SendToBank(rcvSocket, retcode, strlen(snddata), snddata);
  	    		return;
  		}
  		
/*
EXEC SQL SELECT Iss20, Iss8, Iss11, Iss18, Iss17
   	 	 INTO :jgh, :gyh, :jkks, :yeks, :hsks
   	 	 FROM dr_jqxxmx
   	 	 WHERE Iss21 = :termno and Iss3 = :pc and Iss4 = :lsh;
*/

{
#line 442 "bank_svr.sqc"
  sqlastrt(sqla_program_id, &sqla_rtinfo, &sqlca);
#line 442 "bank_svr.sqc"
  sqlaaloc(2,3,25,0L);
    {
      struct sqla_setdata_list sql_setdlist[3];
#line 442 "bank_svr.sqc"
      sql_setdlist[0].sqltype = 460; sql_setdlist[0].sqllen = 8;
#line 442 "bank_svr.sqc"
      sql_setdlist[0].sqldata = (void*)termno;
#line 442 "bank_svr.sqc"
      sql_setdlist[0].sqlind = 0L;
#line 442 "bank_svr.sqc"
      sql_setdlist[1].sqltype = 460; sql_setdlist[1].sqllen = 32;
#line 442 "bank_svr.sqc"
      sql_setdlist[1].sqldata = (void*)pc;
#line 442 "bank_svr.sqc"
      sql_setdlist[1].sqlind = 0L;
#line 442 "bank_svr.sqc"
      sql_setdlist[2].sqltype = 460; sql_setdlist[2].sqllen = 32;
#line 442 "bank_svr.sqc"
      sql_setdlist[2].sqldata = (void*)lsh;
#line 442 "bank_svr.sqc"
      sql_setdlist[2].sqlind = 0L;
#line 442 "bank_svr.sqc"
      sqlasetdata(2,0,3,sql_setdlist,NULL,0L);
    }
#line 442 "bank_svr.sqc"
  sqlaaloc(3,5,26,0L);
    {
      struct sqla_setdata_list sql_setdlist[5];
#line 442 "bank_svr.sqc"
      sql_setdlist[0].sqltype = 460; sql_setdlist[0].sqllen = 32;
#line 442 "bank_svr.sqc"
      sql_setdlist[0].sqldata = (void*)jgh;
#line 442 "bank_svr.sqc"
      sql_setdlist[0].sqlind = 0L;
#line 442 "bank_svr.sqc"
      sql_setdlist[1].sqltype = 460; sql_setdlist[1].sqllen = 32;
#line 442 "bank_svr.sqc"
      sql_setdlist[1].sqldata = (void*)gyh;
#line 442 "bank_svr.sqc"
      sql_setdlist[1].sqlind = 0L;
#line 442 "bank_svr.sqc"
      sql_setdlist[2].sqltype = 460; sql_setdlist[2].sqllen = 32;
#line 442 "bank_svr.sqc"
      sql_setdlist[2].sqldata = (void*)jkks;
#line 442 "bank_svr.sqc"
      sql_setdlist[2].sqlind = 0L;
#line 442 "bank_svr.sqc"
      sql_setdlist[3].sqltype = 460; sql_setdlist[3].sqllen = 32;
#line 442 "bank_svr.sqc"
      sql_setdlist[3].sqldata = (void*)yeks;
#line 442 "bank_svr.sqc"
      sql_setdlist[3].sqlind = 0L;
#line 442 "bank_svr.sqc"
      sql_setdlist[4].sqltype = 460; sql_setdlist[4].sqllen = 32;
#line 442 "bank_svr.sqc"
      sql_setdlist[4].sqldata = (void*)hsks;
#line 442 "bank_svr.sqc"
      sql_setdlist[4].sqlind = 0L;
#line 442 "bank_svr.sqc"
      sqlasetdata(3,0,5,sql_setdlist,NULL,0L);
    }
#line 442 "bank_svr.sqc"
  sqlacall((unsigned short)24,13,2,3,0L);
#line 442 "bank_svr.sqc"
  sqlastop(0L);
}

#line 442 "bank_svr.sqc"
 
		if (sqlca.sqlcode != 0)   
  		{
            		SqlInfoGet(errorMsg, &sqlca);
  	    		debugLog(__FILE__, __LINE__, "select sql false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
        	        retcode = abs(sqlca.sqlcode)%10000; 
        	        strcpy(snddata, errorMsg);
        	        SendToBank(rcvSocket, retcode, strlen(snddata), snddata);
  	    		return;
  		}
  		
       	}
  	Alltrim(jgh);
  	Alltrim(gyh);
  	Alltrim(jkks);
  	Alltrim(yeks);
  	Alltrim(hsks);
  		
  	retcode = 0;
  	sndlen = 0;
  	/*
	if(strlen(pc) > 15)
  		memcpy(snddata, pc, 15);
  	else
  		memcpy(snddata, pc, strlen(pc));
  	sndlen = sndlen + 15;
  	if(strlen(jgh) > 7)
  		memcpy(snddata + sndlen, jgh, 7);
  	else
  		memcpy(snddata + sndlen, jgh, strlen(jgh));
  	sndlen = sndlen + 7;
		if(strlen(termno) > 7)
  		memcpy(snddata + sndlen, termno, 7);
  	else
  		memcpy(snddata + sndlen, termno, strlen(termno));
  	sndlen = sndlen + 7;
	//日期	X(8)
  	memset(snddata + sndlen, '0', 8);
  	sndlen = sndlen + 8;
	//时间	X(8)
  	memset(snddata + sndlen, '0', 8);
  	sndlen = sndlen + 8;
	//当前加卡柜员	X(07)
  	if(strlen(gyh) > 7)
  		memcpy(snddata + sndlen, gyh, 7);
  	else
  		memcpy(snddata + sndlen, gyh, strlen(gyh));
  	sndlen = sndlen + 7;
	//初始卡数	9(8)
	sprintf(tmpstr, "%08d", atol(jkks));
  	memcpy(snddata + sndlen, tmpstr, 8);
  	sndlen = sndlen + 8;
	//剩余卡数	9(8)
	sprintf(tmpstr, "%08d", atol(yeks));
  	memcpy(snddata + sndlen, tmpstr, 8);
  	sndlen = sndlen + 8;
	//回收卡数	9(8)
	sprintf(tmpstr, "%08d", atol(hsks));
  	memcpy(snddata + sndlen, tmpstr, 8);
  	sndlen = sndlen + 8;
	//成功发卡	9(8)
	sprintf(tmpstr, "%08d", atol(jkks) - atol(hsks));
  	memcpy(snddata + sndlen, tmpstr, 8);
  	sndlen = sndlen + 8;
	//可疑卡数	9(8)
	sprintf(tmpstr, "%08d", 0);
  	memcpy(snddata + sndlen, tmpstr, 8);
  	sndlen = sndlen + 8;
  	snddata[sndlen] = 0x00;
  		
  		*/  		
  	SendToBank(rcvSocket, retcode, sndlen, snddata);
  		
	return;  	
}



int SendToBank(int rcvSocket, int retcode, int datalen, char *sndData)
{
	ANS_HEAD anspack;
	int sndLen;
	char tmpstr[256];
	if(retcode == 0)
		anspack.TOAMSGTYPE[0] = 'N';
	else
		anspack.TOAMSGTYPE[0] = 'E';
	memset(&anspack, 0x20, sizeof(ANS_HEAD));
	sprintf(tmpstr, "%04d", retcode);
	memcpy(anspack.TOAMSGCODE, tmpstr, 4);
	memset(anspack.TOACURSPOS, '0', 4);
	memset(anspack.TOATMSEQNO, '0', 6);
	memset(anspack.TOASUBSTRCODE, '0', 4);
	memset(anspack.TOASUBSAPCODE, '0', 2);
	memset(anspack.TOATRDATE, '0', 8);
	memset(anspack.TOATRTIME, '0', 6);
	memset(anspack.TOAACDATE, '0', 8);
	memset(anspack.TOAJRNNO, '0', 9);
	memset(anspack.TOAPAGEIND, '0', 1);
	memset(anspack.TOACOMPIND, '0', 1);
	memset(anspack.TOAENCRIND, '0', 1);
	memset(anspack.TOATRBR, '0', 6);
	anspack.TOAFINFLAG[0] = 'N';
	memset(anspack.TOAAUTH, '0', 2);
	sprintf(tmpstr, "%04d", datalen);
	memcpy(anspack.TOAMSGLEN, tmpstr, 4);
	sndLen = sizeof(ANS_HEAD)-4096 + datalen;
	sprintf(tmpstr, "%08d", sndLen - 8);
	memcpy(anspack.PACKLEN, tmpstr, 4);
	memcpy(anspack.TOAOUTPDATA, sndData, datalen);
	
        if (write(rcvSocket, (unsigned char *)&anspack, sndLen) != sndLen)
        {
            debugLog(__FILE__, __LINE__, "send ans to bank failed");
            close(rcvSocket);
            return -1;
        }
	return 0;
}


void 	sig_child( )
{
    	while( waitpid( -1, NULL, WNOHANG ) > 0 ) ;
}

void	sig_Terminate( )
{
	kill( getpid(), SIGKILL );

	exit( 0 );
}


⌨️ 快捷键说明

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