?? pub_func.cpp
字號:
*data_len = strlen(out_data); return 0;}int AddRMB( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data ){ char tmp[100]="000000000000000000"; int len; int i; len = strlen(in_data); if(len>15) { strcpy(out_data,in_data); } else { tmp[0] = 'R'; tmp[1] = 'M'; tmp[2] = 'B'; for( i=18-len; i<18; i++ ) { tmp[i] = in_data[i+len-18]; } strcpy(out_data,tmp); out_data[18]='\0'; } *data_len = strlen(out_data); return 0;}int FormatAmount( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data ){ char strTemp[50]; memset(strTemp, 0, sizeof(strTemp)); DelDotAmount(argc, argv, in_data, data_len, strTemp); AddRMB(argc, argv, strTemp, data_len, out_data); *data_len = strlen(out_data); return 0;}// Get the current Dateint SysDate(int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data){ time_t ltime; struct tm tmst; ltime = time(NULL); memcpy(&tmst,localtime(<ime),sizeof(tmst)); sprintf(out_data,"%4d%02d%02d",tmst.tm_year + 1900,tmst.tm_mon + 1,\ tmst.tm_mday); *data_len = 8; return 0;}// Get the current Timeint SysTime( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data){ time_t ltime; struct tm tmst; ltime = time(NULL); memcpy(&tmst,localtime(<ime),sizeof(tmst)); sprintf(out_data,"%4d%02d%02d%02d%02d%02d",tmst.tm_year + 1900,\ tmst.tm_mon + 1, tmst.tm_mday,tmst.tm_hour,tmst.tm_min,tmst.tm_sec); *data_len = 14; return 0;}int L_rtrim(char *str){ int i; i=strlen(str)-1; if(i<0) return(0); while(str[i]=='\n'||str[i]==' '||(i>0&&str[i]=='\xa1'&&str[i-1]=='\xa1')) { if (str[i]=='\xa1') { str[i-1]='\0'; i = i-2; } else { str[i]='\0'; i--; } if(i<0) break; } return(0);}int DelDotAmount( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data ){ char sAmount[80]; char tmp[80]; int i,j; int len; memset(sAmount,0,sizeof(sAmount)); memset(tmp,0,sizeof(tmp)); strcpy(tmp,in_data); for(i = 0,j = 0; tmp[i] ; i++,j++) { if(tmp[i] == ','||tmp[i]=='.') i++; sAmount[j]=tmp[i]; } len = strlen(sAmount); memset(out_data,0,len+1); memcpy(out_data,sAmount,len); *data_len=len; return 0;}int AddDotAmount( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data ){ GetAmount(in_data,out_data); *data_len = strlen(out_data); return 0;}int GetAmount(char *in_data,char *out_data){ char sAmount[100],sAmount0[100]; char tmp[100]; int i,j,k; int len; memset(sAmount,0,sizeof(sAmount)); memset(sAmount0,0,sizeof(sAmount0)); memset(tmp,0,sizeof(tmp)); len = strlen(in_data); strcpy(tmp,in_data); for(i = 0;i<len;i++) { if(tmp[i] <= '9' && tmp[i] > '0') { strcpy(sAmount,&tmp[i]); break; } } len = strlen(sAmount); memset(tmp,0,sizeof(tmp)); for(i = 0;i < len;i++) tmp[i] = sAmount[len - i - 1]; memset(sAmount,0,sizeof(sAmount)); sAmount[0] = tmp[0]; sAmount[1] = tmp[1]; sAmount[2] = '.'; for(i = 3,j = 0,k = 2;j <= len ; j++) { if( j%4 == 3) { sAmount[i++] = ','; } else { sAmount[i++] = tmp[k++]; } } memset(tmp,0,sizeof(tmp)); len = strlen(sAmount); for( i = 0;i < len;i++) tmp[i] = sAmount[len - i - 1]; for(i = 0;i<len;i++) { if(tmp[i] <= '9' && tmp[i] > '0') { strcpy(out_data,&tmp[i]); break; } } return 0;}int Fill_SBC( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data ){ char tmp[1000]; int in_len,len; memset(tmp,0xA1,sizeof(tmp)); len = atoi(argv[1]); in_len = strlen(in_data); if(len <= in_len) { strcpy(out_data,in_data); out_data[len] = '\0'; *data_len = len; return 0; } if(strcmp(argv[0],"right") == 0) { memcpy(tmp,in_data,in_len); tmp[len] = '\0'; } else { memcpy(&tmp[len - in_len],in_data,in_len); tmp[len] = '\0'; } strcpy(out_data,tmp); out_data[len] = '\0'; *data_len = len; #ifdef _DEBUG_ printf("out_data = [%s][%d]\n",out_data,strlen(out_data)); #endif return 0;}int TrimSpace( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data ){ int i,j = 0; char tmp[2048]; memset(tmp,0,sizeof(tmp)); for(i = 0;i < strlen(in_data);i++) { if(in_data[i] != ' ') tmp[j++] = in_data[i]; } strcpy(out_data,tmp); out_data[strlen(tmp)] = '\0'; *data_len = strlen(tmp); return 0;}// Delete SBC space from Stringint TrimSBC( int argc, char argv[][M_MAX_PARA_LEN], char *in_data, int *data_len, char *out_data ){ int i , j = 0; char tmp[1024];// printf("in_data = [%s][%d]\n",in_data,strlen(in_data)); memset(tmp,0,sizeof(tmp)); for(i = 0;i < strlen(in_data);i+=2) { if((unsigned char)in_data[i] == 0xa1 && (unsigned char)in_data[i + 1] == 0xa1) continue; tmp[j++] = in_data[i]; tmp[j++] = in_data[i + 1]; } strcpy(out_data,tmp); out_data[strlen(tmp)] = '\0'; *data_len = strlen(tmp); printf("out_data = [%s][%d]\n",out_data,strlen(out_data)); return 0;}//////////////////////////////////////////////////// * Added by MIQH -- 2002.04.12 // * 函數功能: 將字符串轉換為ASC碼->EBCD碼的預備串////////////////////////////////////////////////// int Filter( int argc, char argv[][M_MAX_PARA_LEN], char * inData, int * data_len, char * outData ){ int i; int len; int itemLength; int addLength = 0; char tmp[1000]; int cvtLength = atoi(argv[0]); char ch = ' '; memset(tmp,0,sizeof(tmp)); strcpy(tmp,inData); itemLength = calculateLength( tmp ); while( itemLength > cvtLength ) { len = strlen( tmp ); if( tmp[len-1] < 0 ) { tmp[len-1] = '\0'; tmp[len-2] = '\0'; } else { tmp[len-1] = '\0'; } itemLength = calculateLength( tmp ); } addLength = getAddLength( tmp ); strcpy(outData,tmp); for( i=itemLength; i<cvtLength; i++ ) { outData[i-addLength]=ch; } outData[cvtLength-addLength] = '\0'; i = strlen(outData); if( outData[i-1]<0 ) { if( outData[i-3]<0 ) { outData[i-1] = ch; outData[i-2] = ch; } else { outData[i-1] = ch; outData[i-2] = ch; outData[i] = ch; outData[i+1] = ch; outData[i+2] = '\0'; } } *data_len = strlen(outData); return 0;}////////////////////////////////////////////////////// * Added by MIQH -- 2002.04.12 // * 函數功能: 計算字符串由ASC碼轉換為EBCD碼后的長度////////////////////////////////////////////////////int calculateLength(char * itemData){ int i; int addLength = 0; int itemLength = strlen( itemData ); if(itemData[0]<0) { addLength++; } if(itemData[itemLength-1]<0) { addLength++; } for( i=0; i<itemLength-1; i++) { if( itemData[i]*itemData[i+1] < 0 ) { addLength++; } } itemLength = itemLength + addLength; return itemLength;}////////////////////////////////////////////////////////// * Added by MIQH -- 2002.04.12 // * 函數功能: 計算字符串由ASC碼轉換為EBCD碼后增加的長度///////////////////////////////////////////////////////// int getAddLength(char * itemData){ int i; int addLength = 0; int itemLength = strlen( itemData ); if(itemData[0]<0) { addLength++; } if(itemData[itemLength-1]<0) { addLength++; } for( i=0; i<itemLength-1; i++) { if( itemData[i]*itemData[i+1] < 0 ) { addLength++; } } return addLength;}////////////////////////////////////// // * Added by MIQH -- 2002.05.20 // * 函數功能: 由貨幣代碼轉為貨幣符號////////////////////////////////////// int ToCoinSymbol(int argc, char argv[][M_MAX_PARA_LEN], char * inData, int * data_len, char * outData){ int i = 3; char tmpdata[19]; memset(tmpdata,0,19); if( strncmp(inData,"01",2)==0 ) { strcpy(tmpdata,"RMB"); memcpy(tmpdata+3,inData+2,15); } while( tmpdata[i] == ' ' ) { tmpdata[i++] = '0'; } strcpy(outData,tmpdata); *data_len = strlen(outData); return 0;}//////////////////////////////////////////////// // Added by MIQH -- 2002.05.20 // 函數功能: 由貨幣符號轉為貨幣代碼//////////////////////////////////////////////// int ToCoinCode(int argc, char argv[][M_MAX_PARA_LEN], char * inData, int * data_len, char * outData){ int i; char tmpdata[100]; i = strlen(inData); memset(tmpdata,0,18); if( strncmp(inData,"RMB",3)==0 ) { strcpy(tmpdata,"01"); memset(tmpdata+2,'0',18-i); memcpy(tmpdata+20-i,inData+3,i-3); } strcpy(outData,tmpdata); *data_len = strlen(outData); return 0;}///////////////////////////////////////////////////// Added by chenxi -- 2002.06.08 // 函數功能: 大小額標志轉換(來帳使用)///////////////////////////////////////////////////int ToTxType(int argc, char argv[][M_MAX_PARA_LEN], char * inData, int * data_len, char * outData){ if( strlen(inData) != 1 ) return (-1); switch( *inData ) { case '0': strcpy(outData,"1"); /*大額*/ break; case '1': strcpy(outData,"2"); /*小額*/ break; default : strcpy(outData,"3"); break; } *data_len = 1; return 0;}/////////////////////////////////////////// // Added by chenxi -- 2002.06.08 //函數功能: 大小額標志轉換(往帳使用)///////////////////////////////////////////int ToOprtType(int argc, char argv[][M_MAX_PARA_LEN], char * inData, int * data_len, char * outData){ if( strlen(inData) != 1 ) return (-1); switch( *inData ) { case '1': strcpy(outData,"0"); /*大額*/ break; case '2': strcpy(outData,"1"); /*小額*/ break; default : strcpy(outData,"2"); /*其它*/ break; } *data_len = 1; return 0;}////////////////////////////////////////////// Added by MIQH -- 2002.05.21 // 函數功能: 得到發報中心或收報中心代碼//////////////////////////////////////////// int GetCenterCode(int argc, char argv[][M_MAX_PARA_LEN], char * inData, int * data_len, char * outData){ char tmpdata[5]; memset(tmpdata,0,5); memcpy(tmpdata,argv[0]+3,4);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -