#define SERVER

  /* Current  Version Date */
#define VERSION __DATE__

  /* Utility Definitions and Typedefs */
#define TRUE 1
#define FALSE 0
#define NINT(value) (int) ((value < 0) ? value-0.5 : value+0.5)
#define ISODD(x) x%2
#define NULL_STR ""
#define MAXKEY 48                  /* max key pointer index */
#define MAXTOK 44                  /* maximum number of command tokens */
#define V1 0
#define V2 1
#define LLEN 81                    /* Line Length */
#define NUM_CHAN 16                /* Max Number of Channels */
#define Percent40 .40
#define Percent60 .60
#define Percent80 .80

  /* Different types of plotting to perform */
#define AVERAGES 0
#define PEAKS 1
#define GYROFREQUENCY 3

  /* Time Spans in seconds */
#define YEAR_DAYS 365
#define LEAP_YEAR_DAYS 366
#define YEAR_SEC 31536000L
#define LEAP_YEAR_SEC 31622400L
#define WEEK_SEC 604800L
#define DAY_SEC 86400L
#define HALF_DAY_SEC 43200L
#define HOUR_MIN 60
#define HOUR_SEC 3600
#define MIN_SEC 60

/* Global Variables */

#ifdef MAIN
   void (*pws16_begin)(void);             /* initialization routine */
   int  (*pws16_command)(void);           /* command routine */
   int  (*pws16_data)(void);              /* data read routine */
   void (*pws16_end)(void);     		  /* deallocation routine */
   void (*label)(void) = pws16_label;	  /* labels for graphics screen */
   void (*plot)(void) = pws16_plot;		  /* plot channel of data */

   int *iavg[NUM_CHAN], *ipks[NUM_CHAN];
   int Iteration;
   int LastKey=MAXKEY;
   struct cmd_struct Cmd;
   struct dat_struct Dat;
   float Zmin, Zmax;               /* min and max data values for scaling */
   int Cmin, Cmax, Cn[16];
   char Cmdline[LLEN];      /* input command "card" */
   int Defmin[] = { 0, 0, -6000, -6000, -6000, -6000, -16000, -16000 };
   int Defmax[] = { 0, 255, -2000, -2000, -2000, -2000, -8000, -8000 };
   char Cal_Path[LLEN] = NULL_STR;
   char Data_Path[2][LLEN];
   char BGI_Path[LLEN] = NULL_STR;
   boolean Shade = FALSE;
   boolean Pastel = FALSE;
   boolean Compress = FALSE;
   char Extension[4], ZExtension[4];
   int Acolor=15, Pcolor=15, Gcolor=15, Lcolor=15, Bcolor=0;
   int ColorsSet=FALSE;
   FILE *fpOut;
   char *kp[MAXKEY+1] =      /* keyword pointer array */
   {
	" invalid","INPUT",    "UNITS",  "SPACECRAFT", "YEAR",     "DAY",
	"HOUR",     "MINUTE", "SPAN",   "MIN",        "MAX",      "CMIN",
	"CMAX",     "FG",     "FGONLY", "PEAKS",      "NOPEAKS",  "COLOR",
	"SNAPSHOT", "GRAY",   "OUTPUT", "FILTER",     "FMIN",     "FMAX",
	"C1",       "C2",     "C3",     "C4",         "C5",       "C6",
	"C7",       "C8",     "C9",     "C10",        "C11",      "C12",
	"C13",      "C14",    "C15",    "C16",        "SURVEY",   "WINDOW",
	"RESET",    "HELP",   "QUIT",	"-",          "RUN",      "SHELL"
   };


#else
   extern void (*pws16_begin)(void);
   extern int  (*pws16_command)(void);
   extern int  (*pws16_data)(void);
   extern void (*pws16_end) (void);
   extern void (*label)(void);
   extern void (*plot)(void);
   extern int *iavg[NUM_CHAN], *ipks[NUM_CHAN];
   extern int Iteration;
   extern int LastKey;
   extern struct cmd_struct Cmd;
   extern struct dat_struct Dat;
   extern float Zmin, Zmax;
   extern int Cmin,Cmax,Cn[];
   extern char Cmdline[];
   extern int Defmin[];
   extern int Defmax[];
   extern char Cal_Path[];
   extern char Data_Path[][LLEN];
   extern char BGI_Path[];
   extern boolean Shade;
   extern boolean Pastel;
   extern boolean Compress;
   extern char Extension[], ZExtension[];
   extern int Acolor, Pcolor, Gcolor, Lcolor, Bcolor;
   extern int ColorsSet;
   extern FILE *fpOut;
   extern char *kp[];

#endif
