📄 bank_svr.sqc
字号:
strcpy(snddata, errorMsg); SendToBank(rcvSocket, retcode, strlen(snddata), snddata); return; } if(Records <= 0) { if(pc[0] == 0x00) { EXEC SQL SELECT count(*) INTO :Records FROM jqxxmx WHERE Iss21 = :termno; } else { EXEC SQL SELECT count(*) INTO :Records FROM 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) /*没有发现记录返回错误*/ { retcode = 1001; strcpy(snddata, "无该发卡机的库存记录"); SendToBank(rcvSocket, retcode, strlen(snddata), snddata); return; } else { if(pc[0] == 0x00) { EXEC SQL SELECT max(Iss3) INTO :pc FROM jqxxmx WHERE Iss21 = :termno; 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 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; } EXEC SQL SELECT Iss20, Iss8, Iss11, Iss18, Iss17 INTO :jgh, :gyh, :jkks, :yeks, :hsks FROM jqxxmx WHERE Iss21 = :termno and Iss3 = :pc and Iss4 = :lsh; 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; } } } else { if(pc[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) { 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; 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; 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; 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 + -