- 论坛徽章:
- 0
|
一个程序需要从远程主机下载数据在执行
ftp_getfile ( &ftpinfo, rFile, lFile);
之后在执行
select * into :kh from dfkh where wbh=:dw.wbh and xh=:kh.xh;
就会导致 408 错误,
但是如果 ftp_getfile () 远程下载函数执行失败的时候,程序就可以顺利的执行下去,请有经验的高手予以指导, 谢谢!!!
<code>
errno = getfile(sh.sip, rHostUser, sh.pas, remoteFile, localFile, msg);
if(errno) get_Wkey(18, 40, 1, "%s 错误 %d", msg, errno);
// strcpy(localFile, "lkin/ndh008024_0415.410526108070415001" ;
if((in = fopen(localFile, "r" ) == NULL){
get_Wkey(18, 40, 2, " 开户文件 %s 无法打开 ", localFile);
return 2;
}
flen = strlen(localFile);
if( flen > 3) strcpy(pxh, localFile + flen - 3);
else strcpy(pxh, "999" ;
sprintf(tStr[2], "tmp/kh%s%s_%s.err", dw.wbh, pxh, stim+4);
if((fer = fopen(tStr[2], "w" ) == NULL){
get_Wkey(18, 40, 1, "开户错误结果文件 %s 无法生成", tStr[2]);
return 3;
}
fprintf(fer, "\n\n%10s{%s}dsnd 自动开户错误数据.\n", "", sh.sh1);
fputs(" 用户编号 绿卡帐号 户 名 绿卡余额\n", fer);
sprintf(remoteFile, "tmp/KH%s%s_%s", dw.wbh, pxh, stim+4 );
if((of = fopen(remoteFile, "w" ) == NULL){
get_Wkey(18, 40, 1, "批量开户分析表 %s 无法生成", remoteFile);
return 4;
};
fprintf(of, "%12s%s%s批量开户记录\n", "", dw.wnm, pxh);
fprintf(of, "序 号 用 户 编 号 户 名 变压器 帐 号 开户额 电费额 绿卡户名\n" ;
// fgets(fbuf, sizeof(fbuf), in);
// 读出成功开户数据中的汇总纪录, 这些纪录不需要进行处理
while(fgets(fbuf, sizeof(fbuf), in)){
/*
序号( 帐号(19) 户名(22) 客户号(14) 证件类型(2) 证件号码(1
交易金额(12) 存款余额(16) 业务手续费(12) 应答码(1) 错误信息(30)
主要是根据用户的顺序号来确定用户编号, 然后将绿卡开户帐号信息加载到
dfmx 数据库中, 然后可以在本程序中增加数据校对功能.
4809|605062104200099895 | |李水利 |000000000000000000 | 10.00| 10.00| 0.00|成功 |
*/
if(fbuf[8] != '|') continue;
if(strncmp(fbuf+128, "成功", 4) != 0 ) {
fputs(fbuf, fer);
continue;
}
SplitText(fbuf, '|', "%8l %19s %* %s %* %12d %12d %* %8s",
&khxh, lkzh, lknm, &fse, &jce, ders);
kh.xh = khxh;
$select * into :kh from dfkh where wbh=:dw.wbh and xh=:kh.xh;
fprintf(fer, "[%s] [%5ld] [%19s] [%s] [%12.2f] [%12.2f] SQLCODE=[%ld]\n",
dw.wbh, kh.xh, lkzh, lknm, fse, jce, SQLCODE);
// 对开户非成功数据的处理.
if(++ tb.hu4 % 100 == 0) Mprintw(12, 20, "正处理:%20.20s", fbuf);
if(SQLCODE) {
fprintf(fer, "无开户(SQLCODE=%ld) [%s] %s", SQLCODE, sqlca.sqlerrm, fbuf);
tb.hu3 ++, tb.je13 += fse;
}
else {
$select * into :mx from dfmx where wbh = :dw.wbh and mkh = :kh.mkh;
mx.khe = fse;
mx.jce = jce;
strcpy(mx.mzh, lkzh);
// 对于所有在本菜单中读到的批量开户数据,程序自动为这些帐户设置需
// 进行加办的标志。
$update dfmx set (mzh, khe, jce, mbz[2,2]) =
(:mx.mzh, :mx.khe, :mx.jce, '0')
where wbh=:dw.wbh and mkh=:kh.mkh;
tb.hu1 ++, tb.je11 += mx.jce, tb.je12 += mx.dfe;
fprintf(of, "%5ld %16s %12s %6ld %9.9s %6.2f %6.2f %12.12s\n",
kh.xh, mx.mkh, mx.mnm, mx.byq, mx.mzh+9, mx.khe, mx.dfe, lknm);
if(tb.hu1 % 5== 0) fputs("\n", of);
}
}
<\code> |
|