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

📄 masxmlpaz.sqc

📁 解析XML的例子,xmllb2 UNIX DB2
💻 SQC
📖 第 1 页 / 共 2 页
字号:
      /* 错误文件名称 */      if (!xmlStrcmp(RptCur1->name, "EFNM"))      {         sTag = xmlNodeListGetString(RptDoc, RptCur1->xmlChildrenNode, 1);          memcpy(sEfNm, sTag, sizeof(sEfNm));         xmlFree(sTag);         RPTCURNEXT1;      }      else      {         PAZNODERR("EFNM");      }      /* 错误原因 */      if ((!xmlStrcmp(RptCur1->name, "ERRS")))      {         sTag = xmlNodeListGetString(RptDoc, RptCur1->xmlChildrenNode, 1);         sBuff = ConvertEnc("utf-8", "gb18030", sTag);         memcpy(sErRs, sBuff, sizeof(sErRs));         xmlFree(sTag);         iNmEr = atoi(sProp);         iFlEr = iNmEr;         xmlFree(sProp);         MasIstTbl();         RPTCURNEXT;      }      else      {         PAZNODERR("ERRS");      }   }   return 0;}/* 文件内容错误回执数据处理 */int MasCntErr(xmlDocPtr RptDoc, xmlNodePtr RptCur){   xmlNodePtr RptCur1;   xmlNodePtr RptCur2;   xmlChar *sTag;   xmlChar *sTag1;   xmlChar *sProp;    xmlChar *sProp1;    xmlChar *sMasCnt;    char    *sBuff;   int     iCnt, iCnt1;   /* 文件内容错误 */   if ((!xmlStrcmp(RptCur->name, "ERFLs")))   {      RptCur = RptCur->xmlChildrenNode;       RptCur = RptCur->next;    }   else   {      PAZNODERR("ERFLs");   }   iCnt = 0;   iCnt1 = 0;   while (RptCur != NULL)    {      if ((!xmlStrcmp(RptCur->name, "ERFL")))      {         sProp = xmlGetProp(RptCur, "seqno");         RptCur1 = RptCur->xmlChildrenNode;          RptCur1 = RptCur1->next;       }      else      {         PAZNODERR("ERFL");      }      /* 错误文件名称 */      if ((!xmlStrcmp(RptCur1->name, "EFNM")))      {         sTag1 = xmlNodeListGetString(RptDoc, RptCur1->xmlChildrenNode, 1);          RPTCURNEXT1;      }      else      {         PAZNODERR("EFNM");      }      /* 该文件错误总数 */      if ((!xmlStrcmp(RptCur1->name, "ERTN")))      {         sMasCnt = xmlNodeListGetString(RptDoc, RptCur1->xmlChildrenNode, 1);          iCnt = atoi(sMasCnt);         xmlFree(sMasCnt);         RPTCURNEXT1;      }      else      {         PAZNODERR("ERTN");      }      if ((!xmlStrcmp(RptCur1->name, "FCERs")))      {         RptCur1 = RptCur1->xmlChildrenNode;          RptCur1 = RptCur1->next;       }      else      {         PAZNODERR("FCERs");      }      while (RptCur1 != NULL)       {         if ((!xmlStrcmp(RptCur1->name, "FCER")))         {            sProp1 = xmlGetProp(RptCur1, "seqno");            RptCur2 = RptCur1->xmlChildrenNode;             RptCur2 = RptCur2->next;          }         else         {            PAZNODERR("FCER");         }         /* 错误定位 */         if ((!xmlStrcmp(RptCur2->name, "ERLC")))         {            sTag = xmlNodeListGetString(RptDoc, RptCur2->xmlChildrenNode, 1);             sBuff = ConvertEnc("utf-8", "gb18030", sTag);            strcpy(sErLc, sBuff);            xmlFree(sTag);            RPTCURNEXT2;         }         else         {            PAZNODERR("ERLC");         }         /* 错误原因 */         if ((!xmlStrcmp(RptCur2->name, "ERRS")))         {            sTag = xmlNodeListGetString(RptDoc, RptCur2->xmlChildrenNode, 1);             sBuff = ConvertEnc("utf-8", "gb18030", sTag);            strcpy(sErRs, sBuff);            xmlFree(sTag);            iCnt1++;            /* 错误文件名称 */            memcpy(sEfNm, sTag1, sizeof(sEfNm));            /* 该文件错误总数 */            iErTn = iCnt;            iNmEr = iCnt1;            iFlEr = atoi(sProp);            iFcEr = atoi(sProp1);            xmlFree(sProp1);            MasIstTbl();                        RPTCURNEXT1;         }         else         {            PAZNODERR("ERRS");         }      }      xmlFree(sProp);      xmlFree(sTag1);      iCnt = 0;      RPTCURNEXT;   }   return 0;}/* 回执数据入表 */int MasIstTbl(){   memcpy(sRiCd, sMasCod, sizeof(sRiCd));   MasDatCov(sTxnDt, sMasDat);   iSeqNo = iMasBat;EXEC SQL INSERT INTO cmmartn VALUES (    :sRiCd,                       /* 报送机构编码       15 I */    :sTxnDt,                      /* 报送日期              I */    :iSeqNo,                      /* 报送批次              I */    :sSfId,                       /* 发送正确或错误标识 04   */    :iFsNm,                       /* 成功发送的文件数        */    :iErTn,                       /* 错误总数                */    :iNmEr,                       /* 文件名称错误编号      I */    :sEfNm,                       /* 错误文件名称       41   */    :iEfTn,                       /* 错误文件总数            */    :iFlEr,                       /* 错误文件编号            */    :iFcEr,                       /* 文件内容错误编号      I */    :sErLc,                       /* 文件内容错误定位   64   */    :sErRs,                       /* 文件内容错误原因   02   */    :sFlgArr,                     /* 控制栏位           20   */    :sRem1,                       /* 备注1              64   */    :sRem2);                      /* 备注2             128   */    CHKDBERR("insert into cmmartn");   MasInit();   return 0;}/* initialize variables */int MasInit(){   iNmEr = 0;                   memset(sEfNm, '\0', sizeof(sEfNm));   iFlEr = 0;                   iFcEr = 0;                  memset(sErLc, '\0', sizeof(sErLc));   memset(sErRs, '\0', sizeof(sErRs));       memset(sFlgArr, '\0', sizeof(sFlgArr));   memset(sRem1, '\0', sizeof(sRem1));   memset(sRem2, '\0', sizeof(sRem2));    return 0;}/* MasDatCov(): 日期转化 */int MasDatCov(char *sOut, char *sIn){   char sBuff[10 + 1];   if (strlen(sIn) != 8)   {      return -1;   }   memset(sBuff, '\0', sizeof(sBuff));   memcpy(sBuff, sIn + 4, 2);   strcat(sBuff, "/");   memcpy(sBuff + 3, sIn + 6, 2);   strcat(sBuff, "/");   memcpy(sBuff + 6, sIn, 4);   sprintf(sOut, "%s", sBuff);   return 0;}/* 数据库Check Error */int check_error (char *eString) {   if (sqlca.sqlcode != 0)    {      printf ("数据库操作失败: %s, sqlcode: %ld\n", eString, sqlca.sqlcode);      ErrFlg = 1;      return -1;   }   return 0;}/* 代码转换函数 */char * ConvertEnc(char *encFrom, char *encTo, const char *in){   static char bufin[1024], bufout[1024], *sin, *sout;   int mode, lenin, lenout, ret, nline;   iconv_t c_pt;   if ((c_pt = iconv_open(encTo, encFrom)) == (iconv_t)-1)   {      printf("iconv_open false: %s ==> %s\n", encFrom, encTo);      return NULL;   }   iconv(c_pt, NULL, NULL, NULL, NULL);   lenin  = strlen(in) + 1;   lenout = 1024;   sin    = (char *)in;   sout   = bufout;   ret = iconv(c_pt, &sin, (size_t *)&lenin, &sout, (size_t *)&lenout);   if (ret == -1)   {      return NULL;   }   iconv_close(c_pt);   return bufout;}

⌨️ 快捷键说明

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