免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2901 | 回复: 1
打印 上一主题 下一主题

informix 408 错误 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-20 08:23 |只看该作者 |倒序浏览
一个程序需要从远程主机下载数据在执行
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>

论坛徽章:
0
2 [报告]
发表于 2007-04-20 20:56 |只看该作者
经过对该应用程序的认真分析, 发现该错误是由 sco libftp.a 函数库的漏洞引起的,在不使用 libftp 之类函数的时候,就可以解决以上的错误现象,最好直接引用 系统 ftp 程序执行以上功能即可,即使使用 system 操作也可以。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP