STSDAS v2.1 release notes

*************************


The following tasks and packages have been moved to the sobsolete package.

                            Obsolete Tasks
       +-----------------------------------------------------------+
       | V2.0 PACKAGE.task            | Replaced by        | Notes |
       +-----------------------------------------------------------+
       | analysis.fitting.convert     |                    |   1   |
       | analysis.fourier.bracewell   |                    |   1   |
       | analysis.fourier.ftplot      |                    |   1   |
       | analysis.fourier.mkfunc      |                    |   1   |
       | analysis.fourier.testfunc    |                    |   1   |
       | analysis.isophote.elapert    |                    |   1   |
       | analysis.timeseries          |                    |   1   |
       | graphics.sdisplay.dsimg      |                    |   1   |
       | graphics.sdisplay.rastoim    |                    |   1   |
       | graphics.sdisplay.scmapc     |                    |   4   |
       | graphics.sdisplay.saodump    |                    |   4   |
       | graphics.sdisplay.rashead    |                    |   1   |
       | hst_calib.foc.foccs          |                    |   1   |
       | hst_calib.foc.focgeom        |                    |   1   |
       | hst_calib.foc.focphot        |                    |   1   |
       | hst_calib.foc.focutility     |                    |   1   |
       | hst_calib.fos.fixdiodes      |                    |   2   |
       | hst_calib.fos.tarestore      |                    |   2   |
       | hst_calib.fos.modeone        |                    |   2   |
       | hst_calib.fos.y_calib        |                    |   1   |
       | hst_calib.fos.z_calib        |                    |   1   |
       | hst_calib.hsp                |                    |   1   |
       | hst_calib.synphot.grafplot   |                    |   1   |
       | playpen.newredshift          |                    |   1   |
       | playpen.registration         | IMAGES.immatch +   |   3   |
       |                              | IMAGES.imgeom      |       |
       | playpen.tchtype              | TABLES.tcopy       |       |
       | toolbox.convfile.mvrefer     |                    |   1   |
       | toolbox.convfile.networking  |                    |   1   |
       | toolbox.headers.chgkeywrd    | IMUTIL.hedit       |       |
       | toolbox.headers.imagree      | IMUTIL.hedit       |       |
       | toolbox.headers.imkeyname    | TABLES.parkey +    |       |
       |                              | SYSTEM.rename      |       |
       | toolbox.imgtools.copymask    |                    |   1   |
       | toolbox.imgtools.imverify    |                    |   1   |
       | toolbox.imgtools.step        |                    |   1   |
       | toolbox.imgtools.unstep      |                    |   1   |
       | toolbox.testdata             |                    |   1   |
       | toolbox.tools.ddiff          |                    |   1   |
       +-----------------------------------------------------------+

Notes:


1) These tasks have been deemed no longer useful or necessary.
2) These tasks have been broken for many years and consequently 
   they have been hidden from use. 
3) Tasks in immatch correctly conserve flux in the registration of the 
   images.
4) These tasks were used to send images to the CELCO film recorder.  This
   machine has since been retired, and the tasks are of limited use to
   users otherwise.

-------------------------------------------------------------------------

CHANGES to APPLICATIONS

ANALYSIS.FITTING.PRFIT:

- Fixed Y2k bug in the print format created by task 'prfit'. 

- Fixed bug that caused segmentation violation error under Linux when 
  the 'nfit1d' task was invoked with the "user" function type.

ANALYSIS.GASP:

- The directories that the Guide Star Catalog CDs are mounted on were
  changed to /data/gsc1 and /data/gsc2. GASP tasks have been changed to
  look at these new locations.
 
ANALYSIS.ISOPHOTE.ELLIPSE:

- Fixed bug that caused task to crash with floating point error when 
  processing the SMA=0 data and reading from 'inellip' table.

GRAPHICS.STPLOT:

- IGI

  The IGI Users Manual underwent a major revision with the information on
  features reorganized.  In addition, a new chapter was added to the
  manual which serves as a tutorial for first time users, complete
  with scripts and output.  All the commands and features are
  explained, with the new options available for ZSECTION, COLUMN,
  DATA, and FONTSET described fully for the first time.
    
- PLTPAR.PAR

  The default parameter file 'pltpar.par' had an extraneous (historical)
  parameter removed: errtype.  It was disabled at some unknown time in the 
  past, and served no function.  

- STFOV

  This task was revised to make sure 'siaper' uses the default value of
  sky_project when being run by 'stfov'.

HST_CALIB.CTOOLS:

- CKWFOS.PAR

  A syntax error was fixed in the 'ckwfos.par' file.

- CKWNICMOS:

  Added the new calibration switch "barscorr" to the list of available
  switches. This switch controls the new electronic bars correction step
  in the calnica task.
 
- CKWSTIS2.PAR and CKWSTIS4.PAR

  WAVECAL was removed from these two psets.  It would have been OK to
  update the wavecal file name when processing an individual observation,
  but if the CHCALPAR task was run with a wild card input name, the same
  wavecal file name could be set in multiple raw files.  It is possible
  for the same wavecal to apply to several observations, but in general
  each observation should have its own wavecal.

- POFFSETS.PAR, SPECALIGN.PAR
 
  The 'poffsets.par' and 'specalign.par' files were updated.  In 
  'poffsets.par', "usecorr=no" is the new default; in 'specalign.par', 
  "niter=0" is the new default.  The parameter files were changed, as well
  as the associated help files for these tasks, in an effort to guide 
  the user as to the best way to use the tasks, and to inform as to
  the strengths and weaknesses of the algorithms.

HST_CALIB.PAPERPROD:

- Upgrade to version 2.26 which includes the following changes:
 
  1) Fix a bug in image background calculation so it will not fail when there 
  is "bleeding" causing bias levels to be artificially high and therefore 
  background to be negative.

  2) For WFPC2 paper product, bring up the PC1 gray scale in the image display 
  so it is visually matching those in the WF chips.
 
  3) Fix the FOS polarimetry calculation to remove the dependency of NREAD
  on group number.

  4) Fix the date format to be compatible with dates after year 2000.

  5) Remove older, unused files.

HST_CALIB.NICMOS:

- BIASEQ:

  This is a new task that is designed to remove non-linear residual bias
  signals from NICMOS MultiAccum observations. It takes as input a
  partially-processed (see NICPIPE) NICMOS _ima.fits file and produces a
  corrected _ima file.

- MOSDISPLAY:

  This is a new task that can be used to simultaneously display all of the
  readouts of a NICMOS MultiAccum observation in the image display window.
  The images are mosaiced within the window.

- NICPIPE:

  This is a new task that is designed to automate the process of partially-
  processing NICMOS datasets through various subsets of the CALNICA pipeline
  task. Partial processing is required for use of the (also new) BIASEQ and
  PEDSKY tasks. NICPIPE automatically makes all necessary changes to
  calibration switch keywords and invokes CALNICA.

- NLINCORR:

  The DQPAR pset used by this task has been updated to include the new
  "grot" and "zero-read signal" DQ flags.

- PEDSKY:

  This is a new task that is designed to remove the net residual bias
  signal from NICMOS images. It is intended to be used on a partially-
  processed (see NICPIPE) _cal.fits file, which is the combined image formed
  from a MultiAccum observation. It produces a sky and "pedestal"-subtracted
  image.

- PSTACK:

  This task has been upgraded to allow the user to plot data from any of the
  five image extension types (SCI, ERR, DQ, SAMP, TIME) in a NICMOS file, and
  to optionally save the results to a text file.

- PSTATS:

  This is a new task that is similar to PSTACK, but allows for the
  computation and plotting of various statistics for image sections, rather
  than a single pixel. Like PSTACK, data from any of the five image
  extension types (SCI, ERR, DQ, SAMP, TIME) may be plotted, and may also
  be saved to a text file.

- SAMPINFO:

  This is a new task that prints information about a NICMOS MultiAccum
  observation, including exposure times for each readout ("sample").

- STATREGIONS:

  This is a new parameter set (pset) used by the PEDSKY task.

HST_CALIB.NICMOS.CALNICA:

CALNICA v3.3 includes the following changes relative v3.2.

- NOISCALC

  This step has been upgraded to estimate the amount of "shading" signal
  contained in the science image before computing the Poisson noise on the
  detected signal. The DARKFILE reference file is required to perform this.

- NLINCORR

  This step has been upgraded to allow for the use of 2nd-order correction
  schemes, but is backwards compatible with the existing 1st-order scheme.

- BARSCORR:

  This is a new calibration step that is designed to detect the presence
  of "electronic bars" in NICMOS images. It searches each readout of a
  MultiAccum exposure for the adjacent pairs of bright and dark columns or
  rows that indicated the presence of a "bar". It flags the affected pixels
  (DQ = 256) in the DQ extensions of the _ima.fits file, which then cause
  these pixels to be excluded when combining the data from all readouts in
  the subsequent CRIDCALC step.

- UNITCORR:

  This calibration step was modified to use the TIME image extension data
  to perform the count-to-countrate conversion, rather than using the value
  of the SAMPTIME keyword for each readout.

- CRIDCALC

  This step has been upgraded to allow the user to selectively reject some
  number of initial readouts from the image combination process (via the
  "samp_rej" task parameter).


HST_CALIB.NICMOS.CALNICB:

 CALNICB v2.3.1 includes the following changes relative to v2.2.

 - The DATAMIN and DATAMAX keywords are properly updated and written to the
   output _mos.fits files.

 - All routines have been upgraded to handle the use of new universal HST
   pattern keywords.

HST_CALIB.STIS:

New Tasks:

- OVAC2AIR (new task)

  This task converts the wavelengths of 1-D extracted STIS spectra from
  vacuum to air, for wavelengths longer than 2000 Angstroms.

- SDQFLAGS (new task)

  The SDQFLAGS keyword in SCI extension headers of STIS data is a bit mask
  expressed as an integer.  This specifies which data quality conditions
  are considered by the user to be "serious."  The SDQFLAGS task is intended
  to help the user find the appropriate value for this keyword by printing
  out the sum of all bit mask values corresponding to user-set parameters.

Existing Tasks:

- ODELAYTIME

  In the odelaytime task, the default value for the earth_ephem parameter was
  changed from "stsdas$data/scidata/de200" to "stsdas$data/fits/de200.fits".

- CALSTIS

  Calstis version 2.2 (8-September-1999) includes the following changes from
  version 2.0:

  For 1-D spectral extraction, the extraction algorithm is taken from the
  first row in the XTRACTAB that matches the observing configuration (for
  echelle data there is one row for each spectral order). A check has been
  added for zero aperture throughput when doing FLUXCORR. The sigma-clipping
  algorithm for the background regions was rejecting too many points, for
  low-background MAMA data; this has been fixed.


  For 2-D rectification, a bug in the interpolation routine was fixed.  This
  bug caused discontinuities in the rectified spectra.  The interpolation of
  the error array was also revised.

  Cosmic ray rejection has been modified.  Previously, if it was run more
  than once with the same input, the data quality flags that were set (in
  the input) on the first run would be propagated to the output file on the
  second run.  This has been fixed.

  The dark subtraction for NUV MAMA data has been modified.  The dark
  reference image will be scaled according to the temperature, as given by
  the OM2CAT keyword in the support (_spt.fits) file header.

  Two changes were made to the wavecal processing.  Parameters for this are
  now read from a new reference table, WCPTAB.  The wavecal task has a new
  'debugfile' parameter; if this is specified, output will be written to this
  file to aid in checking whether the shifts were determined correctly.

- DAYDARK

  Many changes were made to the DAYDARK task.  One significant change is
  that the input can be either a list of _raw files or one _crj file.
  The default value for the 'maxiter' parameter is now 40 instead of 30.

- DEFRINGE

  The 'l1' and 'l2' parameters were removed, using the cl 'list' parameter
  instead.

- ECHSCRIPT

  Removed local XSELECTOR C-bindings incorporated in the 'echscript' task
  code in order to use the "official" bindings in the CVOS library.

  Shortened all file names so the task would build properly on VMS systems. 

- MKFRINGEFLAT

  The default values for 'beg_scale', 'end_scale', 'scale_step' and
  'rmsregion' have been changed.  Some additional checking on the number
  of extensions in the input flat field is now done.  In the section for
  the quadratic fit for the slit profile, the image section was not being
  taken into account correctly, and the wrong coefficients of fit were
  being printed out.

- NORMSPFLAT

  The 'l1' and 'l2' parameters were removed, using the cl 'list' parameter
  instead, and some sections where fscan was used have been removed.

- PREPSPEC

  The 'l1' and 'l2' parameters were removed, and fscan is no longer used.
  Additional checks on the type of the input file were added (it must be
  _raw, not _crj or _sx2).  Calibration is now done by running the
  individual tasks (basic2d, ocrreject, x2d), rather than by running
  calstis.

- ODELAYTIME

  The default value for the 'earth_ephem' parameter was changed to a FITS
  table, so it is no longer necessary to convert this table from FITS to
  STSDAS format.

- WAVECAL

  Two new parameters were added to the WAVECAL task, 'debugfile' and
  'sh_closed'.  If a 'debugfile' is specified, a large amount of intermediate
  information will be written to that file to aid in determining whether the
  shifts were correctly determined, and if not, why not.
  The external CCD shutter is now closed during wavecals, so it is no longer
  necessary to subtract the science observation from the wavecal.  The
  'sh_closed' parameter gives the date (MJD) after which the external
  shutter is closed; the task compares the date of observation with the
  value of 'sh_closed' and subtracts the science observation only if the
  date is earlier than 'sh_closed'.

- X1D

  The names of many parameters in the X1D task were changed, and the
  'globalx' parameter was added.  'globalx' specifies whether the global
  value of cross correlation offset for echelle data should be used for
  all spectral orders, rather than determining the offset for each order
  individually. Parameter names were changed to make them consistent with 
  column names in the XTRACTAB (1dx) reference table. (a2center, maxsrch, 
  bk1size, bk2size, bk1offst, bk2offst, backord)

  Added algorithm that locates and avoids geocoronal Ly alpha while
  locating spectrum by cross-correlation.

  Output column name changed from MAXSEARCH to MAXSRCH.

HST_CALIB.SYNPHOT:

- FITS Support

  Changes made to the synphot library necessary to support
  using FITS tables in synphot. There were three problems. First,
  synphot always built the name of the catalog table used to look up the
  spectra with the extension ".tab". It now tries to build a catalog
  table name with either the extension ".tab" or ".fits". Second,
  synphot was recovering the name of tables from the table descriptor
  using the function tbtnam. But the table name recovered had a [1] on
  the end, which was not part of the original name. This caused some
  problems in the code. To fix the problem a new procedure was written which
  calls tbtnam but strips any bracketed section off. Third, fits files
  will have their keywords in the primary header instead of the
  extension header. A set of new functions checks to see if a table is a
  fits file, and if so, opens up the primary header and reads the
  keyword from it. The various procedures in synphot that read the table
  header have been changed to call these new functions.

- Shifted Interpolation Support

  Rewrote the code that extracts the throughput data from a
  parameterized throughput table. There are two changes to the
  code. First, the column selection code was rewritten to match the more 
  sophisticated code use by the icat() function in the synphot
  expression evaluator. Second, modified the interpolation code to
  optionally shift the throughput data to a common origin before
  interpolating. The shifting improves the modeling of ramp filters,
  where the throughput at different wavelengths chiefly differs in a
  shift of origin of the function. This improved modeling allows ramp
  filters to be sampled at more widely spaced central wavelengths,
  reducing the amount of space these files occupy. 

- Simulators

  Modified pixsize.x to add a check for the existence of the header
  keywords CTYPE1 and CTYPE2 before trying to read them. This prevents an
  error exit in case these keywords are not found.  Also set the
  default value of psfcat to scidata$synphot_psf.cat in the simcatp
  parameter file.

- Plotting Tasks

  There is code in synphot to set the minimum lower limit for log
  plots. The reason for the code is that taking the log of zero or a
  negative number causes an error, so some minimum needs to set to keep
  the plotting tasks from crashing. The choice of the lower limit was
  bad: 10e-7, the precision of single precision reals. Instead it should
  be the smallest possible positive single precision real. The new minimum
  is set to 1e-36, which is slightly conservative, but should be
  good enough for typical physical units. Since the problem was in
  shared synphot code, the problem should be fixed for all the plotting
  tasks.

- COUNTRATE

  Fixed a small bug in countrate. The array maxwave is defined by
  a data statement and subscripted by instrument. When support was
  added for acs, a new value was also added to the data statement,
  but did not increase the dimension of the array.

  Also added wfc3 to the list of instruments recognized by countrate and
  added a wavelength table and an entry for the wfc3 in wavecat.dat
  to synphot$data.

  Also changed countrate to resample all spectra. The purpose of
  resampling is to change the wavelength spacing to agree with the
  wavelength spacing of the detector. Since this is not applicable to
  non-spectral instruments and modes, resampling was previously not done
  in these cases. However, resampling on a one angstrom grid makes it
  easier to see the count rate as a function of wavelength, so
  resampling has been extended to all instruments and wavecat.dat, which
  contains the wavelength grids used in resampling has been modified to
  contain one angstrom wavelength grids for the non-spectral
  instruments. The modified files are countrate.x, bandwave.x, and
  wavecat.dat in the data directory.
  
- GRAFPATH

  The grafpath task somehow got removed from the synphot package, so it
  has been added back in.

TOOLBOX.HEADERS:

- UPREFFILE

  Upreffile has been modified to accept the output of getref. The most
  important change to upref are the changes to accept the new format of
  the output from getref and the deletion of the now superfluous task
  parameters template and addkey.
  
  The update to getref and upreffile have been designed so that the new
  upreffile can be used with the output of the new or old getref. Also,
  the old upreffile can be used with the output of the new or old
  getref. However, only the new upreffile and new getref allow using
  subsets of reference files. In all other cases, the entire file is
  used.
  
  This release addes a new column to the output of getref. The column
  is named source and contains an abbreviated name indicating the
  database table source of the keyword change. The latest version of
  upreffile can use this field to support partial updates from the delta
  file. Currently, the source column can contain three values. These
  are: obc, which is the source of the CALIBRAT keyword, okr, which is
  the source of changes to miscellaneous keywords, and ref, which is the
  source of calibration switches and reference file names.
  
  Upreffile has been updated to use the information in the source column
  to do selective updates. Upreffile will only update a header keyword
  if the value in the source column matches one of the values in the
  source parameter. The source parameter is a comma separated list of
  sources to be processed by this task. The default value of this
  parameter includes all possible values of the source field.
  
  Upreffile was also changed so that it can update header keywords in
  tables as well as in images. This change was made to support updating
  table extensions in fits files. 
  
  Formerly upreffile wrote all keywords as text. This worked for
  reference files and switches, because they are all text
  strings. However, keyword changes can also be numbers or boolean
  values. Upreffile now calls the appropriate header update procedure
  based on the file type and data type.
  
  Before applying changes in the delta file, upreffile checks the
  current keyword value in the header to see if the delete is
  necessary. The check was incorrect when the operation was delete,
  resulting in some header keywords not being deleted. The new check
  does the delete if the header keyword is found and does not if it is
  not. The code was also modified to print a more descriptive message
  when querying the user to delete a keyword. 

TOOLBOX.IMGTOOLS

- GCOMBINE

  Two problems were found and fixed in gcombine:

  1) There were two missing statements in the gc_2sort routine, that
  apparently got lost when someone copied/modified that routine based
  on the imcombine source code. This may have caused subtle problems
  when using data clipping and/or weighting.

  2) The code was failing to reproduce results obtained by imcalc when
  performing a simple error-weighted average of three test images. The
  cause was a design bug that was introduced when adding input error map
  support to gcombine. If error arrays were used to weight images with
  the "pixelwise" option, the errors were being de-associated from their
  parent images by a poorly implemented sort scheme. Thus down the way along
  the computations the weights were incorrectly computed. The fix involved
  writing a new sort routine to handle the specific case of pixelwise
  error weighting.

- IMCALC

  Imcalc was giving an error message when the number of groups in the
  output image exceeded the number in the input image. While the input
  was erroneous, the code should have done a better check on the end of
  file condition. Imcalc has been modified has been changed so that the
  calculation loop immediately terminates when an end of file condition
  is detected on any of the input or output files.
  
  Imcalc was essentially performing a no-op when the output image was
  set to a fits extension with a zero-length (constant) data array.
  Added a check on the length of the output image which prints an error
  message when the output file already exists and its dimension differ
  from those of the input image.

TOOLBOX.IMGTOOLS.MSTOOLS:

- MSARITH

  Fixed bug in numeric parsing routine that caused task to bomb when a
  numeric constant had a negative exponent (as in 1.E-1).

- MSCOPY (new task)

  The MSCOPY task copies image sets from one FITS file to another.  If
  the output file doesn't already exist, the primary header will be copied.
  When copying dummy extensions, if an image section was specified, the
  NPIX1 and NPIX2 keywords will be updated (these keywords give the size
  to which the extension should be expanded.)

--------------------------------------------------------------------------- 

SYSTEM LIBRARY CHANGES

CVOS

The most current version of the CVOS library is v3.2.2 (03-September-1999).
Several important changes, as well as code fixes and some upgrades, have
been incorporated into this version.

Major Changes
-------------
The CVOS now properly accommodates exception handling for C programs 
compiled as either host-level or native IRAF tasks.   If the task is
compiled as host-level and an exception is encountered, flow-of-control is
transferred to the ceract routine in c_iraf_priv.c where the program will
perform some clean-up activities and exit to the host.  If the task is 
compiled as a native IRAF task, the program uses the standard IRAF exception
handling mechanisms.

Upgrades
--------
- A version macro for CVOS has been created, CVOS_VERSION.  This macro 
  can be found in the c_iraf_priv.c file.
  USE: strings libcvos.a | grep "CVOS V" or
       strings my_program | grep "CVOS V"

- In c_iraf.h the macro IRAF_SZ_LINE was changed from 161 to 1023.

- New C-bindings have been created for the public SELECTOR routines.  The new 
  files in the library are: XSELECTOR.def, xselector.h, and xselector.c.

- New C-bindings have been created for a few routines from the XTOOLS 
  library.  These routines include only: decode_ranges, get_next_number, 
  get_previous_number, isdirectory, and is_in_range.  The new files are: 
  XXTOOLS.def, xxtools.h, and xxtools.c.

- New C-bindings have been created for the impgs[silrd] family of routines
  from the IMIO library.  XIMIO.def, ximio.h, and ximio.c were updated.

- Updated versions of XGFLIB.def, xgflib.h, and xgflib.c files were 
  created due to the major changes made to GFLIB.

- The XTABLES.def, xtables.h, and xtables.c files were updated to accommodate
  routines, tbcdes, tbsirow, tbfpri, and tbparse.  The interface to tbrcpy was
  updated.  New values were defined for the following macros:
   macro        new value   old value
   SZ_COLNAME      79          19
   SZ_COLUNITS     79          19
   SZ_COLFMT       79           9

   The format for exponents was modified from N.NNdNN to N.NNeNN as "d" 
   is unknown on VMS.

- Manual modifications have been implemented in the xqpoe.c and xqpoe.h
  files.  Two new routines, c_qpio_get() and c_qpio_put(), were added which
  are wrappers around the "standard" public interfaces of c_qpio_getevents()
  c_qpio_putevents().  The new routines are to be used as the new public 
  interface and perform necessary datatype conversions.  This modification
  was implemented based upon a request and code provided by the CXC team 
  at CFA.

  Added the c_IrafString() and c_IrafPointer() functions written by CXC 
  programmers to the c_iraf_priv.c file. They are private routines.

- Modified the NOLIBC macro in irafinit.c to be NOSTRDEFS.  This macro 
  works in conjunction with a modification to the vms.h file.

- Cleaned up the directory and deleted old VMS DCL command files.

Code Fixes
----------
- The routines twodchar2iraf and iraf2twodchar located in c_iraf_priv.c
  were fixed to handle properly arrays of strings.  

- The C-binding code generator, gencbind.c, was modified to generate
  interface parameters, which represent multidimensional arrays, as 
  DATATYPE * instead of DATATYPE **, where DATATYPE is int, float, etc.
  This change does NOT apply to parameters which are arrays of strings.

- For most C functions which take no parameters and are declared in the
  fundamental CVOS system files, the syntax of the declarations and the
  definitions have been modified to make it clear the functions take no 
  parameters (ANSI) versus an unknown number of parameters (K&R).

- The function clear_cvoserr() has been moved to the CVOS public interface.
  The function prototype is now in c_iraf.h instead of c_iraf_priv.h; the
  function definition is still in c_iraf_priv.c.

------------------------

HSTIO

The most current version of HSTIO is version 2.3 (24-August-1999).
Several important changes, as well as code fixes and some upgrades, have
been incorporated into this version.

Upgrades
--------

- Incorporated new routines which allow one to acquire a single line of data 
  from an IMSET (getSingleGroupLine family of routines).

- Incorporated new routines which allow one to output a subsection of an 
  IMSET in memory to a new output FITS file where the subsection is the full 
  image in the new file  (putSectSingleGroup family of routines).

- High-level FITS keyword access routines have been implemented in keyword.c.
  The function prototypes are:

   int getKeyB (Hdr *hdr, char *keyword, Bool *value) 
   int getKeyD (Hdr *hdr, char *keyword, double *value)
   int getKeyF (Hdr *hdr, char *keyword, float *value)
   int getKeyI (Hdr *hdr, char *keyword, int *value)
   int getKeyS (Hdr *hdr, char *keyword, char *value)

   int putKeyB (Hdr *hdr, char *keyword, Bool value, char *comment) 
   int putKeyD (Hdr *hdr, char *keyword, double value, char *comment)
   int putKeyF (Hdr *hdr, char *keyword, float value, char *comment)
   int putKeyI (Hdr *hdr, char *keyword, int value, char *comment)
   int putKeyS (Hdr *hdr, char *keyword, char *value, char *comment)

The return int is a status variable (0 = OK, 1 = error).
When writing a keyword value with putKeyX() and the keyword does not already 
exist, the keyword and comment are added to the header.  For the getKeyX()
routines, when a keyword in not found in the header, no error is posted
to the error stack; however, the returned value is 1.

- A version macro for HSTIO has been created, HSTIO_VERSION.  This macro 
  can be found in the hstio.h file.
  USE: strings libhstio.a | grep "HSTIO V" or
       strings my_program | grep "HSTIO V"

- A new routine, "checkRange", has been implemented in keyword.c for 
verifying the range of keyword values acquired from FITS headers.  The 
checking is only necessary when demoting the data values to INT or FLOAT. 

- Modified "openInputImage" in hstioirf.c to allow the opening and
  reading of 1D image data.  This is necessary in order to access the 
  extension header keywords.

- Cleaned up the directory and deleted old VMS DCL command files.

- The old get/put[Float/Short]Sect routines have been retired.  All the
  "Sect" routines written to accommodate writing a section of data in
  memory out to a new file where the section is the full size of the new
  file have been renamed so that the "Sect" appears appended to the end
  of the routine names.  This is consistent with the naming style of the
  routines in HSTIO.  The only public interface routine which was modified
  was "putSectSingleGroup" -> "putSingleGroupSect".  All other routines
  are private.

- Fixes required for IRAF v2.10.4 and FITS kernel vAug96 for the pipelines
  running under OpenVMS.  These changes should be transparent to IRAF v2.11
  and the latest FITS kernel.  These changes force the overwriting of blank
  lines padding the end of the FITS headers when adding (or inserting) new
  keywords using the addTypeKw, insertTypeKw, addFitsCard, and
  insertFitsCard routines.  Incorporated a new utility routine, 
  searchBlankLine, to aid with this fix.

Code Fixes
----------
- Fixed a memory access violation which was fatal when running an executable
  compiled in debug mode with run-time checking ON (for both the HSTIO library
  and the C program).  The problem was addressed for: "allocSingleGroup",
  "allocSingleGroupLine", "allocMultiGroup", and "allocMultiNicmosGroup" 
  routines in hstio.c.

- Modified "openSingleGroupLine" and "getSingleGroup" in hstio.c to avoid 
  allocating pointers to memory space of zero length.  These routines now 
  agree with "getSingleNicmosGroup".

- Modified "putStringKw" in keyword.c to return 0 and not NULL. 

- The minimum and maximum allowed values for float and double data types
  on a VMS machine are now defined by the FLT_MIN/MAX, DBL_MIN/MAX found 
  in the host system float.h file.

- Since in the IRAF system an INT and a LONG are the same, a special 
  conditional has been imposed in numeric.c for an ALPHA running Digital 
  Unix such that maxLong = INT_MAX and minLong = INT_MIN.  This was 
  necessary as the LONG is 8 bytes (versus the INT of 4 bytes) on this 
  machine.  This is only important in rare cases when input FITS keywords 
  are at the extreme possible values.  The HSTIO mkpkg file was updated to 
  define __DU which numeric.c now checks.

- For most C functions which take no parameters and are declared in the
  fundamental HSTIO system files, the syntax of the declarations and the
  definitions have been modified to make it clear the functions take no 
  parameters (ANSI) versus an unknown number of parameters (K&R).

- Updated the updateWCS function in the hstio.h and hstio.c files to reflect
  the proper return type of VOID and not INT.

- Updated the mkpkg file to accommodate the proper linking of the DEC Run 
  Time Library file (IMAGELIB.OLB) on the VMS and OpenVMS systems.

- Fix to add or remove the NPIX1, NPIX2, and PIXVALUE keywords as appropriate
  for any member of an IMSET except SCI.  Formerly, these keywords were
  retained for the ERR and DQ extensions, even after these extensions no
  longer contained a single constant value.  The data is explicitly checked
  to determine the "state" of the data.

- Input string keyword values which contain embedded single quotes are now
  handled properly when inserted into the FITS header.  A single quote
  embedded in a string is represented as two successive single quotes in
  the FITS header.  Obtaining string keyword values with embedded single
  quotes required no modification.

- All new keywords are checked and forced to be uppercase when inserted
  into the FITS header.

- The getFloatKw routine in has been modified to access integer variables
  without error.  The getIntKw routine has been modified to access
  floating point values.  If the decimal portion of the value > 0.0, then
  an error is posted due to a loss in precision.  Otherwise, the whole
  number portion of the value is returned as an INT.