CONSTRUCTOR

  params
      $num_to_fetch: number of records to retrieve in current pass
      format => undef,       # reference to a callback function that formats each row of
                             # a record
      raw => 0,              # (boolean) if true the raw record data is returned unformatted 
      start => 1,            # number of the record with which to start report
      num_to_fetch => 5,     # number of records to include in  a report
      marc_fields => $std,   # default: $std, others are $xtra or $all
      marc_xcl => undef,     # reference to hash of MARC fields to exclude from report
      marc_userdef => undef, # reference to user specified hash of MARC fields for report 	 		
      marc_subst => undef    # reference to a hash which subtitutes field names for default
			     # names	
      HTML =>0 	        # (boolean) if true use default HTML formatting, 
                        # if false format as plain text
                	# if true each row will be formatted as follows:
                        #    "<tr><td>field name<td>field data\n"     
                        # if false each row will be formatted as follows:
			#    "MARC_field_number  field_name   field_data\n"

 record row priority squence:  raw, format, HTML, plaintext

 marc_xcl:	the hash values can be in any form, as long as the keys pass
                the exists test  (if exists $marc_xcl->{ $key }), for instance:
 
                    { '020'=>"", 500=>"", 300=>undef, 520=>'annotation' }

                 the key is always three digits;
                 if the first digit is 0, then the key must be enclosed 
	         in quotation marks

 marc_userdef	this allows the user to specify which fields to include in the
                report and what names are to be used for them	

 marc_subst      enables user-defined field names, for instance, where the 
                 defualt is:
			250=>'edition', 650=>'subject'
                a hash can be specfied with substitutions:
			{ 250=>'ed.', 650=>'subj.'}
                
		
 marc fields priority sequence:  marc_userdef, marc_fields, marc_xcl, marc_subst
		This means that
                     1. marc_userdef will replace marc_fields if marc_userdef exists
		     2.	marc_xcl will be applied to the hash which results from 
			operation 1
		     3. marc_subst will be applied to the hash resulting from 1 plus 2