/*TITLE mailing list include file */

/****keyword-flag*** "%v %f %n" */
/* "7 21-Mar-98,6:56:04 MAILX.H" */

#include <string.h>

#define DATA_FIELD_COUNT 9
#define BATCH_SIZE 100

// the result of multiplying the next two entries
// must be greater than or equal to the number of records to be processed
#define ZIP_BLOCK_COUNT 3000
#define ZIP_BLOCK_ENTRIES 1000

#define MAX_ASCII_FIELD_LENGTH 15

#define LAST_NAME_LENGTH 15
#define FIRST_NAME_LENGTH 9
#define ADDRESS1_LENGTH 15
#define ADDRESS2_LENGTH 15
#define CITY_LENGTH 12
#define STATE_LENGTH 2
#define ZIP_LENGTH 9

#define ASCII_DATE_LENGTH 10
#define ASCII_CENTS_LENGTH 10

#define BINARY_DATE_LENGTH 2
#define BINARY_DOLLARS_LENGTH 2

typedef struct
{
	char last_name[LAST_NAME_LENGTH+1];
	char first_name[FIRST_NAME_LENGTH+1];
	char address1[ADDRESS1_LENGTH+1];
	char address2[ADDRESS2_LENGTH+1];
	char city[CITY_LENGTH+1];
	char state[STATE_LENGTH+1];
	char zip[ZIP_LENGTH+1];
	int date_last_here;
	int dollars_spent;
} DataRecord;

typedef struct
{
	int min_spent;
	int max_spent;
	int min_date;
	int max_date;
} CustomerSelection;

typedef struct
{
	char zip[ZIP_LENGTH+1];
	unsigned record_number;
} ZipRecord;

void Megasort(unsigned char **PtrArray, unsigned *RecNums, int KeyLength, 
unsigned ArraySize );


