diff --git a/src/bcd2.c b/src/bcd2.c index 2640c35..1c682a1 100644 --- a/src/bcd2.c +++ b/src/bcd2.c @@ -64,7 +64,7 @@ bcd2_bin(DSS_HUGE *dest, DSS_HUGE bcd) return(0); } -int +DSS_HUGE bcd2_add(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE addend) { DSS_HUGE tmp_lo, tmp_hi, carry, res; @@ -84,7 +84,7 @@ bcd2_add(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE addend) return(carry); } -int +DSS_HUGE bcd2_sub(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE subend) { DSS_HUGE tmp_lo, tmp_hi, carry, res; @@ -107,11 +107,12 @@ bcd2_sub(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE subend) return(carry); } -int +DSS_HUGE bcd2_mul(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE multiplier) { DSS_HUGE tmp_lo, tmp_hi, carry, m_lo, m_hi, m1, m2; - int udigit, ldigit, res; + int udigit, ldigit; + DSS_HUGE res; tmp_lo = *bcd_low; tmp_hi = *bcd_high; @@ -144,7 +145,7 @@ bcd2_mul(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE multiplier) return(carry); } -int +DSS_HUGE bcd2_div(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE divisor) { DSS_HUGE tmp_lo, tmp_hi, carry, d1, res, digit; diff --git a/src/bcd2.h b/src/bcd2.h index bc64f2d..8f90aff 100644 --- a/src/bcd2.h +++ b/src/bcd2.h @@ -6,9 +6,9 @@ int bin_bcd2(DSS_HUGE binary, DSS_HUGE *low_res, DSS_HUGE *high_res); int bcd2_bin(DSS_HUGE *dest, DSS_HUGE bcd); -int bcd2_add(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE addend); -int bcd2_sub(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE subend); -int bcd2_mul(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE multiplier); -int bcd2_div(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE divisor); +DSS_HUGE bcd2_add(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE addend); +DSS_HUGE bcd2_sub(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE subend); +DSS_HUGE bcd2_mul(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE multiplier); +DSS_HUGE bcd2_div(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE divisor); DSS_HUGE bcd2_mod(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE modulo); DSS_HUGE bcd2_cmp(DSS_HUGE *bcd_low, DSS_HUGE *bcd_high, DSS_HUGE compare); diff --git a/src/driver.c b/src/driver.c index ddf5454..3372a92 100644 --- a/src/driver.c +++ b/src/driver.c @@ -73,15 +73,16 @@ int prep_direct (char *); int close_direct (void); void kill_load (void); int pload (int tbl); -void gen_tbl (int tnum, long start, long count, long upd_num); -int pr_drange (int tbl, long min, long cnt, long num); +void gen_tbl (int tnum, DSS_HUGE start, DSS_HUGE count, long upd_num); +int pr_drange (int tbl, DSS_HUGE min, DSS_HUGE cnt, DSS_HUGE num); int set_files (int t, int pload); int partial (int, int); extern int optind, opterr; extern char *optarg; -long rowcnt = 0, minrow = 0, upd_num = 0; +DSS_HUGE rowcnt = 0, minrow = 0; +long upd_num = 0; double flt_scale; #if ( defined(WIN32) && !defined(_POSIX_C_SOURCE) ) char *spawn_args[25]; @@ -392,7 +393,7 @@ load_dists (void) * generate a particular table */ void -gen_tbl (int tnum, long start, long count, long upd_num) +gen_tbl (int tnum, DSS_HUGE start, DSS_HUGE count, long upd_num) { static order_t o; supplier_t supp; @@ -405,7 +406,7 @@ gen_tbl (int tnum, long start, long count, long upd_num) #endif static int completed = 0; static int init = 0; - long i; + DSS_HUGE i; int rows_per_segment=0; int rows_this_segment=-1; @@ -541,7 +542,7 @@ gen_tbl (int tnum, long start, long count, long upd_num) row_stop(tnum); if (set_seeds && (i % tdefs[tnum].base) < 2) { - printf("\nSeeds for %s at rowcount %ld\n", tdefs[tnum].comment, i); + printf("\nSeeds for %s at rowcount " HUGE_FORMAT "\n", tdefs[tnum].comment, i); dump_seeds(tnum); } } @@ -1178,13 +1179,3 @@ main (int ac, char **av) return (0); } - - - - - - - - - - diff --git a/src/dss.h b/src/dss.h index 6bda042..5b4a4d5 100644 --- a/src/dss.h +++ b/src/dss.h @@ -553,7 +553,7 @@ int dbg_print(int dt, FILE *tgt, void *data, int len, int eol); #define VRF_STR(t, d) {char *xx = d; while (*xx) tdefs[t].vtotal += *xx++;} #define VRF_INT(t,d) tdefs[t].vtotal += d #ifdef SUPPORT_64BITS -#define VRF_HUGE(t,d) tdefs[t].vtotal = *((long *)&d) + *((long *)(&d + 1)) +#define VRF_HUGE(t,d) tdefs[t].vtotal = *((DSS_HUGE *)&d) + *((DSS_HUGE *)(&d + 1)) #else #define VRF_HUGE(t,d) tdefs[t].vtotal += d[0] + d[1] #endif /* SUPPORT_64BITS */ diff --git a/src/print.c b/src/print.c index 4140660..4d80f95 100644 --- a/src/print.c +++ b/src/print.c @@ -23,7 +23,7 @@ * Function Prototypes */ FILE *print_prep PROTO((int table, int update)); -int pr_drange PROTO((int tbl, long min, long cnt, long num)); +int pr_drange PROTO((int tbl, DSS_HUGE min, DSS_HUGE cnt, DSS_HUGE num)); FILE * print_prep(int table, int update) diff --git a/src/speed_seed.c b/src/speed_seed.c index 4fb9edc..9af3112 100644 --- a/src/speed_seed.c +++ b/src/speed_seed.c @@ -23,8 +23,8 @@ extern seed_t Seed[]; /* The book says that this will work if MAXINT for the type you choose */ /* is at least 2**46 - 1, so 64 bits is more than you *really* need */ -static DSS_HUGE Multiplier = 16807; /* or whatever nonstandard */ -static DSS_HUGE Modulus = 2147483647; /* trick you use to get 64 bit int */ +static int Multiplier = 16807; /* or whatever nonstandard */ +static long Modulus = 2147483647L; /* trick you use to get 64 bit int */ /* Advances value of Seed after N applications of the random number generator with multiplier Mult and given Modulus.