⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lz.c

📁 8583的应用 8583的应用 8583的应用
💻 C
📖 第 1 页 / 共 2 页
字号:
int size,char *buf,int bufLen,int *bufUse)  
{  
double*v;  
chars[64];  
intlen;  
charformat[16];  

v=(double *)value;  
switch(chg)  
{  
case CHG_HTON:  
if (*bufUse+size>;bufLen)  
return(-1);  
if (*v<0)  
return(-1);  
sprintf(format,"%%0%d.2lf",size+1);  
sprintf(s,format,*v);  
del_dot(s);  
len=strlen(s);  
if (len!=size)  
return(-1);  
memcpy(buf+*bufUse,s,len);  
*bufUse=*bufUse+size;  
break;  
case CHG_NTOH:  
if (*bufUse+size>;bufLen)  
return(-1);  
if (size>;60)  
return(-1);  
memcpy(s,buf+*bufUse,size);  
s[size]='\0';  
if (add_dot(s)!=0)  
return(-1);  
if (sscanf(s,"%lf",v)!=1)  
return(-1);  
*bufUse=*bufUse+size;  
break;  
case CHG_HTOS:  
case CHG_STOH:  
return(chg_move(chg,value,sizeof(double),buf,bufLen,bufUse));  
default:  
return(-1);  
};  
return(0);  
}  
static int chg_double_xn(int chg,void *value,  
int size,char *buf,int bufLen,int *bufUse)  
{  
doublev;  
intr;  
charx;  

switch(chg)  
{  
case CHG_HTON:  
if (*bufUse+size+1>;bufLen)  
return(-1);  
v=*(double *)value;  
if (v==0)  
*(buf+*bufUse)='0';  
else if (v>;0)  
*(buf+*bufUse)=CHAR_CREDIT;  
else  
{  
*(buf+*bufUse)=CHAR_DEBIT;  
v=-v;  
};  
*bufUse=*bufUse+1;  
r=chg_double_n(chg,(void *)&v,  
size,buf,bufLen,bufUse);  
break;  
case CHG_NTOH:  
if (*bufUse+size+1>;bufLen)  
return(-1);  
x=*(buf+*bufUse);  
if (x!='0'&&x!=CHAR_CREDIT&&x!=CHAR_DEBIT)  
return(-1);  
*bufUse=*bufUse+1;  
r=chg_double_n(chg,(void *)&v,  
size,buf,bufLen,bufUse);  
if (r!=0)  
return(r);  
if (x=='0')  
{  
if (v!=0)  
return(-1);  
*(double *)value=0;  
}  
else if (x==CHAR_CREDIT)  
*(double *)value=v;  
else *(double *)value=-v;  
r=0;  
break;  
case CHG_HTOS:  
case CHG_STOH:  
return(chg_move(chg,value,sizeof(double),buf,bufLen,bufUse));  
default:  
r=-1;  
};  
return(r);  
}  

static int chg_SecurityCtrlInfo_n(int chg,void *value,  
int size,char *buf,int bufLen,int *bufUse)  
{  
intr;  
AB8583_Security_Ctrl_Info *p;  

if (chg==CHG_HTOS||chg==CHG_STOH)  
return(chg_move(chg,value,sizeof(AB8583_Security_Ctrl_Info),  
buf,bufLen,bufUse));  

if ((size!=16)  
||(*bufUse+size>;bufLen))  
return(-1);  

p=(AB8583_Security_Ctrl_Info *)value;  
r=chg_long_n(chg,(void *)&p->;sync_counter,  
8,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
r=chg_str_n(chg,(void *)&p->;reserved,  
7,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
r=chg_char_n(chg,(void *)&p->;key_type,  
1,buf,bufLen,bufUse);  
E:  
return(r);  
}  

static int chg_BalanceAmountItem_n(int chg,  
AB8583_Balance_Amount_Item *p,  
int size,char *buf,int bufLen,int *bufUse)  
{  
intr;  

if ((size!=20)  
||(*bufUse+size>;bufLen))  
return(-1);  

r=chg_str_n(chg,(void *)&p->;account_type,  
2,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
r=chg_str_n(chg,(void *)&p->;amount_type,  
2,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
r=chg_str_n(chg,(void *)&p->;currency_code,  
3,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
r=chg_double_xn(chg,(void *)&p->;amount,  
12,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  

E:  
return(r);  
}  

static int chg_BalanceAmount_n(int chg,void *value,  
int size,char *buf,int bufLen,int *bufUse)  
{  
intr;  
AB8583_Balance_Amount*p;  
charlength[4];  

if (chg==CHG_HTOS||chg==CHG_STOH)  
return(chg_move(chg,value,sizeof(AB8583_Balance_Amount),  
buf,bufLen,bufUse));  
if ((size!=43)  
||(*bufUse+size>;bufLen))  
return(-1);  

p=(AB8583_Balance_Amount *)value;  
switch(chg)  
{  
case CHG_HTON:  
strcpy(length,"040");  
r=chg_str_n(chg,length,  
3,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
break;  
case CHG_NTOH:  
r=chg_str_n(chg,p->;length,  
3,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
if (strcmp(p->;length,"040")!=0)  
{r=-1;  
goto E;  
};  
break;  
default:  
r=-1;  
goto E;  
};  
r=chg_BalanceAmountItem_n(chg,&p->;ledger_balance,  
20,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
r=chg_BalanceAmountItem_n(chg,&p->;available_balance,  
20,buf,bufLen,bufUse);  
E:  
return(r);  
}  

static int chg_MessageIndicator_lllvar(int chg,void *value,  
int size,char *buf,int bufLen,int *bufUse)  
{  
intr;  
AB8583_Message_Indicator*p;  
charlength[4];  

if (chg==CHG_HTOS||chg==CHG_STOH)  
return(chg_move(chg,value,sizeof(AB8583_Message_Indicator),  
buf,bufLen,bufUse));  
if ((size!=5)  
||(*bufUse+size>;bufLen))  
return(-1);  

p=(AB8583_Message_Indicator *)value;  
switch(chg)  
{  
case CHG_HTON:  
strcpy(length,"005");  
r=chg_str_n(chg,length,  
3,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
break;  
case CHG_NTOH:  
r=chg_str_n(chg,length,  
3,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
if (strcmp(length,"005")!=0)  
{r=-1;  
goto E;  
};  
break;  
default:  
r=-1;  
goto E;  
};  

r=chg_char_n(chg,(void *)&p->;encryption_key_used,  
1,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
r=chg_char_n(chg,(void *)&p->;mac_key_used,  
1,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
r=chg_char_n(chg,(void *)&p->;message_effect,  
1,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
r=chg_str_n(chg,(void *)&p->;no_of_unlogged_txns,  
2,buf,bufLen,bufUse);  

E:  
return(r);  
}  


static int chg_AuthOperationCode_lllvar(int chg,void *value,  
int size,char *buf,int bufLen,int *bufUse)  
{  
intr;  
AB8583_Auth_Operation_Code*p;  
charlength[4];  

if (chg==CHG_HTOS||chg==CHG_STOH)  
return(chg_move(chg,value,sizeof(AB8583_Auth_Operation_Code),  
buf,bufLen,bufUse));  
if ((size!=22)  
||(*bufUse+size+3>;bufLen))  
return(-1);  

p=(AB8583_Auth_Operation_Code *)value;  
switch(chg)  
{  
case CHG_HTON:  
strcpy(length,"022");  
r=chg_str_n(chg,length,  
3,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
break;  
case CHG_NTOH:  
r=chg_str_n(chg,length,  
3,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
if (strcmp(length,"022")!=0)  
{r=-1;  
goto E;  
};  
break;  
default:  
r=-1;  
goto E;  
};  

r=chg_char_n(chg,(void *)&p->;auth_function_code,  
1,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
r=chg_char_n(chg,(void *)&p->;auth_mode,  
1,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
r=chg_str_n(chg,(void *)&p->;auth_id_response_code,  
6,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
r=chg_str_n(chg,(void *)&p->;service_business_code,  
4,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
r=chg_str_n(chg,(void *)&p->;invoice_number,  
10,buf,bufLen,bufUse);  

E:  
return(r);  
}  

static int chg_OriginalDataElements_n(int chg,void *value,  
int size,char *buf,int bufLen,int *bufUse)  
{  
intr;  
AB8583_Original_Data_Elements*p;  

if (chg==CHG_HTOS||chg==CHG_STOH)  
return(chg_move(chg,value,sizeof(AB8583_Original_Data_Elements),  
buf,bufLen,bufUse));  
if ((size!=42)  
||(*bufUse+size>;bufLen))  
return(-1);  

p=(AB8583_Original_Data_Elements *)value;  

r=chg_str_n(chg,(void *)&p->;org_message_type,  
4,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
r=chg_str_n(chg,(void *)&p->;org_system_trace_number,  
6,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
r=chg_str_n(chg,(void *)&p->;org_transaction_date_time,  
10,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
r=chg_str_n(chg,(void *)&p->;org_acqr_inst_id_code,  
11,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
r=chg_str_n(chg,(void *)&p->;org_forw_inst_id_code,  
11,buf,bufLen,bufUse);  

E:  
return(r);  
}  

static int chg_ReplacementAmounts_n(int chg,void *value,  
int size,char *buf,int bufLen,int *bufUse)  
{  
intr;  
AB8583_Replacement_Amounts*p;  

if (chg==CHG_HTOS||chg==CHG_STOH)  
return(chg_move(chg,value,sizeof(AB8583_Replacement_Amounts),  
buf,bufLen,bufUse));  
if ((size!=42)  
||(*bufUse+size>;bufLen))  
return(-1);  

p=(AB8583_Replacement_Amounts *)value;  

r=chg_double_n(chg,&p->;actual_amount_of_transaction,  
12,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
r=chg_double_n(chg,&p->;actual_amount_of_settlement,  
12,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
r=chg_double_xn(chg,&p->;actual_amount_of_transaction_fee,  
8,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
r=chg_double_xn(chg,&p->;actual_amount_of_settlement_fee,  
8,buf,bufLen,bufUse);  
E:  
return(r);  
}  

/************************  HTON  or NTOH *********************/  

static int chg_AB8583_n(int chg,AB8583 *data,  
char *buf,int bufLen,int *bufUse,int *lastField)  
{  
intr,i;  

r=chg_str_n(chg,&data->;message_type,  
4,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  
r=chg_bit_bit(chg,&data->;primary_bitmap,  
64,buf,bufLen,bufUse);  
if (r!=0)  
goto E;  

for(i=0, r=0; (r==0)&&(chgList.bitName!=0); ++i)  
   if (AB8583_bitIsSet(data,chgList.bitName))  
   {  
*lastField=chgList.bitName;  
r=(*chgList.chgF)(chg,  
((char *)data)+chgList.offset,  
chgList.size,  
buf,bufLen,bufUse);  
   };  

E:  
return(r);  
}  

int AB8583_hton(AB8583 *data,char *buf,int bufLen,int *bufUse,int *lastField)  
{  
intr;  

*bufUse=0;  
*lastField=0;  
r=chg_AB8583_n(CHG_HTON,data,buf,bufLen,bufUse,lastField);  
return(r);  
}  

int AB8583_ntoh(AB8583 *data,char *buf,int bufLen,int *bufUse,int *lastField)  
{  
intr;  

AB8583_clear(data);  
*bufUse=0;  
*lastField=0;  
r=chg_AB8583_n(CHG_NTOH,data,buf,bufLen,bufUse,lastField);  
return(r);  
}  

int AB8583_htos(AB8583 *data,char *buf,int bufLen,int *bufUse,int *lastField)  
{  
intr;  

*bufUse=0;  
*lastField=0;  
r=chg_AB8583_n(CHG_HTOS,data,buf,bufLen,bufUse,lastField);  
return(r);  
}  

int AB8583_stoh(AB8583 *data,char *buf,int bufLen,int *bufUse,int *lastField)  
{  
intr;  

AB8583_clear(data);  
*bufUse=0;  
*lastField=0;  
r=chg_AB8583_n(CHG_STOH,data,buf,bufLen,bufUse,lastField);  
return(r);  
}  

int AB8583_Val_to_Val(int BitNum,AB8583 *indata,AB8583 *outdata)  
{  
int i;  

for(i=0;(chgList.bitName!=BitNum)&&(chgList.bitName!=0);i++);  

if(chgList.bitName==0) return(-1);  
memcpy((char *)outdata+chgList.offset,  
(char *)indata+chgList.offset,chgList.valsize);  
if(AB8583_setBit(outdata,BitNum)!=0) return(-1);  
return(0);  
}  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -