static	char	sccsid[]="%Z% %M% %I% %E% %U%";
/**********************************************************************
*                                                                     *
*      処理目的　　：  比較演算処理 	　                            *
*                                                                     *
*      関数名　　　：　int cl_if_comp_ctl( pLeaf )		              *
*                                                                     *
*      引き数      ：　(I)Leaf          * pLeaf                       *
*                                                                     *
*                                                                     *
*      戻り値　　　：　ERROR                                          *
*                      NORMAL                                         *
*                                                                     *
*      処理概要　　：　                                               *
*                                                                     *
**********************************************************************/
#include <colmn.h>

int cl_if_comp_ctl(pLeaf,proc)
Leaf    *pLeaf;
ProcCT  *proc;
{
	int  	Flag;

	if (pLeaf->cmd.prmnum > 0) {
		if ((Flag = cl_if_comper(pLeaf,proc)) < NORMAL)
			return ERROR;
	}
	else {
		ERROROUT1(FORMAT(44),"cl_if_comp_ctl");	/* %s: パラメータが必要です。 */
		Flag  = ERROR;
	}

	return Flag;
}

int cl_if_compare_sub(nparm,prmp,Obj)
int nparm;
parmList *prmp[];
int      *Obj;
{
	int rc,Ans;
	double dVal;
	char *pWork;
	tdtInfoParm InfoParm1;

	rc = cl_gx_exp_obj(nparm,prmp,Obj,&InfoParm1);
	pWork = InfoParm1.pi_data;
	if (!rc) {
		if (InfoParm1.pi_dlen == 0) rc = L_OFF;
		else if (InfoParm1.pi_attr == DEF_ZOK_BINA) {
			Ans = cl_get_data_long(&InfoParm1);
			if (Ans) rc = L_ON;
			else rc = L_OFF;
		}
		else if (InfoParm1.pi_attr == DEF_ZOK_FLOA) {
			memcpy(&dVal,pWork,sizeof(double));
			if (dVal == 0.0) rc = L_OFF;
			else rc = L_ON;
		}
		else if (InfoParm1.pi_attr == DEF_ZOK_DECI) {
			if (m_is_mpa0((MPA *)pWork)) rc = L_OFF;
			else rc = L_ON;
		}
		else {
			rc = L_ON;
		}
	}
	else if (rc == 100) rc = L_OFF;
	return rc;
}

int cl_if_comper(pLeaf,proc)
Leaf    *pLeaf;
ProcCT  *proc;
{
	return cl_if_compare_sub(pLeaf->cmd.prmnum,pLeaf->cmd.prmp,proc->Obj);
}

