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", ®ions); 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); }
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); }
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); }
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); }