?? pub_func.cpp
字號:
#include "pub_func.h"//////接收 商業(yè)銀行報文, 解包前的預處理函數(shù)// //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 系統(tǒng)報文, 解包前的預處理函數(shù)// //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;}//////接收 商業(yè)銀行報文, 打包發(fā)往 CNAPS 系統(tǒng)前的預處理函數(shù)// //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 系統(tǒng)報文, 打包發(fā)往商業(yè)銀行前的預處理函數(shù)// //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]格式后處理函數(shù)取得 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函數(shù)用法錯誤,第一個參數(shù)請用\"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函數(shù)輸出串 [%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函數(shù)用法錯誤,第一個參數(shù)請用\"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函數(shù)輸出串 [%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函數(shù)用法錯誤,第一個參數(shù)請用\"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 + -