Messages defgb 2.4  6 Jun 96
  [Approximate.  I probably didn't keep this strictly up to date.  Sorry]
Many messages print diagnostic on one line and diagnosed text on next
Existence & destination of messages controlled via diagnostics optional file
  &/or compilation switches

        ID info
" No data files open"
" Lowest level file open is level %d\n   Name = %s\n",i,datafiles[i].source
" Lowest level file open is level %d  File is output of command\n   
	Command & params = %s\n",i,datafiles.source[i]
" Last record read was # %d\n",datafiles[i].nrecs
"(Count includes comments, blanks, etc; excludes addl diag info, if any)\n"
" REMOTE_HOST = %s",getenv("REMOTE_HOST")	/* if non-empty */
" REMOTE_ADDR = %s",getenv("REMOTE_ADDR")	/* if no REMOTE_HOST & non-empty 
" No remote ID info"				/* if both above empty */
" REMOTE_USER = %s",getenv("REMOTE_USER")	/* if non-empty */
" This message issued %s",ctime(&timbuf);
" This msg from method %s.  Source: %s %s\n",METHOD,INNER_SOURCE,INNER_VERSION);
		Extra ID info (if requested)
" Data file open at level %d\n   Name = %s\n",i,datafiles[i].source
" Data file open at level %d  File is output of command\n   
	Command & params = %s\n",i,datafiles.source[i]
" Indirect file %s open\n",indirect_file.source
" %s optional file open\n   Name = %s\n",files[j].descrip,files[j].sink
" No optional files open"
" %s output sink open\n   Name = %s\n",output_opts.file[j].descrip,
" No output sinks open\n"

	Error info from script
  /* If a problem occurred and the highest level data file open has its */
  /* data coming from a script, defgb attempts to copy more lines from  */
  /* the script in case they contain error information.  The first line	*/
  /* below is printed, followed by up to 5 more lines from the script.  */
  /* If there is a 6th, the "Too many diags" message occurs		*/
  /* The "5" can be controlled at compile time and/or run time.  See	*/
  /* switch and opt file documentation					*/
" More diagnostic info from command(?) follows:\n"
" *** Too many diags\n"

	Comment line processing 
"Comment buffer overflow attempting to add comment ",tmp
"Comment line containing html tag too long\n   Comment = ",comment
 ...	/* at end of comment indicates that comment was truncated to fit */
		Following 2 errors probably represent comments added by
		program rather than comments in data file
"Comment contains embedded newline char\n   Bad comment = ",comment
		I/O errs from fgets system call
"EOF/error at or before variable list"
"EOF/error reading 2nd defmet comment record"

	Fixed format data processing 
"Non-numeric input width for variable ",tabnames[ncnt]
		Format/data mismatches
"More than one datum in single fixed field\n   Field = ",tmp+impstarts[i]
"Bad record structure near end of data record ",tmp

	Free format data processing
"Too few variables in data record\n   Record = ",tmp
"Too many variables in data record\n   Extra var = ",tok

	File name/indirect file processing
		Inserted comment line
"Indirect file: ",indirect_name," {",methodname,"}"
"Could not open file of file names\n   File = ",indirect_name
"Unknown file descriptor in indirect file\n   Descriptor = ",prefix
"Illegal file descriptor prefix in indirect file\n    Prefix precedes 
	descriptor ",descrip
"Cannot supply prefix for descriptor ",descrip
"Extra parameter in indirect file record ",tmp
"0 length indirect file entry for file descriptor ",descrip
"2nd entry for optional file\n   Attempted entry = ",source
opt_name," required option missing"
opt_name," option provided and it must not be"
"Translation explicitly requested in indirect input file but no translation 
   file supplied"		/* Found "post-translation-" w/o TRANSVAR */
"Required level 0 file name/command not found in indirect file ", s[0]+1
		Trying to get source from .objects file
  /*  For next 4 errors, the reported "Bad param" is from the indirect	*/
  /*  file.  For the 2nd & 3rd errors, compare the bad number against,	*/
  /*  respectively, the number of parameters in the .objects file entry	*/
  /*  and .objects file entry # "badparam", which, if the message is	*/
  /*  accurate, should also look like ".objects_parameter_N"		*/
  /*  For the 4th error, look for 2 .objects_parameter_N strings that	*/
  /*  are identical							*/
"Requested .objects param must be positive\n   Bad param = ",param_num
"Requested .objects param beyond end of param list\n   Bad param = ",i
".objects param may not request another .objects param\n   Bad param = ",i
"Requested .objects param already processed\n   Bad param = ",i

	Variable name/attribute processing
"Unpaired or improperly paired delimiters.\n  Token = ",tok
"Attribute too long\n   Attribute = ",attr
"Duplicate variable name (after translation, if any)\n   Name = ",tok
"Too many levels.  Max set in inner"
"Zero length variable name in record ",tmp
"Variable name too long\n   Name = ",tok
"Translated variable name too long\n   Name (pre-trans) = ",tok
"No variables found after scan of level 0 list"
		I/O errs from fgets system call
"EOF/error trying to read a variable list record"

	Optional file processing. * will be the description of an opt file
"* file: ",source
"* data: contained in indirect input file"
"{*}" /* Postfixes comments from opt file in general comment stream */
"Entry separator appears in item separator list for opt file ",file->descrip
"Opt file may not be command\n   Command = ",source
"Entry appears twice in list\n   Entry = ",tok
"List overflow attempting to add entry ",this_var
"Incomplete entry in opt file\n   Variable = ",this_var	  /* Must be a=b not */
"Extra parameter in opt file record\n  Variable = ",this_var /* a or a=b=c   */
			I/O err from fopen system call
"Error opening opt file ",source
			I/O err from fgets system call
"EOF/error before opt file data records"
		variable removals
"Removal variable doesn't exist\n   Name (after trans) = ",tok
"removals file may not be command\n   Command = ",source
"Removed all variables"
				I/O err from fopen system call
"Error opening removals file ",files[REMOVALS].source
				I/O err from fgets system call
"EOF/error before removals file data records"
		Diagnostics control
"Bad internal table format"	/* Problem parsing a wjstbl ??	*/
"Invalid prefix in diag opt file keyword ",keyword
"Diag sink specified more than once.  Sink = ",keyword
"> 1 sinks to one file, but different modes spec'd\n   File = ",errout->sink
"Non-numeric input for value corresponding to keyword ",keyword
"Integer value too big or too small for keyword ",keyword
"Cannot trace diagnostic lines from diagnostics file" /* no print_diagnostic_lines 
"Error info to stdout because cannot open error sink ",errout->sink
				I/O err from fopen system call
"Cannot open diagnostic sink\n   File = ",output_opts.file[DIAG_SINK].sink);
		Messages common to several kinds of opt files
			Message will id the opt file involved
"Unprocessed * parameters.  Number skipped = ",n  /* Check spelling of keywords in 
opt file  */
"Illegal logical value ",keyword_identifier /* Not TRUE, FALSE or valid synonym */

	EXEC processing
	  /* Method not compiled with exec capability */
"Cannot do exec with this method\n   Desired command was ",*poss_comm_string
	  /* If blanks are data separators, how do we know that exec script
	     w/parameters at end-of-line isn't really a couple of data?  */
"Token & script parameter separators must differ\n   Command was 
"May not do piping or i/o redirection in command\n   Command was 
		Will copy up to 5 lines from script to stdout after error
		(# lines is configurable)
"More diagnostic info(?) from script follows:\n"
" *** Too many diags\n"		/* ... if script supplies > 5 lines	*/
		From startchild
"no pipes"
"bad fork"
"*** Error: startchild exec error in child process"

  /*  In next section, * will be an opt file name pertaining to the type */
  /*  of calculation.							 */
"Required * param missing.  Param = ",name
"Translated variable in * calculation too long\n  Truncated, post-trans 
	variable = ",varname
"Variable provided for * calculations not in dataset\n  Variable = ",var
    /*  Next message probably due to internal error		*/
"Parameter provided for * calculation too long\n  Param = ",param

    /* * in next message is latitude or longitude  */
"* work requested but * input variable name not supplied"
"Lat/lon format string too long.  String = ",ptr
"Illegal lat/lon format.  Format = ",ptr
"No code to do X to Y latlon conversion /* X & Y are legal formats, but we */
				/* forgot to write the code to do the work */
"Latitude convention not N or S.  Convention = ",ptr
"Longitude convention not E or W.  Convention = ",ptr

	Lat/lon conversions
"Output lat/lon not big enough to accept input lat/lon degrees\n   Input 
    lat/lon = ",instr
	Time_gmt calculation
"Minute null or too long\n  Minute = ",mn_ptr
"Non-numeric minute\n  Minute=",mn_ptr
"Minute > 59\n  Minute=",mn_ptr
"Hour null or too long\n  Hour = ",hr_ptr
"Non-numeric hour\n  Hour=",hr_ptr
"Hour > 23\n  Hour=",hr_ptr

	Memory allocation errors
	  All these errors occurred when a malloc failed.  Since it's
	unlikely that the system ran out of space for the sizes we are
	allocating, problem is most likely not directly related to some
	size we actually need.  Messages are to try to indicate where
	failure occurred
"Error trying to get nnn (0xXXXXXXX) bytes of memory.\n   Purpose = ",reason
Reasons:			   Subr:
" marking end of comments"	/* ioopen_ */
" saving directory string"	/* ioopen_ */
" saving level 0 source info"	/* ioopen_ */
" saving sublevel source info"  /* scanheader */
" putting filespec together"	/* scanheader */
" saving xxx source info"	/* objects_param_for_source */
	   `-> /* where xxx is an opt file type */
" building oversize comment"	/* add_to_comment_string */
" building postfix"		/* init_file_structs */
" indirect file msg"		/* get_files */
" bracketing method name"	/* have_opt_input or get_files */
" have_opt_ msg"		/* have_opt_input */
" get_var_from_keyword"		/* that subr handles opt files w/keywords */
" building trace msg"		/* open_datafile */
" building calc_latlon msg"	/* calc_latlon */
" saving output sink name"	    /* configure_output */
" building unique sink name"	    /* configure_output */
" creating null output sink name"   /* configure_output */
" building input line diag keyword" /* configure_output */
""  /* No message provided.  Probably a call to attempt to build an error msg */

"Mixed fixed/free format input variable ",tabnames[j] /* NG within a level */
"Token too long. Bad token = ",tok
	/* Next 2 messages probably mean inp record had no newline char	*/
	/* within # chars read						*/
"Input record exceeds buffer size or no newline\n   Inp record = ",file->source  
"Input record exceeds buffer size or no newline\n   Inp record begins with ",buf
  /*  Next message is due to some kind of internal logic problem  */
"Attempt to open non-data file as data file\n   File type = ",file->descrip
"File read error",file->source	/* Non-zero ferror after fread system call */

	From defw
"New variable name in file. Name = ",tok  /* Slightly modified */
"Bad file structure"
"Bad header file name ",s[0]
"Missing file ",subfilename