📄 proc2.ec
字号:
return(0); } while(!feof(fp)) { fscanf(fp,"%10s%s\n",sfjzh_msg.sfdwzh,sfjzh_msg.sfdwmc); $insert into sfjzhb values($sfjzh_msg.sfdwzh,$sfjzh_msg.sfdwmc,0,0); if(sqlca.sqlcode!=0) {printf("sql=%d",sqlca.sqlcode); $ rollback work; memcpy(msg->rc,PATR_INSERT,2); fclose(fp); return(0); } } $commit work; fclose(fp); memcpy(msg->rc,PATR_OK,2); return(1);}proc57(msg)/*insert sfxm.txt into sfjxmb*/DL_MSG *msg;{ $sfjxm_file sfjxm_msg; FILE * fp; fp=fopen("/usr/hcdl/dlmg/server/report/sfxm.txt","r"); if(fp==NULL) { memcpy(msg->rc,PATR_NOFILE,2); return(0); } $begin work; $lock table sfjxmb in exclusive mode; $delete from sfjxmb; if(sqlca.sqlcode!=0 && sqlca.sqlcode!=100) { $ rollback work; memcpy(msg->rc,PATR_INSERT,2); fclose(fp); return(0); } while(!feof(fp)) { fscanf(fp,"%5s%s\n",sfjxm_msg.sfxm,sfjxm_msg.xmmc); $insert into sfjxmb values($sfjxm_msg.sfxm,$sfjxm_msg.xmmc); if(sqlca.sqlcode!=0) {printf("sql=%d",sqlca.sqlcode); $ rollback work; memcpy(msg->rc,PATR_INSERT,2); fclose(fp); return(0); } } $commit work; fclose(fp); memcpy(msg->rc,PATR_OK,2); return(1);}proc40(msg)/*将代扣文本文件转入phone_dkqd表*/DL_MSG *msg;{$ phls_file phls;$ float yzf,csf,sxf,chf,fhf,bpjf,zjf,f168,f968,qtf,znj,yszk,hjje;FILE *fp;fp=fopen("mdk_out.txt","r");if(fp==NULL){memcpy(msg->rc,PATR_NOFILE,2); return(0);}strcpy(phls.dybz,"0");strcpy(phls.kkbz,"0");$begin work;$lock table phone_dkqk in exclusive mode;while(!feof(fp)){ fscanf(fp,"%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s\n", phls.xh,phls.card_id,phls.phone_num, phls.type,phls.dkrq,phls.bzw,phls.yzf,phls.csf, phls.sxf,phls.chf,phls.fhf,phls.bpjf,phls.zjf, phls.f168,phls.f968,phls.qtf,phls.znj,phls.yszk, phls.hjje,phls.yfen); yzf=atol(phls.yzf)/100.0; csf=atol(phls.csf)/100.0; sxf=atol(phls.sxf)/100.0; chf=atol(phls.chf)/100.0; fhf=atol(phls.fhf)/100.0; bpjf=atol(phls.bpjf)/100.0; zjf=atol(phls.zjf)/100.0; f168=atol(phls.f168)/100.0; f968=atol(phls.f968)/100.0; qtf=atol(phls.qtf)/100.0; znj=atol(phls.znj)/100.0; yszk=atol(phls.yszk)/100.0; hjje=atol(phls.hjje)/100.0; $insert into phone_dkqd(xh,card_id,phone_num,type,bzw,yzf,csf,sxf, chf,fhf,bpjf,zjf,f168,f968,qtf,znj,yszk,hjje,yfen,kkbz) values ($phls.xh,$phls.card_id,$phls.phone_num,$phls.type,$phls.bzw, $yzf,$csf,$sxf,$chf,$fhf,$bpjf, $zjf,$f168,$f968, $qtf,$znj,$yszk,$hjje,$phls.yfen,$phls.kkbz);if(sqlca.sqlcode!=0) { $ rollback work; memcpy(msg->rc,PATR_INSERT,2); fclose(fp); return(0); } } $commit work; fclose(fp); memcpy(msg->rc,PATR_OK,2); return(1);}proc42(msg) /* 生成电信局批量代扣文本文件(送大机) */DL_MSG *msg;{ $phls_file phdk; FILE *fp; $char phone_num[16],card_id[17],man_id[16]; unsigned int je; sprintf(sndname,"/usr/hcdl/dlmg/server/report/pldk.txt"); fp=fopen(sndname,"w"); if (fp==NULL) { puts("open files err !!"); memcpy(msg->rc,PATR_ERR,2); return(0); } $declare dkqd_cur cursor for select * into $phdk from phone_dkqd ; $open dkqd_cur; if(sqlca.sqlcode!=0) { puts("select err1 !!"); memcpy(msg->rc,PATR_CXERR,2); return(0); } while(1) { $fetch dkqd_cur; if(sqlca.sqlcode==SQLNOTFOUND) break; if(sqlca.sqlcode!=0) { puts("select err2 !!"); memcpy(msg->rc,PATR_CXERR,2); $close dkqd_cur; $free dkqd_cur; fclose(fp); return(0); } $select phone_num,card_id,man_id into $phone_num,$card_id,$man_id from phone_wt where $phdk.phone_num=phone_num and wt_type="0"; je=atof(phdk.hjje)*100; fprintf(fp,"%1d%1d%04d%16s%15s%015d%8s\n",1,1,1,card_id,man_id,je," "); } $close dkqd_cur; $free dkqd_cur; fclose(fp); memcpy(msg->rc,PATR_OK,2); return(1); };proc43(msg) /* 将扣款成功数据移到历史表并清空phone_dkqd表 */DL_MSG *msg;{$begin work;$lock table phone_dkqk in exclusive mode;$lock table phdkls in exclusive mode;$insert into phdkls select * from phone_dkqd where kkbz="1";if(sqlca.sqlcode!=0) { $ rollback work; memcpy(msg->rc,PATR_INSERT,2); return(0); }$delete from phone_dkqd;if(sqlca.sqlcode!=0) { $ rollback work; memcpy(msg->rc,PATR_INSERT,2); return(0); } $commit work; memcpy(msg->rc,PATR_OK,2); return(1);}proc47(msg) /* 查看SNA状态 */DL_MSG *msg;{ system("sna -d l>../report/sna_state"); system("sna -d s>>../report/sna_state"); sprintf(sndname,"/usr/hcdl/dlmg/server/report/sna_state"); memcpy(msg->rc,PATR_OK,2); return(3);} proc48(msg) /* 起PU */DL_MSG *msg;{ system("sna -s 2>../report/sna_pu"); sprintf(sndname,"/usr/hcdl/dlmg/server/report/sna_pu"); memcpy(msg->rc,PATR_OK,2); return(3);} proc49(msg) /* 起LU */DL_MSG *msg;{ system("sna -s 2>../report/sna_pu"); sprintf(sndname,"/usr/hcdl/dlmg/server/report/sna_pu"); memcpy(msg->rc,PATR_OK,2); return(3);} proc80(msg) /* 向大机发起交易 */DL_MSG *msg;{ char packet_47ac[256];/*对公*/ char packet_47ap[256];/*储蓄*/ char reply_ap[256],buf_s[256],*s_buf; char reply_ac[256]; char jlh[5],message[30]; char ljwjzje[15]; $char gyh[6]; $int sl; int qap,QueType,len,i; int result=0;/*0:失败 1∶成功*/ short a[13]={6,5,4,3,2,7,6,5,4,3,2,1}; char tx_time[7],ymd[11],ymd1[11]; long now_second; /* 产生机器时间用 */ struct tm his; $ struct st_wtdwb tb_wtdwb; FILE *fp; qap=get_queue(FROM_AP); clear_queue(qap); /*28:对公交易 29:储蓄交易 38:对公应答 39:储蓄应答*/ /*组储蓄包头*/ memcpy(packet_47ap,"\xe3\xc3\xe9\xc6",4);/*TCZF*/ packet_47ap[4]=0x62; /*控制器id ????*/ packet_47ap[9]=0x20; /*工作站id ????*/ packet_47ap[16]=0xe0;/*记录号级别????*/ memcpy(packet_47ap+21,"\xf1\xf2\xf3\xf4\xf5",5);/*电子日志????*/ packet_47ap[26]=0x40; /*包头结束标志;*/ strncpy(gyh,msg->temp,5); gyh[5]='\0'; /*组对公包头*/ memcpy(packet_47ac,"\xe3\xc3\xe9\xc6",4);/*TCZF*/ packet_47ac[4]=0x62; /*控制器id ????*/ packet_47ac[9]=0x20; /*工作站id ????*/ strcpy(jlh,"0540");/*记录号*/ s_compress(jlh,packet_47ac+12,4);/*记录号*/ s_compress(jlh,packet_47ac+14,4);/*授权号*/ packet_47ac[16]=0x80;/*记录号级别????*/ packet_47ac[17]=0xe0; /*批号*/ packet_47ac[18]=0x02; /*包头结束标志;*/ switch(atoi(msg->flag)){ case 1:/*储蓄签到*/ strncpy(gyh,msg->temp,5); gyh[5]='\0'; memcpy(msg->rc,PATR_INSERT,2);/*fail*/ $select count (*) into $sl from djgyb where gyh=$gyh; if(sl==0) { strcpy(msg->temp,"柜员号不存在\n"); return(1); } s_compress(gyh,packet_47ap+12,4);/*记录号*/ s_compress(gyh,packet_47ap+14,4);/*授权号*/ packet_47ap[17]=0xf0;/*所号*/ for (i=0;i<3;i++) packet_47ap[18+i]=0xf0+(gyh[i]&0x0f);/*所号*/ s_compress("0111",packet_47ap+10,4);/*trancode*/ /*construct time*/ time(&now_second); his = *(localtime(&now_second)); sprintf(tx_time,"%02d%02d%02d",his.tm_hour,his.tm_min,his.tm_sec); if(his.tm_year>=100) sprintf(ymd,"%02d%02d%02d",his.tm_year-100,his.tm_mon+1,his.tm_mday); else sprintf(ymd,"%02d%02d%02d",his.tm_year,his.tm_mon+1,his.tm_mday); packet_47ap[5]=tx_time[0]&0x0f; packet_47ap[6]=tx_time[1]<<4|tx_time[2]&0x0f; packet_47ap[7]=tx_time[3]<<4|tx_time[4]&0x0f; packet_47ap[8]=tx_time[5]<<4|0x01; /** ??? **/ AtoE(packet_47ap+27,msg->temp,5);/*操作员号*/ packet_47ap[32]=0x6f; AtoE(packet_47ap+33,msg->temp+5,6);/*密码*/ packet_47ap[39]=0x62; AtoE(packet_47ap+40,msg->temp+11,4);/*记录员号*/ packet_47ap[44]=0x59; AtoE(packet_47ap+45,msg->temp+15,1);/*上下午*/ packet_47ap[46]=0x52; AtoE(packet_47ap+47,ymd,6);/*日期981103*/ packet_47ap[53]=0x53; packet_47ap[54]=0xff; err_jnl ("snd_ap", packet_47ap,55); if(snd_queue(qap,28,packet_47ap,55)<0)/*send request packet to ES9000*/ { printf("储蓄签到请求失败\n"); return(1); } QueType=38; while(1) { len = rcv_queue(qap, &QueType,reply_ap);/*receive reply packet from ES9000*/ if (len<0) { printf("储蓄签到应答失败\n"); return(1); } err_jnl ("reply_ap", reply_ap,len); if(strncmp(reply_ap,"ENDEND",6)==0)/*the last reply packet received*/ break; /*to check the transaction succeeds or fails*/ len=0; if(reply_ap[2]==0x0f)/*error packet returned from 9000*/ { while(reply_ap[7+len]!=0x0f) { memcpy(message+len,reply_ap+7+len,1); len++; } memcpy(message+len,reply_ap+7+len,1); message[len+1]=0x0; sna2a(message,message); strcpy(msg->temp,message); printf("%s\n",message); } else result=1;/*success*/ }/*end while*/ if(result==0)/*fail*/ { printf("储蓄签到失败\n"); return(1); } printf("签到成功\n"); memcpy(msg->rc,PATR_OK,2); return(1); break; case 2: /*对公签到*/ s_compress("0111",packet_47ac+10,4);/*trancode*/ /*construct time*/ time(&now_second); his = *(localtime(&now_second)); sprintf(tx_time,"%02d%02d%02d",his.tm_hour,his.tm_min,his.tm_sec); packet_47ac[5]=tx_time[0]&0x0f; packet_47ac[6]=tx_time[1]<<4+tx_time[2]&0x0f; packet_47ac[7]=tx_time[3]<<4+tx_time[4]&0x0f; packet_47ac[8]=tx_time[5]<<4+0x01; /** ??? **/ memcpy(msg->rc,PATR_INSERT,2);/*fail*/ if(snd_queue(qap,29,packet_47ac,len)<0)/*send request packet to ES9000*/ { puts("对公签到请求失败\n"); return(1); } QueType=39; while(1) { len = rcv_queue(qap, &QueType,reply_ac);/*receive reply packet from ES9000*/ if (len<0) { puts("对公签到应答失败\n"); return(1); } if(strncmp(reply_ac,"ENDEND",6)==0)/*the last reply packet received*/ break; /*to check the transaction succeeds or fails*/ } if(result==0)/*fail*/ { puts("对公签到失败\n"); return(1); } puts("签到成功\n"); memcpy(msg->rc,PATR_OK,2); return(1); break; case 3:/*入帐*/ $ declare p_cur cursor for select * from wtdwb; $ open p_cur; if(sqlca.sqlcode!=0) { puts("\n open p_cur(入帐) err!"); memcpy(msg->rc,PATR_YBC,2); return(3); } time(&now_second); his = *(localtime(&now_second)); if(his.tm_year<100) sprintf(ymd,"%02d/%02d/19%02d",his.tm_mon+1,his.tm_mday,his.tm_year); else sprintf(ymd,"%02d/%02d/%04d",his.tm_mon+1,his.tm_mday,2000+his.tm_year-100); if(his.tm_year>=100) sprintf(ymd1,"%02d%02d%02d",his.tm_year-100,his.tm_mon+1,his.tm_mday); else sprintf(ymd1,"%02d%02d%02d",his.tm_year,his.tm_mon+1,his.tm_mday); memcpy(msg->rc,PATR_INSERT,2);/*fail*/ sprintf(sndname,"/usr/hcdl/dlmg/server/report/jzqd"); fp=fopen(sndname,"w"); if(fp==NULL) { printf("创建文件jzqd失败\n"); $close p_cur; $free p_cur; return(3); } while(1) { $fetch p_cur into $tb_wtdwb; if(sqlca.sqlcode==SQLNOTFOUND) break; rstrdate(ymd,&now_second); if(tb_wtdwb.rq!=now_second) { printf("%s本日未扎帐\n",tb_wtdwb.dwmc); continue; } if(tb_wtdwb.jzbz[0]=='1') { printf("%s本日已做过入帐\n",tb_wtdwb.dwmc); continue; } if(tb_wtdwb.ljwjzje==0) { printf("%s本日无发生额\n",tb_wtdwb.dwmc); continue; } if(tb_wtdwb.ljwjzje<0) { printf("%s本日发生额非法\n",tb_wtdwb.dwmc); continue; } if(tb_wtdwb.zhlx[0]=='0')/*储蓄*/ { time(&now_second); his = *(localtime(&now_second)); sprintf(tx_time,"%02d%02d%02d",his.tm_hour,his.tm_min,his.tm_sec); packet_47ap[5]=tx_time[0]&0x0f; packet_47ap[6]=tx_time[1]<<4|tx_time[2]&0x0f; packet_47ap[7]=tx_time[3]<<4|tx_time[4]&0x0f;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -