📄 bank_svr.sqc.bak
字号:
Alltrim(jgh);
Alltrim(gyh);
Alltrim(jkks);
Alltrim(yeks);
Alltrim(hsks);
retcode = 0;
sndlen = 0;
/*
//装/清卡编号(批次号) X(15)//
if(strlen(pc) > 15)
memcpy(snddata, pc, 15);
else
memcpy(snddata, pc, strlen(pc));
sndlen = sndlen + 15;
//机构号(支行) X(7)
if(strlen(jgh) > 7)
memcpy(snddata + sndlen, jgh, 7);
else
memcpy(snddata + sndlen, jgh, strlen(jgh));
sndlen = sndlen + 7;
//自助机具号 X(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;
}
/*
//清装卡情况明细查询
void zqkmxcx(int rcvSocket, REQHEAD *reqpack)
{
ANS_HEAD anspack;
struct sqlca sqlca;
char errorMsg[1024], snddata[4097];
int sndlen;
int retcode;
memset(snddata, 0x20, sizeof(snddata) - 1);
snddata[sizeof(snddata) - 1] = 0x00;
EXEC SQL BEGIN DECLARE SECTION;
char termno[8]; //自助机具号X(7)
long Records;
char rq[32]; //日期
char jgh[32]; //机构号X(7)
char gyh[32]; //当前加卡柜员X(07)
char jkks[32]; //初始卡数 9(8)
char yeks[32]; //剩余卡数 9(8)
char hsks[32]; //回收卡数 9(8)
char ffks[32]; //成功发卡 9(8)
char kyks[32]; //可疑卡数 9(8)
char tmpstr[36];
EXEC SQL END DECLARE SECTION;
memset(termno, 0x00, sizeof(termno));
memcpy(termno, reqpack->TIATRDATA, 7);
Alltrim(termno);
memset(rq, 0x00, sizeof(rq));
memcpy(rq, reqpack->TIATRDATA + 7, 8);
Alltrim(rq);
memset(gyh, 0x00, sizeof(gyh));
memcpy(gyh, reqpack->TIATRDATA + 15, 7);
Alltrim(gyh);
EXEC SQL SELECT sbdm
INTO :tmpstr
FROM jqxxzt
WHERE id = :termno;
if (sqlca.sqlcode == 100) //无该发卡机处理
{
retcode = 1000; //无该发卡机处理
strcpy(snddata, "无该发卡机设备");
debugLog(__FILE__, __LINE__, "库存查询,无该发卡机设备termno = %s", termno);
SendToBank(rcvSocket, retcode, strlen(snddata), snddata);
return;
}
else 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(gyh[0] == 0x00) //为空时默认为所有
{
EXEC SQL SELECT count(*)
INTO :Records
FROM dr_jqxxmx
WHERE Iss21 = :termno;
}
else
{
EXEC SQL SELECT count(*)
INTO :Records
FROM dr_jqxxmx
WHERE Iss21 = :termno and Iss3 = :pc;
}
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) //找jqxxmx表
{
EXEC SQL DECLARE c1 CURSOR FOR
SELECT id, name
FROM tb1;
EXEC SQL OPEN c1;
if (sqlca.sqlcode != 0)
{
SqlInfoGet(errorMsg, &sqlca);
printf("mult select false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
}
else
{
EXEC SQL FETCH c1 INTO :id, :name;
if (sqlca.sqlcode != 0)
{
SqlInfoGet(errorMsg, &sqlca);
printf("mult select fetch false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
}
else
{
while (sqlca.sqlcode != 100)
{
printf("mult select: id = %-d name = %s\n", id, name);
EXEC SQL FETCH c1 INTO :id, :name;
if (sqlca.sqlcode != 0 && sqlca.sqlcode != 100 )
{
SqlInfoGet(errorMsg, &sqlca);
printf("mult select fetch false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
break;
}
}
}
EXEC SQL CLOSE c1;
}
SendToBank(rcvSocket, retcode, sndlen, snddata);
*/
/*
return;
}
//清装卡情况汇总查询
void zqkhzcx(int rcvSocket, REQHEAD *reqpack)
{
ANS_HEAD anspack;
memset(&anspack, 0x00, sizeof(ANS_HEAD));
}
//发卡明细
void famxcx(int rcvSocket, REQHEAD *reqpack)
{
ANS_HEAD anspack;
struct sqlca sqlca;
char errorMsg[1024], snddata[4097];
int sndlen;
int retcode;
memset(snddata, 0x20, sizeof(snddata) - 1);
snddata[sizeof(snddata) - 1] = 0x00;
EXEC SQL BEGIN DECLARE SECTION;
char termno[8]; //自助机具号X(7)
long Records;
char rq[9];
char lsh[32];
char pc[32]; //装/清卡编号(批次号)X(15)
char jgh[32]; //机构号X(7)
char gyh[32]; //当前加卡柜员X(07)
char jkks[32]; //初始卡数 9(8)
char yeks[32]; //剩余卡数 9(8)
char hsks[32]; //回收卡数 9(8)
char ffks[32]; //成功发卡 9(8)
char kyks[32]; //可疑卡数 9(8)
char tmpstr[36];
EXEC SQL END DECLARE SECTION;
memset(termno, 0x00, sizeof(termno));
memcpy(termno, reqpack->TIATRDATA, 7);
Alltrim(termno);
memset(rq, 0x00, sizeof(rq));
memcpy(rq, reqpack->TIATRDATA + 7, 8);
Alltrim(rq);
memset(pc, 0x00, sizeof(pc));
memcpy(pc, reqpack->TIATRDATA + 7, 15);
Alltrim(pc);
//取当前库存
EXEC SQL SELECT Iss20, Iss8, Iss11, Iss18, Iss17
INTO :jgh, :gyh, :jkks, :yeks, :hsks
FROM dr_jylsk
WHERE sbdm = :termno and fsrq =:rq
//and Iss3 = :pc;
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;
}
memset(&anspack, 0x00, sizeof(ANS_HEAD));
}
*/
void 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;
}
return;
}
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 + -