📄 masxmlpaz.sqc
字号:
/* 错误文件名称 */ 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 + -