Beispiel #1
0
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));
}
Beispiel #2
0
//函数名:
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);
}
Beispiel #3
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 定义的相关字段列表,用 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));
}
Beispiel #5
0
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;
}
Beispiel #6
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));
}
Beispiel #7
0
// 函数名: 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);
*/
}