Esempio n. 1
0
int
clip_DAY(ClipMachine * ClipMachineMemory)
{
   int dd, mm, yy, ww;

   if (_clip_pardj(ClipMachineMemory, 1) == 0)
   {
      _clip_retndp(ClipMachineMemory, 0, 3, 0);
      return 0;
   }

   _clip_pardc(ClipMachineMemory, 1, &yy, &mm, &dd, &ww);
   _clip_retndp(ClipMachineMemory, dd, 3, 0);
   return 0;
}
Esempio n. 2
0
int
clip_COMPLEMENT(ClipMachine * ClipMachineMemory)
{
   int len, dec;

   long d1, d2;

   int t = _clip_parinfo(ClipMachineMemory, 1);

   switch (t)
   {
   case LOGICAL_type_of_ClipVarType:
      _clip_retl(ClipMachineMemory, _clip_parl(ClipMachineMemory, 1));
      break;
   case NUMERIC_type_of_ClipVarType:
      _clip_parp(ClipMachineMemory, 1, &len, &dec);
      _clip_retndp(ClipMachineMemory, 0.00 - _clip_parnd(ClipMachineMemory, 1), len, dec);
      break;
   case CHARACTER_type_of_ClipVarType:
      clip_CHARNOT(ClipMachineMemory);
      break;
   case DATE_type_of_ClipVarType:
      d1 = _clip_jdate(1, 1, 3000);
      d2 = _clip_pardj(ClipMachineMemory, 1);
      if (d2 == 0)
	 _clip_retdj(ClipMachineMemory, d1);
      else
	 _clip_retdj(ClipMachineMemory, d1 - d2 + _clip_jdate(7, 1, 0));
      break;
   }
   return 0;
}
Esempio n. 3
0
int
clip_FLOATVAL(ClipMachine * ClipMachineMemory)
{
   char *s = _clip_parc(ClipMachineMemory, 1);

   int len = _clip_parni(ClipMachineMemory, 2);

   int dec = _clip_parni(ClipMachineMemory, 3);

   if (!s)
   {
      _clip_retnd(ClipMachineMemory, 0);
      return 0;
   }
   if (strchr(s, 'e') || strchr(s, 'E'))
   {
      struct lconv *lc = localeconv();

      char c, *r;

      if (*lc->decimal_point == '.')
	 c = ',';
      else
	 c = '.';
      r = s;
      while ((r = strchr(r, c)))
	 *r = *lc->decimal_point;
      _clip_retndp(ClipMachineMemory, atof(s), len, dec);
      return 0;
   }
   return clip_VAL(ClipMachineMemory);
}
Esempio n. 4
0
int
clip_LASTDAYOM(ClipMachine * ClipMachineMemory)
{
   int dd, mm, yy, ww, mm1;

   struct tm *sysTime;

   long d;

   int numpar = _clip_parinfo(ClipMachineMemory, 0);

   _clip_pardc(ClipMachineMemory, 1, &yy, &mm, &dd, &ww);
   mm1 = _clip_parni(ClipMachineMemory, 1);
   if (numpar == 0 || mm1 != 0)
   {
      sysTime = _clip_sysdate();
      yy = sysTime->tm_year + 1900;
      mm = sysTime->tm_mon + 1;
      dd = sysTime->tm_mday;
      free(sysTime);
   }
   if (mm1 != 0)
      mm = mm1;
   d = _clip_jdate(1, mm + 1, yy);
   _clip_cdate(d, &dd, &mm1, &yy, &ww);
   while (mm != mm1)
   {
      d--;
      _clip_cdate(d, &dd, &mm1, &yy, &ww);
   }
   _clip_retndp(ClipMachineMemory, dd, 2, 0);
   return 0;
}
Esempio n. 5
0
int
clip_ABS(ClipMachine * mp)
{
	int len, dec;
	double d = _clip_parnd(mp, 1);

	_clip_parp(mp, 1, &len, &dec);
	_clip_retndp(mp, fabs(d), len, dec);
	return 0;
}
Esempio n. 6
0
int
clip_CEILING(ClipMachine * mp)
{
	int len, dec;
	double d = _clip_parnd(mp, 1);

	_clip_parp(mp, 1, &len, &dec);
	dec = 0;
	_clip_retndp(mp, ceil(d), len, dec);
	return 0;
}
Esempio n. 7
0
int
clip_FLOOR(ClipMachine * mp)
{
	int len, dec;
	double d = _clip_parnd(mp, 1);

	_clip_parp(mp, 1, &len, &dec);
	dec = 0;
	_clip_retndp(mp, floor(d), len, dec);
	return 0;
}
Esempio n. 8
0
int
clip_DTOR(ClipMachine * mp)
{
	int len, dec;
	double d = _clip_parnd(mp, 1);

	_clip_parp(mp, 1, &len, &dec);
	dec = mp->decimals;
	_clip_retndp(mp, M_PI * d / 180, len, dec);
	return 0;
}
Esempio n. 9
0
int
clip_COT(ClipMachine * mp)
{
	int len, dec;
	double d = _clip_parnd(mp, 1);

	_clip_parp(mp, 1, &len, &dec);
	dec = mp->decimals;
	_clip_retndp(mp, 1 / tan(d), len, dec);
	return 0;
}
Esempio n. 10
0
int
clip_RTOD(ClipMachine * mp)
{
	int len, dec;
	double d = _clip_parnd(mp, 1);

	_clip_parp(mp, 1, &len, &dec);
	dec = mp->decimals;
	_clip_retndp(mp, d * 180 / M_PI, len, dec);
	return 0;
}
Esempio n. 11
0
int
clip_TIMETOSEC(ClipMachine * ClipMachineMemory)
{
   int l, hour = 0, min = 0, sec = 0, msec = 0;

   double ret;

   char *str = _clip_parcl(ClipMachineMemory, 1, &l);

   if (str == NULL)
   {
      _clip_retndp(ClipMachineMemory, _clip_seconds(), 10, 2);
      return 0;
   }
   sscanf(str, "%02d:%02d:%02d:%02d", &hour, &min, &sec, &msec);
   ret = hour * 3600 + min * 60 + sec;
   ret = (ret * 100 + msec) / 100;
   _clip_retndp(ClipMachineMemory, ret, 10, 2);
   return 0;
}
Esempio n. 12
0
int
clip_ASIN(ClipMachine * ClipMachineMemory)
{
   int len, dec;

   double d = _clip_parnd(ClipMachineMemory, 1);

   _clip_parp(ClipMachineMemory, 1, &len, &dec);
   dec = ClipMachineMemory->decimals;
   _clip_retndp(ClipMachineMemory, asin(d), len, dec);
   return 0;
}
Esempio n. 13
0
int
clip_SQLSETLENDEC(ClipMachine * ClipMachineMemory)
{
   double d = _clip_parnd(ClipMachineMemory, 1);

   int len = _clip_parni(ClipMachineMemory, 2);

   int dec = _clip_parni(ClipMachineMemory, 3);

   _clip_retndp(ClipMachineMemory, d, len, dec);
   return 0;
}
Esempio n. 14
0
int
clip_ATAN2(ClipMachine * mp)
{
	int len1, dec1, len2, dec2;
	double d1 = _clip_parnd(mp, 1);
	double d2 = _clip_parnd(mp, 2);

	_clip_parp(mp, 1, &len1, &dec1);
	_clip_parp(mp, 2, &len2, &dec2);
	dec1 = mp->decimals;
	_clip_retndp(mp, atan2(d1, d2), len1, dec1);
	return 0;
}
Esempio n. 15
0
int
clip_FSTRTON(ClipMachine * ClipMachineMemory)
{

   char *s = _clip_parc(ClipMachineMemory, 1);

   if (s != NULL)
      _clip_retndp(ClipMachineMemory, *((float *) s), 0, ClipMachineMemory->decimals);
   else
      _clip_retni(ClipMachineMemory, 0);

   return 0;
}
Esempio n. 16
0
int
clip_INT(ClipMachine * mp)
{
	int len, dec;
	double d = _clip_parnd(mp, 1);

	_clip_parp(mp, 1, &len, &dec);
	dec = 0;
#ifdef ARCH_i386
		(*(long long*)&d)++;
#endif
	_clip_retndp(mp, d - fmod(d,1.00), len, dec);
	return 0;
}
Esempio n. 17
0
int
clip_NEXTKEY(ClipMachine * ClipMachineMemory)
{
   int eventmask = _clip_parni(ClipMachineMemory, 1);

   if (_clip_parinfo(ClipMachineMemory, 1) != NUMERIC_type_of_ClipVarType)
      eventmask = ClipMachineMemory->eventmask;

   _clip_fullscreen(ClipMachineMemory);
   if (*ClipMachineMemory->kbdptr != ClipMachineMemory->kbdbuf)
      _clip_retndp(ClipMachineMemory, (*ClipMachineMemory->kbdptr)[-1], 10, 0);
   else
   {
      long key;

      int ckey, l;

      key = getWait_Key(ClipMachineMemory->screen->base, 0);
      if (key)
      {
	 ckey = key2clip(key, eventmask);
	 if ((l = *ClipMachineMemory->kbdptr - ClipMachineMemory->kbdbuf) >= ClipMachineMemory->typeahead)
	 {
	    ClipMachineMemory->typeahead *= 2;
	    ClipMachineMemory->kbdbuf = (int *) realloc(ClipMachineMemory->kbdbuf, sizeof(int) * ClipMachineMemory->typeahead);

	    *ClipMachineMemory->kbdptr = ClipMachineMemory->kbdbuf + l;
	 }
	 *(*ClipMachineMemory->kbdptr)++ = ckey;

	 _clip_retndp(ClipMachineMemory, ckey, 10, 0);
      }
      else
	 _clip_retndp(ClipMachineMemory, 0, 10, 0);
   }
   return 0;
}
Esempio n. 18
0
int
clip_ATAN2(ClipMachine * ClipMachineMemory)
{
   int len1, dec1, len2, dec2;

   double d1 = _clip_parnd(ClipMachineMemory, 1);

   double d2 = _clip_parnd(ClipMachineMemory, 2);

   _clip_parp(ClipMachineMemory, 1, &len1, &dec1);
   _clip_parp(ClipMachineMemory, 2, &len2, &dec2);
   dec1 = ClipMachineMemory->decimals;
   _clip_retndp(ClipMachineMemory, atan2(d1, d2), len1, dec1);
   return 0;
}
Esempio n. 19
0
int clip_PG_IN_DOUBLE(ClipMachine* mp){
	PG_ROWSET* rowset = (PG_ROWSET*)_clip_fetch_c_item(
		mp,_clip_parni(mp,1),_C_ITEM_TYPE_SQL);
	int dec = _clip_parni(mp,3);
	char* str;
	int len;

	if(!rowset){
		_clip_trap_err(mp,0,0,0,subsys,ER_NOROWSET,er_norowset);
		return 1;
	}
	if(rowset->binary){
		str = _clip_parcl(mp,2,&len);
		if(str){
			_clip_retndp(mp,*((double*)str),0,dec);
		}
	} else {
		str = _clip_parc(mp,2);
		if(str){
			_clip_retndp(mp,_clip_strtod(str,&len),0,dec);
		}
	}
	return 0;
}
Esempio n. 20
0
int
clip_FV(ClipMachine * mp)
{
	int len, dec, i;
	double ret;
	double sum = _clip_parnd(mp, 1);
	double prec = 1.00 + _clip_parnd(mp, 2);
	int per = _clip_parni(mp, 3);

	_clip_parp(mp, 1, &len, &dec);
	dec = mp->decimals;
	for (ret = sum, i = 0; i < per; i++)
		ret *= prec;
	_clip_retndp(mp, ret, len, dec);
	return 0;
}
Esempio n. 21
0
int
clip_SQRT(ClipMachine * mp)
{
	int len, dec;
	double d = _clip_parnd(mp, 1);

	_clip_parp(mp, 1, &len, &dec);
	if (mp->flags & FIXED_FLAG)
		dec = mp->decimals;
	else
		dec *= 2;
	if (dec <= 0)
		dec = mp->decimals;
	_clip_retndp(mp, sqrt(d), len, dec);
	return 0;
}
Esempio n. 22
0
int
clip_FACT(ClipMachine * mp)
{
	double ret = 1;
	int i;
	int num = _clip_parni(mp, 1);

	if (num > 21)
	{
		_clip_retni(mp, -1);
		return 0;
	}
	for (i = 1; i <= num; i++)
		ret *= i;
	_clip_retndp(mp, ret, num, 0);
	return 0;
}
Esempio n. 23
0
int
clip_MOD(ClipMachine * mp)
{
	int len, dec;
	double d = _clip_parnd(mp, 1);
	double d2 = _clip_parnd(mp, 2);

	_clip_parp(mp, 1, &len, &dec);
	if (mp->flags & FIXED_FLAG)
		dec = mp->decimals;
	else
		dec *= 2;
	if (dec <= 0)
		dec = mp->decimals;
	_clip_retndp(mp, fmod(d, d2), len, dec);
	return 0;
}
Esempio n. 24
0
int
clip_MOD(ClipMachine * ClipMachineMemory)
{
   int len, dec;

   double d = _clip_parnd(ClipMachineMemory, 1);

   double d2 = _clip_parnd(ClipMachineMemory, 2);

   _clip_parp(ClipMachineMemory, 1, &len, &dec);
   if (ClipMachineMemory->flags & FIXED_FLAG)
      dec = ClipMachineMemory->decimals;
   else
      dec *= 2;
   if (dec <= 0)
      dec = ClipMachineMemory->decimals;
   _clip_retndp(ClipMachineMemory, fmod(d, d2), len, dec);
   return 0;
}
Esempio n. 25
0
int clip_PG_IN_INT4(ClipMachine* mp){
	PG_ROWSET* rowset = (PG_ROWSET*)_clip_fetch_c_item(
		mp,_clip_parni(mp,1),_C_ITEM_TYPE_SQL);
	char* str;
	int len;

	if(!rowset){
		_clip_trap_err(mp,0,0,0,subsys,ER_NOROWSET,er_norowset);
		return 1;
	}
	if(rowset->binary){
		str = _clip_parcl(mp,2,&len);
		if(str){
			_clip_retni(mp,*((int*)str));
		}
	} else {
		str = _clip_parc(mp,2);
		if(str){
			_clip_retndp(mp,(double)atoi(str),strlen(str),0);
		}
	}
	return 0;
}
Esempio n. 26
0
int
clip_LASTKEY(ClipMachine * ClipMachineMemory)
{
   _clip_retndp(ClipMachineMemory, ClipMachineMemory->lastkey, 10, 0);
   return 0;
}
Esempio n. 27
0
int
clip_PI(ClipMachine * mp)
{
	_clip_retndp(mp, M_PI, 21, 19);
	return 0;
}
Esempio n. 28
0
int
clip_ROUND(ClipMachine * mp)
{
#if 1
	int len, dec;
	double d = _clip_parnd(mp, 1);
	ClipVar *vp=_clip_par(mp,1);
	int de = _clip_parni(mp, 2);

#ifdef ARCH_i386
	(*(long long*)&d)++;
#endif

	_clip_parp(mp, 1, &len, &dec);
	dec = de;
	if (dec <= 0)
		dec = 0;
	if ( vp->t.memo )
	{
		char *tmp=rational_toString(vp->r.r,10,dec,0);
		_clip_retnr(mp,rational_fromString(tmp),len,dec);
		free(tmp);
		return 0;
	}
	if( d == 0.0 )
	{
		_clip_retndp(mp, d, len, de);
		return 0;
	}
	if( de == 0 )
	{
		if( d < 0.0 )
			d = ceil( d - 0.5 );
		else
			d = floor( d + 0.5 );
		_clip_retndp(mp, d, len, dec);
		return 0;
	}
	if( de < 0 )
	{
		double tmp = pow( 10, -de );
		if( d < 0.0 )
			d = ceil( ( d / tmp ) - 0.5 );
		else
			d = floor( ( d / tmp ) + 0.5 );
		d *= tmp;
	}
	else
	{
		double tmp = pow( 10, de );
		if( d < 0.0 )
			d = ceil( ( d * tmp ) - 0.5 );
		else
			d = floor( ( d * tmp ) + 0.5 );
		 d /= tmp;
	 }
	_clip_retndp(mp, d, len, dec);
	 return 0;
#else
	int len, dec, len1;
	char buf[33],ch;
	double ret, d = _clip_parnd(mp, 1);
	int de = _clip_parni(mp, 2);
	_clip_parp(mp, 1, &len, &dec);

	buf[32]=0;
	if (len > 30 )
		len=30;
	_clip_dtostr(buf, len, de+1, d, 0);
	len1 = strlen(buf)-1;
	ch = buf[len1];
	if ( ch >='5' )
		buf[len1-1] ++;
	buf[len1] = 0;
	ret = _clip_strtod(buf, &dec);
	_clip_retndp(mp, ret, len, de);
	return 0;
#endif
}