📄 pub_func.cpp
字号:
#include "pub_func.h"//////接收 商业银行报文, 解包前的预处理函数// //int mb_pkg(int argc, char argv[][M_MAX_PARA_LEN], char *indata, int *len, char *outdata){ char strCMTNo[M_CMTNO_LEN + 1]; char strTransCode[M_TXCODE_LEN + 1]; int i; i = strlen(indata); if (i < M_MB_CMTNO_OFFSET + 3) { printf("[%s - %d]Message length [%d] less than CMT No offset [%d]\n", __FILE__, __LINE__, i, M_MB_CMTNO_OFFSET + 3); printf( "indata [%s]\n" , indata ); return(M_FAIL); } // Get CMT No from the input stream memset(strCMTNo, 0, sizeof(strCMTNo)); memcpy(strCMTNo, indata + M_MB_CMTNO_OFFSET , M_CMTNO_LEN); printf("[%s - %d]CMT No: [%s]\n", __FILE__, __LINE__, strCMTNo); memset(strTransCode, 0, sizeof(strTransCode)); strcpy(strTransCode, M_TXCODE_PREFIX_MB); strcat(strTransCode, strCMTNo); strcpy(outdata, strTransCode); *len = strlen(outdata); printf("[%s - %d]Trans code: [%s] \n", __FILE__, __LINE__, strTransCode); return 0;}//////接收 CNAPS 系统报文, 解包前的预处理函数// //int cnaps_pkg(int argc, char argv[][M_MAX_PARA_LEN], char *indata, int *len, char *outdata){ char strCMTNo[M_CMTNO_LEN + 1]; char strTransCode[M_TXCODE_LEN + 1]; int i; i = strlen(indata); if (i < M_CMTNO_OFFSET) { printf("[%s - %d]Message length [%d] less than CMT No offset [%d]\n", __FILE__, __LINE__, i, M_CMTNO_OFFSET); return(M_FAIL); } // Get CMT No from the input stream memset(strCMTNo, 0, sizeof(strCMTNo)); memcpy(strCMTNo, indata + M_CMTNO_OFFSET, M_CMTNO_LEN);#ifdef _DEBUG_ printf("[%s - %d]CMT No: [%s]\n", __FILE__, __LINE__, strCMTNo);#endif memset(strTransCode, 0, sizeof(strTransCode)); strcpy(strTransCode, M_TXCODE_PREFIX_CNAPS); strcat(strTransCode, strCMTNo); strcpy(outdata, strTransCode); *len = strlen(outdata);#ifdef _DEBUG_ printf("[%s - %d]Trans code: [%s] \n", __FILE__, __LINE__, strTransCode);#endif return 0;}//////接收 商业银行报文, 打包发往 CNAPS 系统前的预处理函数// //int mkcnapspkg(int argc, char argv[][M_MAX_PARA_LEN], char *indata, int *len, char *outdata){ // strcpy(outdata, "100100"); // strcpy(outdata, "100109"); // strcpy(outdata, "100999");// *len = 6;// return 0; char strCMTNo[M_CMTNO_LEN + 1]; char strTransCode[M_TXCODE_LEN + 1]; memset(strCMTNo, 0, sizeof(strCMTNo)); memcpy(strCMTNo, indata + M_MB_CMTNO_OFFSET, M_CMTNO_LEN); printf("[%s - %d]CMT No: [%s]\n", __FILE__, __LINE__, strCMTNo); memset(strTransCode, 0, sizeof(strTransCode)); strcpy(strTransCode, M_TXCODE_PREFIX_MB); strcat(strTransCode, strCMTNo); strcpy(outdata, strTransCode); *len = strlen(outdata);; printf("[%s - %d]Trans code: [%s] \n", __FILE__, __LINE__, strTransCode); return 0;}//////接收 CNAPS 系统报文, 打包发往商业银行前的预处理函数// //int mkmbpkg(int argc, char argv[][M_MAX_PARA_LEN], char *indata, int *len, char *outdata){ char strCMTNo[M_CMTNO_LEN + 1]; char strTransCode[M_TXCODE_LEN + 1]; memset(strCMTNo, 0, sizeof(strCMTNo)); memcpy(strCMTNo, argv[0], M_CMTNO_LEN); printf("indata = [%s]\n", indata); printf("[%s - %d]CMT No: [%s]\n", __FILE__, __LINE__, strCMTNo); memset(strTransCode, 0, sizeof(strTransCode)); strcpy(strTransCode, M_TXCODE_PREFIX_MB); strcat(strTransCode, strCMTNo); strcpy(outdata, strTransCode); *len = strlen(outdata);; printf("[%s - %d]Trans code: [%s] \n", __FILE__, __LINE__, strTransCode); return 0;}int Trim(char *strBuffer, char *strFlag){ char strTemp[1024]; int i, j, iFlag; int iStrLen; char *p; if (strFlag[0] != 'A' && strFlag[0] != 'L' && strFlag[0] != 'R') return(0); iStrLen = strlen(strBuffer); memset(strTemp, 0, sizeof(strTemp)); j = 0; iFlag = 0; if (strFlag[0] == 'A') { Trim(strBuffer, "L"); Trim(strBuffer, "R"); } else { if (strFlag[0] == 'L') // 去左空格 i = 0; else i = iStrLen - 1; while (1) { if ( (strFlag[0] == 'L' && i == iStrLen) || (strFlag[0] == 'R' && i < 0) ) break; if (strBuffer[i] == ' ' && iFlag == 0) ; else { strTemp[j++] = strBuffer[i]; if (iFlag == 0) iFlag = 1; } if (strFlag[0] == 'L') // 去左空格 i ++; else i --; } strTemp[j] = '\0'; strcpy(strBuffer, strTemp); if (strFlag[0] == 'R') // 去右空格 { printf("[%s]()\n", strBuffer); iStrLen = strlen(strBuffer); p = strBuffer; memset(strTemp, 0, sizeof(strTemp)); i = 1; while(*p) { strTemp[iStrLen - i] = *p; p++; i++; } strcpy(strBuffer, strTemp); } } return 0;}int TRIM( int argc,char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data ){ strcpy( out_data, in_data ); Trim( out_data, argv[0] ); *data_len = strlen( out_data ); return( 0 );}int real_len(int argc, char *argv[], char *indata, int *len, char *outdata){ char buf[20]; //小额CMT类报文专用 //sprintf(buf, "%06d", strlen(indata) ); sprintf(buf, "%06d", strlen(indata) + 36); printf("[%s - %d]格式后处理函数取得 Message Length: [%s]\n", __FILE__, __LINE__, buf); memcpy(indata + M_MSGLEN_OFFSET, buf, M_MSGLEN_LEN); return M_SUCCESS;}// Fill the special characterint FILL_CHAR( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data ){ char ch; char tmp[1000]; int in_len,len; int i; memset(tmp,0,sizeof(tmp)); len = atoi(argv[2]); in_len = strlen(in_data); if(len <= in_len) { strcpy(out_data,in_data); out_data[len] = '\0'; *data_len = len; return 0; } ch = argv[1][0]; if(strcmp(argv[0],"left") == 0) { for(i = 0;i<len - in_len;i++) tmp[i]=ch; strcat(tmp,in_data); } else { strcpy(tmp,in_data); for(i = in_len;i<len;i++) tmp[i]=ch; } strcpy(out_data,tmp); out_data[len] = '\0'; *data_len = atoi( argv[2] ); return( 0 );}// Fill the space characterint Fill_Space( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data ){ char ch; char tmp[2000]; int in_len,len; int i; memset(tmp,0,sizeof(tmp)); len = atoi(argv[1]); in_len = strlen(in_data); printf("需填充到的长度=[%d] ,输入串=[%s] ,串的实际长度=[%d]\n",len,in_data ,in_len); if(len <= in_len) { strcpy(out_data,in_data); out_data[len] = '\0'; *data_len = len; return 0; } ch = ' '; if(strcmp(argv[0],"left") == 0) { for(i = 0;i<len - in_len;i++) { tmp[i]=ch; } strcat(tmp,in_data); } else if(strcmp(argv[0],"right") == 0) { strcpy(tmp,in_data); for(i = in_len;i<len;i++) { tmp[i]=ch; } } else { // Added by jolly 2002-4-13 11:27 #ifdef _DEBUG_ printf("Fill_Space函数用法错误,第一个参数请用\"left\" or \"right\"\n"); #endif strcpy(out_data,in_data); out_data[len] = '\0'; *data_len = strlen(out_data); return 0; // end } strcpy(out_data,tmp); out_data[len] = '\0'; *data_len = strlen(out_data); printf( "Fill_Space函数输出串 [%s]\n\n" , out_data ); return 0;}// Fill the space character// Fill the space characterint FillSp( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data ){ char ch; char tmp[2000]; int in_len,len; int i; memset(tmp,0,sizeof(tmp)); memset( out_data , 0 , sizeof( out_data)); len = atoi(argv[1]); in_len = strlen(in_data); printf("需填充到的长度=[%d] ,输入串=[%s] ,串的实际长度=[%d]\n",len,in_data ,in_len); if(len <= in_len) { strcpy(out_data,in_data); out_data[len] = '\0'; *data_len = len; return 0; } ch = ' '; if(strcmp(argv[0],"left") == 0) { for(i = 0;i<len - in_len;i++) { tmp[i]=ch; } strcat(tmp,in_data); } else if(strcmp(argv[0],"right") == 0) { strcpy(tmp,in_data); for(i = in_len;i<len;i++) { tmp[i]=ch; } } else { // Added by jolly 2002-4-13 11:27 #ifdef _DEBUG_ printf("FillSp函数用法错误,第一个参数请用\"left\" or \"right\"\n"); #endif strcpy(out_data,in_data); out_data[len] = '\0'; *data_len = strlen(out_data); return 0; // end } strcpy(out_data,tmp); out_data[len] = '\0'; *data_len = strlen(out_data); memset( in_data , 0 , sizeof( in_data)); printf( "FillSp函数输出串 [%s]\n\n" , out_data ); return 0;}// Check the tranctionint Check_Account( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data ){ return 0;}// Left or Right Cut the special len characters from Stringint Cut_data( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data){ int len; int len0; #ifdef _DEBUG_ printf("Cutin_data=[%s][%d]\n",in_data,strlen(in_data)); printf("Cut_data argc:%d argv0[%s]argv1[%s]\n",argc,argv[0],argv[1]); #endif len = atoi(argv[1]); len0 = strlen(in_data); #ifdef _DEBUG_ printf("需截掉的长度=[%d] ,串的实际长度=[%d]\n",len,len0); #endif // 如果需截掉的长度大于串实际长度,则将输入串直接输出 if(len >= strlen(in_data)) { strcpy(out_data,in_data); *data_len = strlen(in_data); return 0; } if( strcmp(argv[0],"right") == 0) { strncpy(out_data,in_data,len0 - len); *data_len = len0 - len; } else if( strcmp(argv[0],"left") == 0 ) { strncpy(out_data,&in_data[len],len0 - len); *data_len = len0 - len; } else { // Added by jolly 2002-4-13 11:27 #ifdef _DEBUG_ printf("Cut_data函数用法错误,第一个参数请用\"left\" or \"right\"\n"); #endif strcpy(out_data,in_data); *data_len = strlen(in_data); return 0; // end } out_data[len0-len]='\0'; #ifdef _DEBUG_ printf("输出串=[%s],输出串长度[%d]\n\n",out_data,strlen(out_data)); #endif return 0;}// Add the dot to Amount int AddDot( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data){ double d; d = atof(argv[0])/100.0; sprintf(out_data,"%.2f",d); *data_len = strlen(argv[0]); return 0;}// Del the dot from Amount int DelDot( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data){ double d; char tmp[100]; memset(tmp,0,sizeof(tmp)); d = atof(argv[0])*100.0; sprintf(tmp,"%.0f",d); *data_len = atoi( argv[1] );// FillChar( out_data, tmp, '0', *data_len ); return 0;}int DelRMB( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data ){ char tmp[100]="000000000000000"; int len; len = strlen(in_data); if(len>18) { len = 18; } memcpy( tmp+(18-len), in_data+3, len-3 ); tmp[15] = 0; strcpy( out_data, tmp );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -