Plan for Implementing IRAF Y2K Changes


Bugs fixed to date:
Extensive Y2K testing and bug fixes have been performed (see list below). IRAF versions V2.11.2 and greater should be free of known Y2K problems. Versions prior to V2.11.1 do contain minor Y2K related bugs. See the IRAF Y2K Bug List for details on what has been done so far on the few IRAF Y2K bugs not related to the FITS DATE-OBS keyword.

All sites should update to V2.11.2 or to the V2.11.3 patch currently in preparation. IRAF V2.11.3 will be released during fall, 1999 for all supported IRAF platforms.

FITS related changes:
The format of the FITS DATE-OBS keyword must change to support 4-digit years. See the Precise re-definition of DATE-OBS Keyword encompassing the millennium for details. Several IRAF tasks will have to be modified to support the provisions of this agreement, including retaining backwards compatibility.

Y2K Work Inventory:
Most of the required changes will be to NOAO packages and tasks. The IRAF core system will require a few changes to VOS library routines and to some tasks in the DATAIO and IMAGES packages that handle image headers.

Aside from whatever further generic Y2K bugs we may uncover (such as the simple date formatting bug fixed in etc$cnvtime.x), most changes involve supporting the new format for the FITS DATE-OBS keyword.

Since the FITS DATE-OBS agreement requires continued support for 2-digit years (for instance, in twentieth century archival data) as well as the new 4-digit format, we have implemented a small set of date-and-time interface routines to be called from the application tasks that have been modified - as well as from any new tasks that will require access to DATE-OBS information in the future.

New IRAF interface routines

     sys$etc/dtmcnv.x
     sys$etc/gmtcnv.x
     unix$os/gmttolst.c
     unix$os/zgmtco.c
  1. A new kernel routine "zgmtco" was added to OS. This gives the correction, in seconds, from LST to GMT. (LST here means local standard time, or clock time). Since IRAF already returns the clock time in LST seconds, this allows either LST or GMT to be determined. Note LST corrects for daylight savings time, the GMT correction takes this into account as well. In practice programs can just ignore daylight savings time and let the kernel worry about it.

  2. New routines gmttolst() and lsttogmt() were added to ETC. These convert times (in seconds) to and from LST and GMT. A value of zero can be input to get the correction value.

  3. A set of four new routines dtm_encode, dtm_decode, dtm_encode_hms, and dtm_decode_hms were added to ETC. A related flag value was added to lib$time.h. "dtm" standard for date/time. These routines convert time expressed in year, month, date, and time of day to and from a string value. A flags value can be used to select the type of time string to be encoded or decoded. Currently DATE-OBS in FITS-Y2K and the old FITS formats are supported.

IRAF Y2K Remediation

Our inventory of source files with potential y2k problems includes the following files. The number at the left is the hit count for a complete text search over the Y2K warning flags: "1900", "date-obs", "century" and "year" (case and punctuation independent). A variety of other flags were tried that either appeared to not distinguish Y2K related files, or that generated too many false positives. The programmers reviewed many other files in addition to these.

The status for each file is one of:

Core IRAF System

   1 sys$etc/brktime.x                                     ok
   3 sys$etc/cnvdate.x                                    done
   3 sys$etc/cnvtime.x                                    done
   1 lib$time.h                                           done 

   1 dev$pix.imh                                           ok
   1 dev$wpix.imh                                          ok
	 (additional test data are being considered)

     doc$                                                  ok

     local$                                                ok

   1 math$slalib                                           ok

   2 pkg$dataio/export/exhdr.x                            done
   1 pkg$dataio/doc/wtextimage.hlp                         ok
   2 pkg$dataio/fits/fits_params.x                        done
   2 pkg$dataio/fits/wfits.h                              done

     pkg$images/*/doc                                     done
   1 pkg$images/imcoords/src/ttycur.key                    ok
   2 pkg$images/lib/skywcs.x                              done

   4 pkg$obsolete                                        frozen

   1 sys$gio/sgikern/font.com                              ok
   1 sys$gio/sgikern/greek.com                             ok
   1 sys$gio/ncarutil/tests/auto10t.f                      ok

   1 sys$imio/iki/fxf/fxfencode.x                         done
   2 sys$imio/iki/fxf/fxfget.x                             ok
   1 sys$imio/iki/fxf/fxfrfits.x                          done
   1 sys$imio/iki/fxf/fxfupdhdr.x                         done

   1 unix$boot/spp/rpp/ratlibf/wkday.f                     ok
   1 unix$boot/spp/rpp/ratlibr/wkday.r                     ok

NOAO Packages

   1 noao$artdata/mkexamples/archdr.dat                   done
   1 noao$artdata/mkexamples/objhdr.dat                   done
   1 noao$artdata/stdheader.dat                           done

   1 noao$astutil/t_astcalc.x                             done
   3 noao$astutil/astcalc.par                              ok
   3 noao$astutil/doc/astcalc.hlp                         done
   1 noao$astutil/t_asthedit.x                            done
   2 noao$astutil/asthedit.par                             ok
   2 noao$astutil/doc/asthedit.hlp                        done
   1 noao$astutil/t_asttimes.x                             ok
   1 noao$astutil/asttimes.par                             ok
   3 noao$astutil/doc/asttimes.hlp                         ok
   1 noao$astutil/t_rvcorrect.x                           done (see rv)
   2 noao$astutil/rvcorrect.par                            ok
   4 noao$astutil/doc/rvcorrect.hlp                       done
   1 noao$astutil/t_setairmass.x                          done
   1 noao$astutil/setairmass.par                           ok
   1 noao$astutil/doc/setairmass.hlp                      done
   1 noao$astutil/t_setjd.x                               done
   2 noao$astutil/setjd.par                                ok
   3 noao$astutil/doc/setjd.hlp                           done

   1 noao$astutil/astfunc.x                               done
   1 noao$astutil/galactic.x                               ok
   1 noao$astutil/galactic.par                             ok
   1 noao$astutil/keywpars.par                             ok
   2 noao$astutil/doc/keywpars.hlp                        done
   1 noao$astutil/precess.x                                ok
   1 noao$astutil/precess.par                              ok

   1 noao$astutil/asttools/README                         done
   1 noao$astutil/asttools/asthjd.x                        ok
   2 noao$astutil/asttools/asttimes.x                      ok
   1 noao$astutil/asttools/astvbary.x                      ok
   2 noao$astutil/asttools/astvorbit.x                     ok
   2 noao$astutil/asttools/astvsun.x                       ok
   2 noao$astutil/asttools/precessmgb.x                    ok

   3 noao$digiphot/apphot/aputil/apdate.x                 done
   3 noao$digiphot/daophot/daolib/dpdate.x                done
   1 noao$digiphot/daophot/doc/userdocs/daophot.usr.tex    ok
   1 noao$digiphot/daophot/doc/userdocs/daoref.ms          ok
   1 noao$digiphot/photcal/catalogs/nlandolt.dat           ok

   1 noao$imred/argus/demos/header.dat                     ok
   1 noao$imred/ccdred/doc/ccdgroups.hlp                   ok
   1 noao$imred/ccdred/doc/ccdinst.hlp                     ok
   1 noao$imred/ccdred/src/ccdinst3.key                    ok
   1 noao$imred/ccdred/src/t_ccdgroups.x                  done
   1 noao$imred/ccdred/src/t_ccdinst.x                     ok
   1 noao$imred/ctioslit/demos/demoarc1.dat                ok
   1 noao$imred/ctioslit/demos/demoarc2.dat                ok
   1 noao$imred/ctioslit/demos/demoobj1.dat                ok
   1 noao$imred/ctioslit/demos/demostd1.dat                ok
   1 noao$imred/echelle/demos/demoarc.dat                  ok
   1 noao$imred/echelle/demos/demoobj.dat                  ok
   1 noao$imred/echelle/demos/demostd.dat                  ok
   1 noao$imred/echelle/doc/doecslit.hlp                   ok
   1 noao$imred/echelle/doc/doecslit.ms                    ok
   1 noao$imred/hydra/demos/header.dat                     ok
   1 noao$imred/kpnocoude/demos/demoarc1.dat	           ok
   1 noao$imred/kpnocoude/demos/demoarc2.dat               ok
   1 noao$imred/kpnocoude/demos/demoobj1.dat               ok
   1 noao$imred/kpnocoude/demos/demostd1.dat               ok
   1 noao$imred/kpnoslit/demos/demoarc1.dat               done
   1 noao$imred/kpnoslit/demos/demoarc2.dat               done
   1 noao$imred/kpnoslit/demos/demoflat.dat               done
   1 noao$imred/kpnoslit/demos/demoobj1.dat               done
   1 noao$imred/kpnoslit/demos/demostd1.dat               done
   1 noao$imred/specred/doc/doslit.hlp                     ok
   1 noao$imred/specred/doc/doslit.ms                      ok
   1 noao$imred/src/doecslit/sbatch.cl                     ok
   1 noao$imred/src/doecslit/sfluxcal.cl                   ok
   1 noao$imred/src/doecslit/sproc.cl                      ok
   1 noao$imred/src/dofoe/batch.cl                         ok
   1 noao$imred/src/dofoe/proc.bak                         ok
   1 noao$imred/src/dofoe/proc.cl                          ok
   1 noao$imred/src/doslit/sbatch.cl                       ok
   1 noao$imred/src/doslit/sfluxcal.cl                     ok
   1 noao$imred/src/doslit/sproc.cl                        ok
   1 noao$imred/src/fibers/batch.cl                        ok
   1 noao$imred/src/fibers/proc.cl                         ok

  25 noao$imred/vtel                                     frozen
          (obsolete version of NSO's external package)

   1 noao$lib/onedstds/ctio/nd1m.125mag.dat                ok

  11 noao$mtlocal                                        frozen
          (internal to NOAO)

   1 noao$onedspec/doc/refspectra.hlp                      ok
   1 noao$onedspec/doc/sys/Onedspec.hlp                    ok

   1 noao$rv/doc/fxcor.hlp                                done
   1 noao$rv/doc/rvpackage.spc                             ok
   2 noao$rv/doc/keywpars.hlp                             done
   1 noao$rv/keywpars.par                                  ok
   1 noao$rv/keywpars.x                                    ok
   2 noao$rv/rvflags.h                                     ok
   1 noao$rv/rvidlines/idvhelio.x                         done
   1 noao$rv/rvrvcor.x                                    done
   3 noao$rv/rvwparam.x                                   done
   1 noao$rv/t_rvcorrect.x                              removed (see astutil)

   1 noao$twodspec/longslit/demos/demoarc1.dat             ok
   1 noao$twodspec/longslit/demos/demoarc2.dat             ok
   1 noao$twodspec/longslit/demos/demoflat.dat             ok
   1 noao$twodspec/longslit/demos/demoobj.dat              ok
   1 noao$twodspec/longslit/demos/demostd.dat              ok

NOAO External Packages

     ccdacq                                               done
          (Kitt Peak update will be coordinated with v2.11.2)

     finder                                               done
     mscred                                                ok
     spectool                                             done
Note that many of these files required no changes, and that we may yet uncover other affected files. We encourage reports of any other tasks or files that may require Y2K-related modifications.

Status:
IRAF Y2K-related implementation was completed and released for selected platforms in IRAF v2.11.2. IRAF v2.11.3 is in preparation for release to all supported platforms during fall 1999. All IRAF sites and platforms will need to update to versions of IRAF later than v2.11.2 to be Y2K compliant.

An overview of the IRAF Y2K Compliance statement is also available.


IRAF Project
National Optical Astronomy Observatories
950 North Cherry Avenue
Tucson, Arizona 85719
(520) 318-8000
iraf@noao.edu

Updated: 2000-02-07