Example #1
0
int
setup(void)
{

    asc_date = mk_ascdate();

    read_dist(env_config(DIST_TAG, DIST_DFLT), "p_cntr", &p_cntr_set);
    read_dist(env_config(DIST_TAG, DIST_DFLT), "colors", &colors);
    read_dist(env_config(DIST_TAG, DIST_DFLT), "p_types", &p_types_set);
    read_dist(env_config(DIST_TAG, DIST_DFLT), "nations", &nations);
    read_dist(env_config(DIST_TAG, DIST_DFLT), "nations2", &nations2);
    read_dist(env_config(DIST_TAG, DIST_DFLT), "regions", &regions);
    read_dist(env_config(DIST_TAG, DIST_DFLT), "o_oprio", 
        &o_priority_set);
    read_dist(env_config(DIST_TAG, DIST_DFLT), "instruct", 
        &l_instruct_set);
    read_dist(env_config(DIST_TAG, DIST_DFLT), "smode", &l_smode_set);
    read_dist(env_config(DIST_TAG, DIST_DFLT), "category", 
        &l_category_set);
    read_dist(env_config(DIST_TAG, DIST_DFLT), "rflag", &l_rflag_set);
    read_dist(env_config(DIST_TAG, DIST_DFLT), "msegmnt", &c_mseg_set);
	read_dist(env_config(DIST_TAG, DIST_DFLT), "Q13a", &q13a);
	read_dist(env_config(DIST_TAG, DIST_DFLT), "Q13b", &q13b);

    return(0);
}
Example #2
0
long
mk_order(long index, order_t *o, long upd_num)
	{
	long      lcnt;
	long      rprice;
	long      ocnt;
	long      tmp_date;
	long      s_date;
	long      r_date;
	long      c_date;
	long      clk_num;
	long      supp_num;
	static char **asc_date = NULL;
	char tmp_str[2];
	char **mk_ascdate PROTO((void));
	int delta = 1;
	
	if (asc_date == NULL)
        asc_date = mk_ascdate();
	mk_sparse (index, o->okey,
		(upd_num == 0) ? 0 : 1 + upd_num / (10000 / refresh));
    RANDOM(o->custkey, O_CKEY_MIN, O_CKEY_MAX, O_CKEY_SD);
    while (o->custkey % CUST_MORTALITY == 0)
		{
		o->custkey += delta;
		o->custkey = MIN(o->custkey, O_CKEY_MAX);
		delta *= -1;
		}
	
	
    RANDOM(tmp_date, O_ODATE_MIN, O_ODATE_MAX, O_ODATE_SD);
    strcpy(o->odate, asc_date[tmp_date - STARTDATE]);
	
    pick_str(&o_priority_set, O_PRIO_SD, o->opriority);
	RANDOM(clk_num, 1, MAX((scale * O_CLRK_SCL), O_CLRK_SCL), O_CLRK_SD);
    sprintf(o->clerk, O_CLRK_FMT,
        O_CLRK_TAG,
        clk_num);
    o->clen = TEXT(O_CMNT_LEN, O_CMNT_SD, o->comment);
#ifdef DEBUG
	if (o->clen > O_CMNT_MAX) fprintf(stderr, "comment error: O%d\n", index);
#endif /* DEBUG */
    o->spriority = 0;
	
    o->totalprice = 0;
    o->orderstatus = 'O';
    ocnt = 0;
	
	RANDOM(o->lines, O_LCNT_MIN, O_LCNT_MAX, O_LCNT_SD);
    for (lcnt = 0; lcnt < o->lines; lcnt++)
		{
        HUGE_SET(o->okey, o->l[lcnt].okey);
        o->l[lcnt].lcnt = lcnt + 1;
	RANDOM(o->l[lcnt].quantity, L_QTY_MIN, L_QTY_MAX, L_QTY_SD);
	RANDOM(o->l[lcnt].discount, L_DCNT_MIN, L_DCNT_MAX, L_DCNT_SD);
        RANDOM(o->l[lcnt].tax, L_TAX_MIN, L_TAX_MAX, L_TAX_SD);
        pick_str(&l_instruct_set, L_SHIP_SD, o->l[lcnt].shipinstruct);
        pick_str(&l_smode_set, L_SMODE_SD, o->l[lcnt].shipmode);
        o->l[lcnt].clen = TEXT(L_CMNT_LEN, L_CMNT_SD, o->l[lcnt].comment);
        RANDOM(o->l[lcnt].partkey, L_PKEY_MIN, L_PKEY_MAX, L_PKEY_SD);
        RPRICE_BRIDGE( rprice, o->l[lcnt].partkey);
        RANDOM(supp_num, 0, 3, L_SKEY_SD);
        PART_SUPP_BRIDGE( o->l[lcnt].suppkey, o->l[lcnt].partkey, supp_num);
        o->l[lcnt].eprice = rprice * o->l[lcnt].quantity;
		
        o->totalprice +=
            ((o->l[lcnt].eprice * 
            ((long)100 - o->l[lcnt].discount)) / (long)PENNIES ) *
            ((long)100 + o->l[lcnt].tax)
            / (long)PENNIES;
		
		RANDOM(s_date, L_SDTE_MIN, L_SDTE_MAX, L_SDTE_SD);
        s_date += tmp_date;
		RANDOM(c_date, L_CDTE_MIN, L_CDTE_MAX, L_CDTE_SD);
        c_date += tmp_date;
		RANDOM(r_date, L_RDTE_MIN, L_RDTE_MAX, L_RDTE_SD);
        r_date += s_date;
		
        
        strcpy(o->l[lcnt].sdate, asc_date[s_date - STARTDATE]);
        strcpy(o->l[lcnt].cdate, asc_date[c_date - STARTDATE]);
        strcpy(o->l[lcnt].rdate, asc_date[r_date - STARTDATE]);
		
		
        if (julian(r_date) <= CURRENTDATE) 
			{
            pick_str(&l_rflag_set, L_RFLG_SD, tmp_str);
            o->l[lcnt].rflag[0] = *tmp_str;
			}
        else 
            o->l[lcnt].rflag[0] = 'N';
		
        if (julian(s_date) <= CURRENTDATE) 
			{
            ocnt++;
            o->l[lcnt].lstatus[0] = 'F';
			}
        else 
            o->l[lcnt].lstatus[0] = 'O';
		}
	
    if (ocnt > 0)
        o->orderstatus = 'P';
    if (ocnt == o->lines)
        o->orderstatus = 'F';
	
	return (0);
}
Example #3
0
long
mk_order(long index, order_t *o, long upd_num)
	{
	long      lcnt;
	long      rprice;
	long      ocnt;
	long      tmp_date;
	long      c_date;
	long      clk_num;
	//long      supp_num;
	//static char **asc_date = NULL;
	//char tmp_str[2];
	char **mk_ascdate PROTO((void));
	int delta = 1;

        static int bInit = 0;
        //        static char szFormat[100];
	
        while (!bInit) {
          TRACE( TRACE_ALWAYS, "Init mk_order ..\n");
          // sprintf(szFormat, O_CLRK_FMT, 9, HUGE_FORMAT + 1);
          bInit = 1;
        }

	if (asc_date == NULL) {
	    asc_date = mk_ascdate();
	  }

	RANDOM(tmp_date, O_ODATE_MIN, O_ODATE_MAX, O_ODATE_SD);
	strcpy(o->odate, asc_date[tmp_date - STARTDATE]);

	//mk_sparse (index, o->okey,
	//	(upd_num == 0) ? 0 : 1 + upd_num / (10000 / refresh));
	mk_sparse (index, o->okey, 0);

	RANDOM(o->custkey, O_CKEY_MIN, O_CKEY_MAX, O_CKEY_SD);
	while (o->custkey % CUST_MORTALITY == 0)
	    {
		o->custkey += delta;
		o->custkey = MIN(o->custkey, O_CKEY_MAX);
		delta *= -1;
	    }

	pick_str(&o_priority_set, O_PRIO_SD, o->opriority);
	RANDOM(clk_num, 1, MAX((scale * O_CLRK_SCL), O_CLRK_SCL), O_CLRK_SD);
	o->spriority = 0;
	
	o->totalprice = 0;
	ocnt = 0;
	
	RANDOM(o->lines, O_LCNT_MIN, O_LCNT_MAX, O_LCNT_SD);
	for (lcnt = 0; lcnt < o->lines; lcnt++)
	    {
		
		HUGE_SET(o->okey, o->lineorders[lcnt].okey);
		o->lineorders[lcnt].linenumber = lcnt + 1;
		o->lineorders[lcnt].custkey = o->custkey;
		RANDOM(o->lineorders[lcnt].partkey, L_PKEY_MIN, L_PKEY_MAX, L_PKEY_SD);
		RANDOM(o->lineorders[lcnt].suppkey, L_SKEY_MIN, L_SKEY_MAX, L_SKEY_SD);
				
		RANDOM(o->lineorders[lcnt].quantity, L_QTY_MIN, L_QTY_MAX, L_QTY_SD);
		RANDOM(o->lineorders[lcnt].discount, L_DCNT_MIN, L_DCNT_MAX, L_DCNT_SD);
		RANDOM(o->lineorders[lcnt].tax, L_TAX_MIN, L_TAX_MAX, L_TAX_SD);

		strcpy(o->lineorders[lcnt].orderdate,o->odate);

		strcpy(o->lineorders[lcnt].opriority,o->opriority);
		o->lineorders[lcnt].ship_priority = o->spriority;

		RANDOM(c_date, L_CDTE_MIN, L_CDTE_MAX, L_CDTE_SD);
		c_date += tmp_date;        
		strcpy(o->lineorders[lcnt].commit_date, asc_date[c_date - STARTDATE]);

		pick_str(&l_smode_set, L_SMODE_SD, o->lineorders[lcnt].shipmode);
		
		RPRICE_BRIDGE( rprice, o->lineorders[lcnt].partkey);
		o->lineorders[lcnt].extended_price = rprice * o->lineorders[lcnt].quantity;
		o->lineorders[lcnt].revenue = o->lineorders[lcnt].extended_price * ((long)100-o->lineorders[lcnt].discount)/(long)PENNIES;
		
		//round off problem with linux if use 0.6
		o->lineorders[lcnt].supp_cost = 6 * rprice /10;
		
		o->totalprice +=
		    ((o->lineorders[lcnt].extended_price * 
		      ((long)100 - o->lineorders[lcnt].discount)) / (long)PENNIES ) *
		    ((long)100 + o->lineorders[lcnt].tax)
		    / (long)PENNIES;
	    }
	
	for (lcnt = 0; lcnt < o->lines; lcnt++)
	    {
		o->lineorders[lcnt].order_totalprice = o->totalprice;
	    }

	/*
	for (uint i=0; i<TOTDATE; i++) {
	  printf("%d-%s\n",i,asc_date[i]);
	  free (asc_date[i]);
	}
	free(asc_date);
	asc_date=NULL;
	*/

	return (0);
	}
Example #4
0
long
mk_order(DSS_HUGE index, order_t *o, long upd_num)
{
  DSS_HUGE  lcnt;
  DSS_HUGE  rprice;
  long      ocnt;
  DSS_HUGE  tmp_date;
  DSS_HUGE  s_date;
  DSS_HUGE  r_date;
  DSS_HUGE  c_date;
  DSS_HUGE  clk_num;
  DSS_HUGE  supp_num;
  char **asc_date = NULL;
  char tmp_str[2];
  char **mk_ascdate PROTO((void));
  int delta = 1;
  static int bInit = 0;
  static char szFormat[100];
	
  while (!bInit) {
    TRACE( TRACE_ALWAYS, "Init mk_order ..\n");
    sprintf(szFormat, O_CLRK_FMT, 9, HUGE_FORMAT + 1);
    bInit = 1;
  }
	
  if (asc_date == NULL) {
    asc_date = mk_ascdate();
  }

  mk_sparse (index, &o->okey,
             (upd_num == 0) ? 0 : 1 + upd_num / (10000 / arefresh));
  if (scale >= 30000) {
    RANDOM64(o->custkey, O_CKEY_MIN, O_CKEY_MAX, O_CKEY_SD);
  }
  else {
    RANDOM(o->custkey, O_CKEY_MIN, O_CKEY_MAX, O_CKEY_SD);
  }

  while (o->custkey % CUST_MORTALITY == 0) {
    o->custkey += delta;
    o->custkey = MIN(o->custkey, O_CKEY_MAX);
    delta *= -1;
  }	
	
  RANDOM(tmp_date, O_ODATE_MIN, O_ODATE_MAX, O_ODATE_SD);
  strcpy(o->odate, asc_date[tmp_date - STARTDATE]);
	
  pick_str(&o_priority_set, O_PRIO_SD, o->opriority);
  RANDOM(clk_num, 1, MAX((scale * O_CLRK_SCL), O_CLRK_SCL), O_CLRK_SD);
  sprintf(o->clerk, szFormat, O_CLRK_TAG, clk_num);
  TEXT(O_CMNT_LEN, O_CMNT_SD, o->comment);
  o->clen = strlen(o->comment);
#ifdef DEBUG
  if (o->clen > O_CMNT_MAX) fprintf(stderr, "comment error: O%d\n", index);
#endif /* DEBUG */
  o->spriority = 0;
	
  o->totalprice = 0;
  o->orderstatus = 'O';
  ocnt = 0;
	
  RANDOM(o->lines, O_LCNT_MIN, O_LCNT_MAX, O_LCNT_SD);
  for (lcnt = 0; lcnt < o->lines; lcnt++) {
    o->l[lcnt].okey = o->okey;;
    o->l[lcnt].lcnt = lcnt + 1;
    RANDOM(o->l[lcnt].quantity, L_QTY_MIN, L_QTY_MAX, L_QTY_SD);
    RANDOM(o->l[lcnt].discount, L_DCNT_MIN, L_DCNT_MAX, L_DCNT_SD);
    RANDOM(o->l[lcnt].tax, L_TAX_MIN, L_TAX_MAX, L_TAX_SD);
    pick_str(&l_instruct_set, L_SHIP_SD, o->l[lcnt].shipinstruct);
    pick_str(&l_smode_set, L_SMODE_SD, o->l[lcnt].shipmode);
    TEXT(L_CMNT_LEN, L_CMNT_SD, o->l[lcnt].comment);
    o->l[lcnt].clen = strlen(o->l[lcnt].comment);
    if (scale >= 30000) {
      RANDOM64(o->l[lcnt].partkey, L_PKEY_MIN, L_PKEY_MAX, L_PKEY_SD);
    }
    else {
      RANDOM(o->l[lcnt].partkey, L_PKEY_MIN, L_PKEY_MAX, L_PKEY_SD);
    }

    rprice = rpb_routine(o->l[lcnt].partkey);
    RANDOM(supp_num, 0, 3, L_SKEY_SD);
    PART_SUPP_BRIDGE( o->l[lcnt].suppkey, o->l[lcnt].partkey, supp_num);
    o->l[lcnt].eprice = rprice * o->l[lcnt].quantity;
    
    o->totalprice +=
      ((o->l[lcnt].eprice * 
        ((long)100 - o->l[lcnt].discount)) / (long)PENNIES ) *
      ((long)100 + o->l[lcnt].tax)
      / (long)PENNIES;
		
    RANDOM(s_date, L_SDTE_MIN, L_SDTE_MAX, L_SDTE_SD);
    s_date += tmp_date;
    RANDOM(c_date, L_CDTE_MIN, L_CDTE_MAX, L_CDTE_SD);
    c_date += tmp_date;
    RANDOM(r_date, L_RDTE_MIN, L_RDTE_MAX, L_RDTE_SD);
    r_date += s_date;
		
    strcpy(o->l[lcnt].sdate, asc_date[s_date - STARTDATE]);
    strcpy(o->l[lcnt].cdate, asc_date[c_date - STARTDATE]);
    strcpy(o->l[lcnt].rdate, asc_date[r_date - STARTDATE]);
    
		
    if (julian(r_date) <= CURRENTDATE)  {
        pick_str(&l_rflag_set, L_RFLG_SD, tmp_str);
        //o->l[lcnt].rflag[0] = *tmp_str;
        o->l[lcnt].rflag = tmp_str[0];
    }
    else {
        //o->l[lcnt].rflag[0] = 'N';
        o->l[lcnt].rflag = 'N';
    }
		
    if (julian(s_date) <= CURRENTDATE)  {
        ocnt++;
        //o->l[lcnt].lstatus[0] = 'F';
        o->l[lcnt].lstatus = 'F';
    }
    else {
        //o->l[lcnt].lstatus[0] = 'O';
        o->l[lcnt].lstatus = 'O';
    }
  }
	
  if (ocnt > 0) {
    o->orderstatus = 'P';
  }

  if (ocnt == o->lines) {
    o->orderstatus = 'F';
  }

  
  for (uint i=0; i<TOTDATE; i++) {
      free (asc_date[i]);
  }
  free(asc_date);
	
  return (0);
}