int SetHeadCol(ST_CPACK *in_cpack, ...) { va_list ap; int arg; va_start(ap, in_cpack); while ((arg = va_arg(ap, int)) >= 0) { SetParmBit(&(in_cpack->head), arg); } va_end(ap); return(g_SvrLink.SetCol(0, in_cpack->head.ParmBits)); }
//函数名: int SetPackHeadCol(ST_PACKHEAD *phead,...) { va_list ap; int arg; memset(phead->ParmBits,0,sizeof(phead->ParmBits)); va_start(ap, phead); while ((arg = va_arg(ap, int)) >= 0) { SetParmBit(phead, arg); } va_end(ap); }
/* ****** Updated by CHENYH at 2004-3-10 22:17:31 ****** // 函数名: SetCol // 编程 : 陈永华 2004-2-8 23:26:38 // 描述 : 设置CPACK报文位图;当已经用PutRow输出了数据记录,则将上次数据打包发送给原请求端 // 返回 : int 0:成功;与BCC通讯出现问题,建议业务取消处理 // 参数 : void *handle - 暂时就对应的 TRUSERID *, 在本系统没有意义,因为单线程的缘故 // 参数 : ... 用 F_XXXXX 定义的相关字段列表,用 0表示结束;当handle后即为0,则清空位图重新设置位图 */ int SetCol(TRUSERID *handle,...) { va_list ap; int arg; ST_PACKHEAD head; memset(&head,0,sizeof(head)); va_start(ap, handle); while ((arg = va_arg(ap, int)) != 0) { SetParmBit( &head, arg); } va_end(ap); return(g_SvrLink.SetCol(handle,head.ParmBits)); }
int CopyHeadCol(ST_PACK* rPack,ST_CPACK* sPack) { int iLastFidx; ST_CPACK* cpack=(ST_CPACK*)((char*)rPack-sizeof(ST_PACKHEAD)); pXPack->GetPackDef(iLastFidx); for(int i=0;i<iLastFidx;i++) { if(pXPack->IsValidField(&(cpack->head),i)) { SetParmBit(&(sPack->head),i); } } return(g_SvrLink.SetCol(0, sPack->head.ParmBits)); }
int CXPack::SetPackHead(ST_PACKHEAD *head,int recCount,int retCode,...) { memset(head,0,sizeof(ST_PACKHEAD)); head->firstflag = 1; head->nextflag = 0; head->recCount = recCount; head->retCode = retCode; va_list ap; int arg; va_start(ap, retCode); while ((arg = va_arg(ap, int)) > END_FIELDMARK) { SetParmBit(head, arg); } va_end(ap); return 0; }
/* ****** Updated by CHENYH at 2004-3-10 22:17:31 ****** // 函数名: SetCol // 编程 : 陈永华 2004-2-8 23:26:38 // 描述 : 设置CPACK报文位图;当已经用PutRow输出了数据记录,则将上次数据打包发送给原请求端 // 返回 : int 0:成功;与BCC通讯出现问题,建议业务取消处理 // 参数 : void *handle - 暂时就对应的 TRUSERID *, 在本系统没有意义,因为单线程的缘故 // 参数 : ... 用 F_XXXXX 定义的相关字段列表,用END_FIELD表示结束;当handle后即为END_FIELD,则清空位图重新设置位图 */ int SetCol(TRUSERID *handle,...) { va_list ap; int arg; ST_PACKHEAD head; memset(&head,0,sizeof(head)); va_start(ap, handle); /* ****** Updated by CHENYH at 2005-1-25 14:27:25 ****** while ((arg = va_arg(ap, int)) != 0) */ while ((arg=va_arg(ap,int))>=0) ////////////////////////////////////////////////////////////////////////// { SetParmBit( &head, arg); } va_end(ap); return(g_SvrLink.SetCol(handle,head.ParmBits)); }
// 函数名: CSvrLink::Err_Deal // 编程 : 陈永华 2004-2-22 16:36:05 // 描述 : 清除原来准备的应答信息,并且在运行时跟踪文件中记录(错误)信息(为了与集中交易兼容) // 返回 : int SendMsg返回信息 // 参数 : char *emsg // 参数 : int retcode int CSvrLink::Err_Deal(char *emsg, int retcode) { /* ****** Updated by CHENYH at 2004-3-12 13:49:50 ****** unsigned char pb[PARMBYTES]; int rtn; memset(pb,0,sizeof(pb)); rtn = SetCol(NULL,pb); */ head.recCount = 0; memset(head.ParmBits,0,sizeof(head.ParmBits)); SetParmBit(&head,F_VSMESS); iLastRetCode = retcode; strcpy(eMsg,emsg); ST_PACK pack; strcpy(pack.vsmess,emsg); return(PutRow(&ruserid,&pack,retcode,emsg)); /* ****** Updated by CHENYH at 2004-3-12 13:46:02 ****** rtn = AnswerData(&user,retcode,emsg,0); // 不容许有后续数据返回了,只有一条结果记录(emsg应该是有值的) return(rtn); */ }